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

<channel>
	<title>Global Nerdy &#187; JavaScript</title>
	<atom:link href="http://www.globalnerdy.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.globalnerdy.com</link>
	<description>Tech Evangelist Joey deVilla on Shopify, startups, software development, tech news and other nerdy stuff</description>
	<lastBuildDate>Wed, 08 Feb 2012 21:54:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>WAT? A Funny Look at Ruby and JavaScript Oddities</title>
		<link>http://www.globalnerdy.com/2012/01/28/wat-a-funny-look-at-ruby-and-javascript-oddities/</link>
		<comments>http://www.globalnerdy.com/2012/01/28/wat-a-funny-look-at-ruby-and-javascript-oddities/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 19:48:29 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[WTF]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/?p=9574</guid>
		<description><![CDATA[The Urban Dictionary definition of &#34;wat&#34; is &#34;the only proper response to something that makes absolutely no sense&#34;. The concept of wat is covered a little more completely on its page in Know Your Meme. &#34;Wat&#34; is also the title of a funny demo of Ruby and JavaScript oddities presented by Gary Bernhardt at CodeMash [...]]]></description>
			<content:encoded><![CDATA[<p></p><p style="text-align: center"><a href="https://www.destroyallsoftware.com/talks/wat"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="Wat" border="0" alt="WAT: A donkey in an orange raincoat, standing on the deck of ship holding a tabby cat" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2012/01/wat.jpg" width="500" height="356" /></a></p>
<p>The <a href="http://www.urbandictionary.com/define.php?term=wat">Urban Dictionary definition of &quot;wat&quot;</a> is &quot;the only proper response to something that makes absolutely no sense&quot;. The concept of wat is covered a little more completely on <a href="http://knowyourmeme.com/memes/wat">its page in Know Your Meme</a>.</p>
<p style="text-align: center"><a href="https://www.destroyallsoftware.com/talks/wat"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="Darth Wat" border="0" alt="Darth Vader standing in the ocean, pouring water from a Brita pitcher into a plastic jug" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2012/01/darth-wat.jpg" width="400" height="421" /></a></p>
<p>&quot;Wat&quot; is also the title of a funny demo of Ruby and JavaScript oddities presented by <a href="https://twitter.com/#!/garybernhardt">Gary Bernhardt</a> at <a href="http://codemash.org/">CodeMash</a> 2012, a rather unlikely tech conference &#8212; it takes place in <a href="http://en.wikipedia.org/wiki/Sandusky,_Ohio">Sandusky, Ohio</a>, in Ohio&#8217;s largest indoor waterpark. (If you just said &quot;wat&quot; right now, you&#8217;ve used the word correctly.)</p>
<p>In the video, you see this classic wat bit about undefined variables and assignment in Ruby:</p>
<p style="text-align: center"><a href="https://www.destroyallsoftware.com/talks/wat"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="Ruby Wat" border="0" alt="Screenshot of an irb session full of wat" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2012/01/ruby-wat.jpg" width="600" height="399" /></a></p>
<p>You&#8217;ll also marvel at the way JavaScript treats (array + array) vs. (array + object) vs. (object + array) vs. (object + object):</p>
<p style="text-align: center"><a href="https://www.destroyallsoftware.com/talks/wat"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="JavaScript Wat" border="0" alt="Screenshot of a jsc session full of wat" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2012/01/javascript-wat.jpg" width="600" height="258" /></a></p>
<p><a href="https://www.destroyallsoftware.com/talks/wat">Watch the video</a>, and wait for that final slide, which is pure, hilarious wat!</p>
<p class="alert"><a href="http://www.shopify.com/technology/5370262-wat-a-funny-look-at-ruby-and-javascript-oddities">This article also appears in the Shopify Technology Blog.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2012/01/28/wat-a-funny-look-at-ruby-and-javascript-oddities/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The jQuery Online Conference: Monday, July 12th &#8211; Everywhere!</title>
		<link>http://www.globalnerdy.com/2010/07/08/the-jquery-online-conference-monday-july-12th-everywhere/</link>
		<comments>http://www.globalnerdy.com/2010/07/08/the-jquery-online-conference-monday-july-12th-everywhere/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 15:42:22 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Meetups]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[online]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2010/07/08/the-jquery-online-conference-monday-july-12th-everywhere/</guid>
		<description><![CDATA[Are you a web developer and want to sharpen your jQuery skills? Would you like to attend a conference featuring some of the brightest lights in jQuery programming? Are you too short on time and travel expenses to hit such a conference? For a mere US$150 and no travel at all, you can attend the [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://carsonified.com/online-conferences/jquery/"><img style="border-right-width: 0px; margin: 0px auto; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="JQuery Online Conference" border="0" alt="ThinkVitamin presents...The jQuery Online Conference" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2010/07/thejqueryonlineconference.gif" width="600" height="106" /></a></p>
<p><strong>Are you a web developer and want to sharpen your jQuery skills?</strong> Would you like to attend a conference featuring some of the brightest lights in jQuery programming? Are you too short on time and travel expenses to hit such a conference?</p>
<p><strong><a href="http://carsonified.com/online-conferences/jquery/">For a mere US$150 and no travel at all, you can attend the jQuery Online Conference.</a></strong> It’s a live, over-the-‘net conference taking place on Monday, July 12th starting at 12:00 noon EDT / 9:00 a.m. Pacific and featuring these four sessions:</p>
<ul>
<li><strong>Beyond String Concatenation. Using jQuery Templating to Cleanly Display Your Data</strong>       <br /><em><strong><a href="http://blog.reybango.com/">Rey Bango</a></strong> (Client-Web Community Program Manager for Microsoft and Head of Evangelism for the jQuery JavaScript Project)</em>       <br />In this presentation, Rey will show you a new way to produce easily maintainable dynamic pages via pre-built JavaScript templates and the Microsoft jQuery templating plugin. </li>
<li><strong>Testing Your Mobile Web Apps</strong>       <br /><em><strong><a href="http://ejohn.org/">John Resig</a></strong> (JavaScript tool developer for Mozilla and creator of jQuery)         <br /></em>This talk will be a comprehensive look at what you need to know to properly test your web applications on mobile devices, based upon the work that&#8217;s been done by the jQuery team. We&#8217;ll look at the different mobile phones that exist, what browsers they run, and what you can do to support them. Additionally we&#8217;ll examine some of the testing tools that can be used to make the whole process much easier. </li>
<li><strong>Taking jQuery Effects to the Next Level</strong>       <br /><em><strong><a href="http://www.learningjquery.com/">Karl Swedberg</a></strong> (Web developer at Fusionary Media, member of the jQuery Team, author of jQuery 1.3 and 1.4 Reference Guides and maintainer of the jQuery API site)</em>       <br />One of the first things web developers learn to do with jQuery is to show and hide elements on a page and then add some flair by sliding those elements up and down or fading them in and out. Too often, though, we stop there, missing out on the incredible range and flexibility of jQuery&#8217;s core effects. In this talk, we&#8217;ll investigate both standard and custom animations and how they can be used to create useful and fun effects. We&#8217;ll also build a couple effects plugins, explore parts of the effects API that are often overlooked, and learn how to avoid common problems when attaching these effects to certain events. </li>
<li><strong>jQuery Pluginization</strong>       <br /><em><strong><a href="http://benalman.com/">Ben Alman</a></strong> (Developer at Boston.com, contributor to jQuery and Modernizr)</em>       <br />In this live-coding session, Ben explains how, with just a little thought and effort around generalization, parameterization and organization, you can convert your &quot;just get the job done&quot; jQuery code into a legitimate, reusable, modular jQuery plugin. </li>
</ul>
<p><strong>Your conference attendance fee not only lets you watch the live event and ask questions of the presenters, it also lets you watch the recordings of the events any time afterwards.</strong> So if you can’t catch the live event (perhaps you’re busy at work, or it’s 3:00 a.m. in your time zone), you can still watch the presentations. This also lets you watch the live event to get the general idea, and then watch it again for note-taking or hands-on workshopping.</p>
<ul>
<li><a href="http://carsonified.com/online-conferences/jquery/">For more information about the conference, visit the jQuery Online Conference site.</a> </li>
<li><a href="http://carsonified.com/online-conferences/jquery/booking.php">To register for the conference, visit the jQuery Online Conference registration page.</a> (Yes, there are discount rates for groups and students.) </li>
</ul>
<p class="alert"><a href="http://blogs.msdn.com/b/cdndevs/archive/2010/07/08/the_2D00_jquery_2D00_online_2D00_conference_2D00_monday_2D00_july_2D00_12th_2D00_everywhere.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2010/07/08/the-jquery-online-conference-monday-july-12th-everywhere/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Internet Explorer 9 Videos on Channel 9</title>
		<link>http://www.globalnerdy.com/2010/06/27/internet-explorer-9-videos-on-channel-9/</link>
		<comments>http://www.globalnerdy.com/2010/06/27/internet-explorer-9-videos-on-channel-9/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 18:54:54 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[IE9]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2010/06/27/internet-explorer-9-videos-on-channel-9/</guid>
		<description><![CDATA[By now, you’ve probably seen my article covering the new, faster, even more standards-compliant Platform Preview 3 of Internet Explorer 9. From hardware acceleration to a speed-boosted JavaScript engine with support for new ECMAScript 5 language features to support for SVG, &#60;audio&#62;, &#60;video&#62; and &#60;canvas&#62; tags, IE9 is shaping up to be a great browser [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><strong><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="nine on 9" border="0" alt="nine on 9" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2010/06/nineon9.jpg" width="165" height="201" />By now, you’ve probably seen <a href="http://www.globalnerdy.com/2010/06/23/internet-explorer-9-kicking-ass-and-acid3-with-platform-preview-3/">my article covering the new, faster, even more standards-compliant Platform Preview 3 of Internet Explorer 9</a>.</strong> From hardware acceleration to a speed-boosted JavaScript engine with support for new ECMAScript 5 language features to support for SVG, <code>&lt;audio&gt;</code>, <code>&lt;video&gt;</code> and <code>&lt;canvas&gt;</code> tags, IE9 is shaping up to be a great browser for an open web.</p>
<p><strong>Before there were Microsoft blogs (such as <em><a href="http://blogs.msdn.com/b/cdndevs">Canadian Developer Connection</a></em>), there was <a href="http://channel9.msdn.com/">Channel 9</a>,</strong> Microsoft’s community site run by Microsoft employees. Like Microsoft blogs, Channel 9 gives you unfiltered access to the people building stuff at The Empire, all outside the control of the marketing and PR departments. Channel 9 features a lot of videos – there are times when they post several videos in a day – featuring developer news and training, training kits and courses, discussion forums and wikis for various Microsoft tools and technologies. If you’re a .NET developer or just curious about what’s going on the in the .NET world, you should check out Channel 9 and see what’s happening.</p>
<p><strong>Channel 9 posted a number of videos covering the new features in the third Platform Preview of Internet Explorer 9.</strong> I’ve gathered them all into this blog article – enjoy!</p>
<h3>A Look at the New IE9 Demos</h3>
<p align="center"><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="512" height="384"><param name="source" value="http://channel9.msdn.com/App_Themes/default/VideoPlayer10_01_18.xap" /><param name="initParams" value="deferredLoad=true,duration=0,m=http://ecn.channel9.msdn.com/o9/ch9/0/7/9/6/5/5/IE95a_ch9.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://ecn.channel9.msdn.com/o9/ch9/0/7/9/6/5/5/IE95a_512_ch9.png, postid=556970" /><param name="background" value="#00FFFFFF" /><a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"> <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /> </a> </object></p>
<p class="note">Can’t see the video? You can <a href="http://www.silverlight.net/getstarted/">download and install Silverlight</a> or download the video in <a href="http://ecn.channel9.msdn.com/o9/ch9/0/7/9/6/5/5/IE95a_ch9.mp4">MP4</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/0/7/9/6/5/5/IE95a_ch9.mp3">MP3</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/0/7/9/6/5/5/IE95a_ch9.wma">WMA</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/0/7/9/6/5/5/IE95a_ch9.wmv">WMV</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/0/7/9/6/5/5/IE95a_2MB_ch9.wmv">WMV (High)</a> or <a href="http://ecn.channel9.msdn.com/o9/ch9/0/7/9/6/5/5/IE95a_Zune_ch9.wmv">Zune</a> formats.</p>
<p>This video shows some of the sample apps living on the <strong><a href="http://ie.microsoft.com/testdrive/">IE Test Drive</a></strong> site in action. It covers the following demos:</p>
<ul>
<li><a href="http://ie.microsoft.com/testdrive/Graphics/VideoPanorama/Default.html">IMDb Video Panorama</a> </li>
<li><a href="http://ie.microsoft.com/testdrive/Graphics/WebFonts/Default.html">Web Fonts</a> </li>
<li><a href="http://ie.microsoft.com/testdrive/Performance/FishIE%20tank/Default.html">FishIE Tank</a> </li>
<li><a href="http://ie.microsoft.com/testdrive/Performance/AmazonShelf/Default.html">Amazon Shelf</a> </li>
<li><a href="http://ie.microsoft.com/testdrive/Performance/MrPotatoGun/Default.html">Mr. Potato Gun</a> </li>
</ul>
<h3>&lt;canvas&gt; and FishIE Tank</h3>
<p align="center"><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="512" height="384"><param name="source" value="http://channel9.msdn.com/App_Themes/default/VideoPlayer10_01_18.xap" /><param name="initParams" value="deferredLoad=true,duration=0,m=http://ecn.channel9.msdn.com/o9/ch9/7/6/9/6/5/5/IE92a_ch9.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://ecn.channel9.msdn.com/o9/ch9/7/6/9/6/5/5/IE92a_512_ch9.png, postid=556967" /><param name="background" value="#00FFFFFF" /><a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"> <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /> </a> </object></p>
<p class="note">Can’t see the video? You can <a href="http://www.silverlight.net/getstarted/">download and install Silverlight</a> or download the video in <a href="http://ecn.channel9.msdn.com/o9/ch9/7/6/9/6/5/5/IE92a_ch9.mp4">MP4</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/7/6/9/6/5/5/IE92a_ch9.mp3">MP3</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/7/6/9/6/5/5/IE92a_ch9.wma">WMA</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/7/6/9/6/5/5/IE92a_ch9.wmv">WMV</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/7/6/9/6/5/5/IE92a_2MB_ch9.wmv">WMV (High)</a> or <a href="http://ecn.channel9.msdn.com/o9/ch9/7/6/9/6/5/5/IE92a_Zune_ch9.wmv">Zune</a> formats.</p>
<p>Here’s a closer look at the <a href="http://ie.microsoft.com/testdrive/Performance/FishIE%20tank/Default.html">FishIE Tank</a> demo and how it makes use of <code>&lt;canvas&gt;</code> to draw up to thousands of animated, moving, scaling fish sprites.</p>
<h3>&lt;canvas&gt; and Amazon.com</h3>
<p align="center"><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="512" height="384"><param name="source" value="http://channel9.msdn.com/App_Themes/default/VideoPlayer10_01_18.xap" /><param name="initParams" value="deferredLoad=true,duration=0,m=http://ecn.channel9.msdn.com/o9/ch9/6/6/9/6/5/5/IE91av2_ch9.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://ecn.channel9.msdn.com/o9/ch9/6/6/9/6/5/5/IE91av2_512_ch9.png, postid=556966" /><param name="background" value="#00FFFFFF" /><a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"> <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /> </a> </object></p>
<p class="note">Can’t see the video? You can <a href="http://www.silverlight.net/getstarted/">download and install Silverlight</a> or download the video in <a href="http://ecn.channel9.msdn.com/o9/ch9/6/6/9/6/5/5/IE91av2_ch9.mp4">MP4</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/6/6/9/6/5/5/IE91av2_ch9.mp3">MP3</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/6/6/9/6/5/5/IE91av2_ch9.wma">WMA</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/6/6/9/6/5/5/IE91av2_ch9.wmv">WMV</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/6/6/9/6/5/5/IE91av2_2MB_ch9.wmv">WMV (High)</a> or <a href="http://ecn.channel9.msdn.com/o9/ch9/6/6/9/6/5/5/IE91av2_Zune_ch9.wmv">Zune</a> formats.</p>
<p>Another <code>&lt;canvas&gt;</code> demo: <a href="http://ie.microsoft.com/testdrive/Performance/AmazonShelf/Default.html">Amazon Shelf</a>. This one ties into Amazon’s data to create a virtual bookshelf that lets you browse Amazon’s catalogue of books.</p>
<h3>&lt;video&gt; and IMDb Video Panorama</h3>
<p align="center"><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="512" height="384"><param name="source" value="http://channel9.msdn.com/App_Themes/default/VideoPlayer10_01_18.xap" /><param name="initParams" value="deferredLoad=true,duration=0,m=http://ecn.channel9.msdn.com/o9/ch9/8/6/9/6/5/5/IE93a_ch9.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://ecn.channel9.msdn.com/o9/ch9/8/6/9/6/5/5/IE93a_512_ch9.png, postid=556968" /><param name="background" value="#00FFFFFF" /><a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"> <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /> </a> </object></p>
<p class="note">Can’t see the video? You can <a href="http://www.silverlight.net/getstarted/">download and install Silverlight</a> or download the video in <a href="http://ecn.channel9.msdn.com/o9/ch9/8/6/9/6/5/5/IE93a_ch9.mp4">MP4</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/8/6/9/6/5/5/IE93a_ch9.mp3">MP3</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/8/6/9/6/5/5/IE93a_ch9.wma">WMA</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/8/6/9/6/5/5/IE93a_ch9.wmv">WMV</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/8/6/9/6/5/5/IE93a_2MB_ch9.wmv">WMV (High)</a> or <a href="http://ecn.channel9.msdn.com/o9/ch9/8/6/9/6/5/5/IE93a_Zune_ch9.wmv">Zune</a> formats.</p>
<p>The IE9 team showed a preview of support for the <code>&lt;video&gt;</code> tag, and with Platform Preview 3, you can try it out for yourself. In this video, you see how it’s used to build the <a href="http://ie.microsoft.com/testdrive/Graphics/VideoPanorama/Default.html">IMDb Video Panorama</a> demo.</p>
<h3>ECMAScript 5 and the Tile Game</h3>
<p align="center"><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="512" height="384"><param name="source" value="http://channel9.msdn.com/App_Themes/default/VideoPlayer10_01_18.xap" /><param name="initParams" value="deferredLoad=true,duration=0,m=http://ecn.channel9.msdn.com/o9/ch9/9/6/9/6/5/5/IE94a_ch9.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://ecn.channel9.msdn.com/o9/ch9/9/6/9/6/5/5/IE94a_512_ch9.png, postid=556969" /><param name="background" value="#00FFFFFF" /><a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"> <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /> </a> </object></p>
<p class="note">Can’t see the video? You can <a href="http://www.silverlight.net/getstarted/">download and install Silverlight</a> or download the video in <a href="http://ecn.channel9.msdn.com/o9/ch9/9/6/9/6/5/5/IE94a_ch9.mp4">MP4</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/9/6/9/6/5/5/IE94a_ch9.mp3">MP3</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/9/6/9/6/5/5/IE94a_ch9.wma">WMA</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/9/6/9/6/5/5/IE94a_ch9.wmv">WMV</a>, <a href="http://ecn.channel9.msdn.com/o9/ch9/9/6/9/6/5/5/IE94a_2MB_ch9.wmv">WMV (High)</a> or <a href="http://ecn.channel9.msdn.com/o9/ch9/9/6/9/6/5/5/IE94a_Zune_ch9.wmv">Zune</a> formats.</p>
<p>There are lots of boring ways to show of ECMAScript 5’s new array methods in action, but why not show them off with a fun game? In addition to the new JavaScript goodies, the <a href="http://ie.microsoft.com/testdrive/HTML5/TileSwitch/Default.xhtml">ECMAScript 5 Game</a> demo also shows off:</p>
<ul>
<li>HTML5 <code>&lt;video&gt;</code> and <code>&lt;audio&gt;</code> </li>
<li>CSS3 multiple backgrounds </li>
<li>HTML5 local storage (first made available in IE8) </li>
<li>DOM Level 3 events </li>
<li><code>&lt;window.getComputedStyle()&gt;</code> </li>
</ul>
<p><a href="http://ie.microsoft.com/testdrive/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="Download IE9 Platofmr Preview 3 now!" alt="Download IE9 Platofmr Preview 3 now!" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2010/06/download1.jpg" width="600" height="100" /></a></p>
<p class="alert"><a href="http://blogs.msdn.com/b/cdndevs/archive/2010/06/27/internet_2D00_explorer_2D00_9_2D00_videos_2D00_on_2D00_channel_2D00_9.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2010/06/27/internet-explorer-9-videos-on-channel-9/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/0/7/9/6/5/5/IE95a_ch9.wmv" length="37832725" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/0/7/9/6/5/5/IE95a_ch9.mp4" length="27609995" type="video/mp4" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/0/7/9/6/5/5/IE95a_ch9.mp3" length="1833028" type="audio/mpeg" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/0/7/9/6/5/5/IE95a_ch9.wma" length="1861449" type="audio/x-ms-wma" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/0/7/9/6/5/5/IE95a_2MB_ch9.wmv" length="122465906" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/0/7/9/6/5/5/IE95a_Zune_ch9.wmv" length="29016777" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/7/6/9/6/5/5/IE92a_ch9.wmv" length="49032753" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/7/6/9/6/5/5/IE92a_ch9.mp4" length="37995043" type="video/mp4" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/7/6/9/6/5/5/IE92a_ch9.mp3" length="1844903" type="audio/mpeg" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/7/6/9/6/5/5/IE92a_ch9.wma" length="1870461" type="audio/x-ms-wma" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/7/6/9/6/5/5/IE92a_2MB_ch9.wmv" length="243354605" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/7/6/9/6/5/5/IE92a_Zune_ch9.wmv" length="31432805" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/6/6/9/6/5/5/IE91av2_ch9.wmv" length="21944585" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/6/6/9/6/5/5/IE91av2_ch9.mp4" length="16644460" type="video/mp4" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/6/6/9/6/5/5/IE91av2_ch9.mp3" length="1748600" type="audio/mpeg" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/6/6/9/6/5/5/IE91av2_ch9.wma" length="1774333" type="audio/x-ms-wma" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/6/6/9/6/5/5/IE91av2_2MB_ch9.wmv" length="39707509" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/6/6/9/6/5/5/IE91av2_Zune_ch9.wmv" length="20072637" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/8/6/9/6/5/5/IE93a_ch9.wmv" length="22344025" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/8/6/9/6/5/5/IE93a_ch9.mp4" length="15083772" type="video/mp4" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/8/6/9/6/5/5/IE93a_ch9.mp3" length="1432414" type="audio/mpeg" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/8/6/9/6/5/5/IE93a_ch9.wma" length="1452905" type="audio/x-ms-wma" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/8/6/9/6/5/5/IE93a_2MB_ch9.wmv" length="36210738" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/8/6/9/6/5/5/IE93a_Zune_ch9.wmv" length="19672077" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/9/6/9/6/5/5/IE94a_ch9.wmv" length="46314517" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/9/6/9/6/5/5/IE94a_ch9.mp4" length="35046255" type="video/mp4" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/9/6/9/6/5/5/IE94a_ch9.mp3" length="2853475" type="audio/mpeg" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/9/6/9/6/5/5/IE94a_ch9.wma" length="2888817" type="audio/x-ms-wma" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/9/6/9/6/5/5/IE94a_2MB_ch9.wmv" length="90045776" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/9/6/9/6/5/5/IE94a_Zune_ch9.wmv" length="41066569" type="video/x-ms-wmv" />
		</item>
		<item>
		<title>IE9 Platform Preview 2</title>
		<link>http://www.globalnerdy.com/2010/05/06/ie9-platform-preview-2/</link>
		<comments>http://www.globalnerdy.com/2010/05/06/ie9-platform-preview-2/#comments</comments>
		<pubDate>Thu, 06 May 2010 14:58:58 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IE9]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Platform Preview]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2010/05/06/ie9-platform-preview-2/</guid>
		<description><![CDATA[It wasn’t that long ago that an early version of Internet Explorer 9 – we called it Platform Preview 1 – was announced at MIX10 Conference back in mid-March. If you missed it, here’s MIX10’s Day 2 keynote session, in which the Internet Explorer team’s supreme Kahuna, Dean Hachamovitch, made the announcement (it’s the first [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><strong>It wasn’t that long ago that an early version of </strong><a href="http://ie.microsoft.com/testdrive/"><strong>Internet Explorer 9</strong></a><strong> – we called it Platform Preview 1 – was announced at MIX10 Conference back in mid-March.</strong> If you missed it, <a href="http://live.visitmix.com/MIX10/Sessions/KEY02">here’s MIX10’s Day 2 keynote session</a>, in which the Internet Explorer team’s supreme Kahuna, <strong>Dean Hachamovitch</strong>, made the announcement (it’s the first part of the keynote, so you don’t have to watch or scan through the entire two hours):</p>
<p align="center"><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="600" height="338"><param name="source" value="http://live.visitmix.com/ClientBin/players/VideoPlayer2009_03_27.xap" /><param name="initParams" value="m=http://ecn.channel9.msdn.com/o9/mix/10/wmv/KEY02.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://live.visitmix.com/Skins/MIX10/Styles/images/DefaultPlayerBackground.png, postid=0" /><param name="background" value="#00FFFFFF" /><a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"> <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /> </a> </object>    <br />Don’t have Silverlight? <a href="http://www.microsoft.com/getsilverlight/Get-Started/Install/Default.aspx">Download it here</a>,     <br />or watch the video in <a href="http://ecn.channel9.msdn.com/o9/mix/10/wmv/KEY02.wmv">WMV</a>, <a href="http://ecn.channel9.msdn.com/o9/mix/10/wmv-hq/KEY02.wmv">high-def WMV</a> or <a href="http://ecn.channel9.msdn.com/o9/mix/10/mp4/KEY02.mp4">MP4</a> format.</p>
<p><a href="http://www.globalnerdy.com/2010/03/16/take-internet-explorer-9-for-a-test-drive/">As I wrote back then, IE9 showed a lot of improvements.</a> In addition to the improvements, IE9 came with a commitment made to updating the preview about every eight weeks. </p>
<p><strong><a href="http://blogs.msdn.com/ie/archive/2010/05/05/html5-and-same-markup-second-ie9-platform-preview-available-for-developers.aspx">The time has come to announce the release of IE9 Platform Preview 2!</a></strong> The whole story’s over at <a href="http://blogs.msdn.com/ie/archive/2010/05/05/html5-and-same-markup-second-ie9-platform-preview-available-for-developers.aspx">the latest post to <em>IEBlog</em></a>, but I thought I’d cover a couple of things I felt were worth noting.</p>
<h3>Improved JavaScript Performance</h3>
<p><a href="http://ie.microsoft.com/testdrive/benchmarks/SunSpider/Default.html"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Chart showing JavaScript performance of various browsers" border="0" alt="Chart showing JavaScript performance of various browsers" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2010/05/ie9platformpreview2performance.jpg" width="600" height="408" /></a> </p>
<p><a href="http://ie.microsoft.com/testdrive/benchmarks/SunSpider/Default.html">The chart above shows the results of various browsers</a>, including IE9 Platform Preview 2, under <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html">WebKit’s Sunspider JavaScript benchmark</a>, version 0.9.1 on a 3.0GHz Dell Optiplex with an Intel Core 2 Duo processor, 4GB RAM and Intel Integrated Video running Windows 7. As you can see, JavaScript performance on Platform Preview 2 is a mere eye-blink away from that of the Esteemed Competition.</p>
<p><a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-driver.html" target="_blank"><strong>If you’d like to run the SunSpider JavaScript benchmark in your default browser right now, click here.</strong></a></p>
<h3>Getting HTML5ier</h3>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="Acid3 test for Internet Explorer 9 Platform Preview 2 - 68/100" alt="Acid3 test for Internet Explorer 9 Platform Preview 2 - 68/100" src="http://ieblog.members.winisp.net/images/Dean_PPB2_5.png" /></p>
<p>The goal for the final release of IE9 is full HTML5 compliance and “Same Markup” – that is, rendering the same HTML, CSS and JavaScript the same way. The idea is that you, the web developer, shouldn’t have to come up with workaround or hacks to get the same page to display the same way across browsers.</p>
<p><a href="http://acid3.acidtests.org/" target="_blank"><strong>If you’d like to run the Acid3 test in your default browser right now, click here.</strong></a></p>
<p>Part of that approach is technical: a standards-compliant IE9, and the first platform preview was a step in that direction. Platform Preview 2 add more fixes to HTML, SVG, CSS3 and JavaScript implementations as well as features like <a href="http://www.w3.org/TR/css3-mediaqueries/">CSS3 media queries</a>, DOMContentLoaded, DOM traversal and range, getElementsByClassName, createDOcument and so on.</p>
<p>While the <a href="http://en.wikipedia.org/wiki/Acid3">Acid3</a> test <a href="http://en.wikipedia.org/wiki/Acid3#Criticism">isn’t the holy grail</a> – some of its tests don’t mesh with the HTML5 standard as it is right now, others are still “under construction” – more compliance with HTML5 typically means a higher Acid3 score. IE9 Platform Preview 2 currently scores 68 out of a possible 100, which is an improvement over Platform Preview 1’s score of 55, and leaps and bounds ahead of IE8’s scores for 20.</p>
<h3>People Issue #1: Standards</h3>
<p>Another part of the “Same Markup” approach is working within the various standards groups defining the web experience. Among other things, we’ve been doing things like:</p>
<ul>
<li><a href="http://www.w3.org/QA/2010/03/interview_paul_cotton_on_micro.html">Co-chairing the W3C HTML Working Group</a> </li>
<li><a href="http://lists.w3.org/Archives/Public/public-html-testsuite/2009Oct/0000.html">Leading the HTML5 Working Group’s testing task force</a> </li>
<li><a href="http://samples.msdn.microsoft.com/ietestcenter/">Submitting 88 new HTML5 new tests for a grand total of 192</a> </li>
<li><a href="http://blogs.msdn.com/ie/archive/2010/01/05/microsoft-joins-w3c-svg-working-group.aspx">Joining the SVG working group</a> </li>
<li><a href="http://www.w3.org/TR/IndexedDB/">Working with Mozilla on Indexed DB local storage</a> </li>
<li><a href="http://www.w3.org/TR/DOM-Level-3-Events/">Working on the draft for DOM Level 3 events</a> </li>
</ul>
<h3>People Issue #2: Developers</h3>
<p><strong>Let me show you a couple of photos from </strong><a href="http://www.torontocodecamp.net/"><strong>Toronto Code Camp</strong></a><strong>,</strong> which took place last Saturday. Here’s <a href="http://www.colinbowern.com/about.html">Colin Bowern’s</a> session, titled <em><a href="http://www.torontocodecamp.net/Sessions/tabid/55/CodecampId/3/SessionId/84/Default.aspx">JQuery is Your Friend</a></em>:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Colin Bowern presenting at Toronto Code Camp to a packed room" border="0" alt="Colin Bowern presenting at Toronto Code Camp to a packed room" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2010/05/colinbowernjqueryisyourfriend.jpg" width="600" height="450" /> </p>
<p>That was a fairly packed room, but that ain’t nuthin’ compared to <a href="https://toddanglin.sys-con.com/">Todd Anglin’s</a> afternoon session, <em><a href="http://www.torontocodecamp.net/Sessions/tabid/55/CodecampId/3/SessionId/71/Default.aspx">The Rich Standard: Getting Familiar with HTML5</a></em>, which went beyond “standing room only” and into the “any place I can park myself” zone:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Todd Anglin presenting at Toronto Code Camp to a very packed room" border="0" alt="Todd Anglin presenting at Toronto Code Camp to a very packed room" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2010/05/toddanglinhtml5.jpg" width="600" height="450" /> </p>
</p>
<p>From looking at the crowd – and yes, talking with them, too – it’s quite clear that there’s a lot of hunger for information, tutorials, guidance and general knowledge of HTML5, CSS3 and JavaScript and how to build modern web applications using them.</p>
<p><strong>That’s where I can help, and in all sorts of ways.</strong> For starters, there will be a number of HTML5, CSS3 and JavaScript articles, tutorials and pointers on this blog. I’ll also be participating in a number of presentations, workshops and <a href="http://techdays.ca/" target="_blank">TechDays</a> events to cover HTML5, CSS3 and JavaScript. Keep watching this space for more.</p>
<h3>Take IE9 Platform Preview 2 for a Spin!</h3>
</p>
<p><a href="http://ie.microsoft.com/testdrive/"><img style="border-right-width: 0px; margin: 0px 15px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Windows Internet Explorer 9" border="0" alt="Windows Internet Explorer 9" align="left" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2010/05/internetexplorer9.jpg" width="300" height="56" /></a> </p>
<p><strong><a href="http://ie.microsoft.com/testdrive/">You can download Internet Explorer 9 Platform Preview 2 right now.</a></strong> As with Platform Preview 1, it coexists with Internet Explorer 8, and it’s a very thin wrapper around the engine, meaning that it’s really for developer and designer testing rather than general browsing. The UI elements you’d expect in a browser, such as the address bar (you open sites using <strong>File –&gt; Open…</strong>), nor are the security features such as Protected Mode, SmartScreen filter and XSS scripting filter.</p>
<p>Platform Preview 2 installs right over Platform Preview 1; <strong>you <em>don’t</em> have to uninstall Platform Preview 1 before installing Platform Preview 2.</strong></p>
<p>Take it for a spin and send us feedback!</p>
<p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2010/05/06/ie9-platform-preview-2.aspx" target="_blank">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2010/05/06/ie9-platform-preview-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://ecn.channel9.msdn.com/o9/mix/10/wmv/KEY02.wmv" length="565308883" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/mix/10/wmv-hq/KEY02.wmv" length="1054896773" type="video/x-ms-wmv" />
<enclosure url="http://ecn.channel9.msdn.com/o9/mix/10/mp4/KEY02.mp4" length="280356381" type="video/mp4" />
		</item>
		<item>
		<title>jQuery 1.4 Released / 14 Days of jQuery</title>
		<link>http://www.globalnerdy.com/2010/01/18/jquery-1-4-released-14-days-of-jquery/</link>
		<comments>http://www.globalnerdy.com/2010/01/18/jquery-1-4-released-14-days-of-jquery/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 07:30:03 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[new releases]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2010/01/18/jquery-1-4-released-14-days-of-jquery/</guid>
		<description><![CDATA[In case you hadn&#8217;t heard the news last week, the newest version of the jQuery JavaScript library, version 1.4, has been released! Even with the new features, it’s still tiny: the uncompressed development version is 156KB and the minified production version is a svelte 23KB when gzipped. To celebrate this release, the jQuery folks have [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://jquery.com/"><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="jQuery logo: &quot;Write less, do more.&quot;" border="0" alt="jQuery logo: &quot;Write less, do more.&quot;" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2010/01/jquerylogo.jpg" width="235" height="73" /></a><strong>In case you hadn&#8217;t heard the news last week, the newest version of the <a href="http://jquery.com/">jQuery</a> JavaScript library, version 1.4, has been released!</strong> Even with the new features, it’s still tiny: the uncompressed development version is 156KB and the minified production version is a svelte 23KB when gzipped.</p>
<p><strong>To celebrate this release, the jQuery folks have created a site called <em><a href="http://jquery14.com/">The 14 Days of jQuery</a></em>,</strong> where they’ll post all sorts of supporting articles on the jQuery 1.4 for 14 days, starting on the day that was both the release date of jQuery <em>and</em> its birthday, January 14th. So far, they’ve posted <a href="http://jquery14.com/day-01/jquery-14">the expected download links to jQuery 1.4</a> as well as a <a href="http://jquery14.com/day-02/hd-version-of-jquery-1-4-q-a">Q&amp;A session with some of the jQuery team</a>, a <a href="http://jquery14.com/day-02/jquery-podcast-with-john-resig">jQuery podcast with John Resig</a>, a <a href="http://jquery14.com/day-02/media-temple-giveaway">contest for the coolest use of jQuery</a>, a <a href="http://jquery14.com/day-04/getting-involved-in-the-jquery-community-with-karl-swedberg">presentation of how to get involved in the jQuery community</a> and more.</p>
<p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2010/01/18/jquery-1-4-released-14-days-of-jquery.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2010/01/18/jquery-1-4-released-14-days-of-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Taking JavaScript Performance to the Extreme with Thomas Fuchs</title>
		<link>http://www.globalnerdy.com/2009/11/09/taking-javascript-performance-to-the-extreme-with-thomas-fuchs/</link>
		<comments>http://www.globalnerdy.com/2009/11/09/taking-javascript-performance-to-the-extreme-with-thomas-fuchs/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 16:34:30 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[web applications]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/?p=4662</guid>
		<description><![CDATA[&#34;Extreme JavaScript Performance&#34; (from JSConf.eu, November 7) Take a look at the slides from Extreme JavaScript Performance, a presentation by Thomas Fuchs, creator of the script.aculo.us JavaScript library, collaborator on the book Agile Web Development with Rails and one of the people behind FailCamp. He gave the presentation last week at JSConf.eu in Berlin. In [...]]]></description>
			<content:encoded><![CDATA[<p></p><h3>&quot;Extreme JavaScript Performance&quot; (from JSConf.eu, November 7)</h3>
<p align="center"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=2449719&amp;stripped_title=extreme-javascript-performance" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=2449719&amp;stripped_title=extreme-javascript-performance" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p>
<p><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="thomas fuchs" border="0" alt="thomas fuchs" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/11/thomasfuchs.jpg" width="200" height="199" /><strong>Take a look at the slides from <em><a href="http://www.slideshare.net/madrobby/extreme-javascript-performance">Extreme JavaScript Performance</a></em>,</strong> a presentation by <a href="http://mir.aculo.us/"><strong>Thomas Fuchs</strong></a>, creator of the <a href="http://script.aculo.us/"><strong>script.aculo.us</strong></a> JavaScript library, collaborator on the book <a href="http://pragprog.com/titles/rails2/agile-web-development-with-rails"><em>Agile Web Development with Rails</em></a> and one of the people behind <a href="http://failcamp.org/">FailCamp</a>. He gave the presentation last week at JSConf.eu in Berlin.</p>
<p>In the presentation, Thomas looked at six simple things you can do to boost the performance of your JavaScript:</p>
<ul>
<li>Use inline functions instead of function calls. </li>
<li>Embrace the language – using the language’s conventions yields unexpectedly faster code. Instantiate arrays using <code>var myArray = []</code> instead of <code>var a = new Array</code>, and instantiate objects using <code>var myObject = {}</code> instead of <code>var o = new Object</code>. </li>
<li>Unroll your loops! (A trick so old that we covered it when I was in school!) </li>
<li>Cache globals. If you’re going to access a global object, store a local reference and use that instead. </li>
<li>Tune your boolean expressions: in logical “AND” (<code>&amp;&amp;</code>) operations, make the operand most likely to be false the first one. </li>
<li>Watch out for slow constructs such as with blocks, try/catch and features that JIT compilers don’t support well. </li>
</ul>
<p>The presentation includes benchmarks for the four most common JavaScript engines:</p>
<ul>
<li>SpiderMonkey (Firefox 3.5) </li>
<li>JavaScript Core (Safari 4) </li>
<li>JScript (Internet Explorer 8) </li>
<li>V8 (Google Chrome) </li>
</ul>
<p>And yes, he does warn you – at least twice – of the dangers of premature optimization.</p>
<h3>JavaScript Performance Rocks</h3>
<p><a href="http://javascriptrocks.com/performance/"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="JavaScript performance rocks" border="0" alt="JavaScript performance rocks" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/11/JavaScriptperformancerocks.jpg" width="600" height="216" /></a> </p>
<p>If you liked <em>Extreme JavaScript Performance</em>, you’ll love the ebook Thomas co-authored with <a href="http://www.slash7.com/">Amy Hoy</a>, <strong><em><a href="http://javascriptrocks.com/performance/">JavaScript Performance Rocks!</a></em></strong> Actually, it’s more than just a book – it’s <em>four</em> books and a profiling tool:</p>
<ul>
<li><strong>Book 1: Understanding and Measuring Performance (or: “Dude, Where’s My Performance?”)</strong> &#8211; “In which our brave hero or heroine (that&#8217;s you!) apprentices to the cryptic-but-charming Master (that&#8217;s us) and learns how to get into the enemy&#8217;s head—the better to eat it alive, my dear.” </li>
<li><strong>Book 2: Loadtime (or: “The Land of Unicorn Tears”)</strong> &#8211; “Loadtime is a sad time, a time of of enormous, slow-loading assets; of maxed-out request queues; of bloated, waddling DOMs. Of limp white screens. Most of the world&#8217;s worst web performance woes? They live and breed in Loadtime. That&#8217;s why it&#8217;s the Land of Unicorn Tears, because unicorns hate slow web apps just as much as the rest of us. And they have magical horns. So there.“ </li>
<li><strong>Book 3: Runtime (or: “’Cuz Tuning Loops is Hardcore”)</strong> &#8211; “The vast majority of the problems that the vast majority of apps will have can be solved with loadtime fixes of various stripes. But just in case you&#8217;re unique, and special, and have particularly intractable issues—or are just a glutton for punishment—we have written a third booklet, all about speeding up code when it runs.” </li>
<li><strong>Book 4: Interface Coping Strategies (or: “If You Can’t Fix It, Fake It”)</strong> – “Come across a performance problem that you really can&#8217;t fix? Long-running calculations? Slow server you can&#8217;t tune up? <em>If you can&#8217;t make it, fake it.</em> You can make your app <em>feel</em> faster to your customers, even if you can&#8217;t fix the underlying problem. And, let&#8217;s face it, that&#8217;s what your customers care about.” </li>
<li><strong>The DOM Monster profiling tool.</strong> </li>
</ul>
<p><strong><em><a href="http://javascriptrocks.com/performance/">JavaScript Performance Rocks!</a></em> isn’t your ordinary ebook,</strong> with material laid out for a dead-tree book simply cast in PDF form. It was designed from the ground up for onscreen reading, written in an entertaining way to keep you amused and your mind ready to learn, and written in a fun, irreverent way so that you don’t zone out. I know Thomas and Amy personally and have seen them teach; trust me – you want to learn from them.</p>
<p><strong><em><a href="http://javascriptrocks.com/performance/">JavaScript Performance Rocks!</a></em> usually sells for US$49, but there’s a special deal right now – the first 500 books are selling for 10 dollars less &#8212; US$39.</strong> You’ve got two good reason to buy immediately: first, there’s this $10 discount, and second, the US/Canada exchange rate’s pretty good right now (as I write this, the PayPal exchange rate is CAD$1 = US$0.92).</p>
<p>I’ve already ordered my copy.</p>
<p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/11/09/taking-javascript-performance-to-the-extreme-with-thomas-fuchs.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/11/09/taking-javascript-performance-to-the-extreme-with-thomas-fuchs/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A Fix for the Error in Hour 9 of &#8220;Teach Yourself ASP.NET Ajax in 24 Hours&#8221; / Client-Side Error Handling in ASP.NET Ajax in .NET 3.5</title>
		<link>http://www.globalnerdy.com/2008/12/03/a-fix-for-the-error-in-hour-9-of-teach-yourself-aspnet-ajax-in-24-hours-client-side-error-handling-in-aspnet-ajax-in-net-35/</link>
		<comments>http://www.globalnerdy.com/2008/12/03/a-fix-for-the-error-in-hour-9-of-teach-yourself-aspnet-ajax-in-24-hours-client-side-error-handling-in-aspnet-ajax-in-net-35/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 19:40:55 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[ASP.NET 3.5]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[errata]]></category>
		<category><![CDATA[error handling]]></category>
		<category><![CDATA[exception handling]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PageRequestManager]]></category>
		<category><![CDATA[ScriptManager]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2008/12/03/a-fix-for-the-error-in-hour-9-of-teach-yourself-aspnet-ajax-in-24-hours-client-side-error-handling-in-aspnet-ajax-in-net-35/</guid>
		<description><![CDATA[While following the exercises in the book Teach Yourself ASP.NET Ajax in 24 Hours – one of the few books I’ve been able to find on Ajax for ASP.NET 3.5 – I found an error in the “Hour 9” chapter in the example that covers client-side error-handling (it starts on page 137). I’ve reported this [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.amazon.com/Sams-Teach-Yourself-ASP-NET-Hours/dp/0672329670"><img style="border-right-width: 0px; margin: 0px 0px 10px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Cover of &quot;Teach Yourself ASP.NET Ajax in 24 Hours&quot;" border="0" alt="Cover of &quot;Teach Yourself ASP.NET Ajax in 24 Hours&quot;" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2008/12/teach-yourself-aspnet-ajax-in-24-hours.jpg" width="185" height="240" /></a>While following the exercises in the book <em><a href="http://www.amazon.com/Sams-Teach-Yourself-ASP-NET-Hours/dp/0672329670"><strong>Teach Yourself ASP.NET Ajax in 24 Hours</strong></a></em> – one of the few books I’ve been able to find on Ajax for ASP.NET 3.5 – I found an error in the “Hour 9” chapter in the example that covers client-side error-handling (it starts on page 137). I’ve reported this error to the publisher and with any luck, they’ll post a corrected version on their support web page for the book.</p>
<p>I’ve done some searching and haven’t found anything covering this error so I thought I’d cover it here. Better still, I’ll also cover the fix, which turns out to be quite simple. If you’ve been trying out the code in the book and wondering why it doesn’t work, relax: at least in this case, it’s not your fault.</p>
<p>In the course of covering the error and how to fix it, I’ll also talk about how ASP.NET handles exceptions raised by asynchronous postbacks and how you can make use of it to make better user interfaces. Even if you don’t have a copy of <em>Teach Yourself ASP.NET Ajax in 24 Hours,</em> you should find this article an interesting introduction to client-side error handling in ASP.NET Ajax.</p>
<h3>Unhandled Exceptions and Asynchronous Postbacks</h3>
<p>In ASP.NET Ajax, if an exception is raised during an asynchronous postback and isn’t handled on the server side – that is, in the code-behind – it gets passed along to the client side. What happens on the client side depends on which version of ASP.NET you’re using:</p>
<ul>
<li><strong>In ASP.NET Ajax 1.0,</strong> the server-side exception object is serialized into <a href="http://www.json.org/">JSON</a>. The JSON is sent to the client, which displays the exception’s message property in an alert box. </li>
<li><strong>In ASP.NET Ajax for .NET 3.5,</strong> the server-side exception is still serialized into JSON and the JSON is still sent to the client. However, instead of displaying the exception’s message property in an alert box – a presumptuous design decision, if you want my opinion – the client throws the exception, which gives you the opportunity to handle it on the client side as you please. </li>
</ul>
<p>(In this article, I’ll stick to covering ASP.NET Ajax for .NET 3.5.)</p>
<p>This is quite different from most other web application frameworks, where an exception raised as the result of an <a href="http://www.w3.org/TR/XMLHttpRequest/">XMLHttpRequest</a> call to the server results in some kind of “error” page from the server (or a blank page, if you’re suppressing error reporting). </p>
<p>To illustrate this, let’s put together a simple ASP.NET Ajax application. It’s a single page with a single button, that if clicked, throws an exception.</p>
<p>Here’s the code for the page layout. It’s pretty straightforward:</p>
<p><strong>Listing 1: <code>Default.aspx</code> – Layout for the page of our simple ASP.NET Ajax application<em>.</em></strong></p>
<p> <code>
<pre>&lt;%@ Page Language=&quot;C#&quot; AutoEventWireup=&quot;true&quot;
CodeBehind=&quot;Default.aspx.cs&quot; Inherits=&quot;WebApplication1._Default&quot; %&gt;

&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;

&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; &gt;
&lt;head runat=&quot;server&quot;&gt;
    &lt;title&gt;Error Handling Demo 1&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;

        &lt;div&gt;
            &lt;asp:ScriptManager ID=&quot;ScriptManager1&quot; runat=&quot;server&quot; /&gt;
            &lt;asp:UpdatePanel runat=&quot;server&quot; ID=&quot;UpdatePanel1&quot;&gt;
                &lt;ContentTemplate&gt;
                    &lt;asp:Button runat=&quot;server&quot; ID=&quot;Button1&quot;
                    Text=&quot;Click Me&quot; OnClick=&quot;Button1_OnClick&quot; /&gt;
                &lt;/ContentTemplate&gt;
            &lt;/asp:UpdatePanel&gt;
        &lt;/div&gt;

    &lt;/form&gt;
&lt;/body&gt;

&lt;/html&gt;</pre>
<p></code></p>
<p>Some notes about the code:</p>
<ul>
<li>The <code>ScriptManager</code> control at the top of the form enables Ajax by ensuring that the JavaScript needed to support ASP.NET Ajax on the client side is downloaded to the browser. </li>
<li>The <code>UpdatePanel</code> control determines the controls that trigger asynchronous postbacks and defines the region of the page that can be updated via Ajax. </li>
<li><code>Button1</code> is the button control that we want to throw an exception when clicked. We’ll set it to call the <code>Button1_OnClick</code> method, which will contain the exception-throwing code. </li>
</ul>
<p>The code-behind is very simple. In it, we define a single method: the event handler <code>Button1_OnClick</code>, which is called in response when the user clicks <code>Button1</code>. All we want it to do is throw an exception that uniquely identifies itself:</p>
<p><strong>Listing 2: <code>Default.aspx.cs</code> – Code-behind for the page of our very simple example app<em>.</em></strong></p>
<p><code></p>
<pre>using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Button1_OnClick(object sender, EventArgs e)
        {
            throw new Exception(&quot;Click!&quot;);
        }
    }
}</pre>
<p></code></p>
<h4>Running with Debugging vs. Running Without Debugging</h4>
<p>Listing 1 and 2 give us enough to make our simple app work. It’s time to take it for a spin.</p>
<p>Here’s something that doesn’t get covered in <em>Teach Yourself ASP.NET Ajax in 24 Hours: </em>what happens when you try to run this app <em>with</em> debugging (starting it by hitting F5 in Visual Studio or “Start Debugging” under the “Debug” menu)? </p>
<p>Here’s a screenshot of what happened for me: <img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="simple_app_with_debugging" border="0" alt="simple_app_with_debugging" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2008/12/simple-app-with-debugging.jpg" width="567" height="417" /> </p>
<p>With debugging on, the unhandled exception thrown in <code>Button1_OnClick</code> is caught by the debugger. Normally, this sort of error-catching behaviour is welcome, but in this particular case, it gets in the way of what we’re trying to achieve: having an exception on the server side and passing it along to the user’s browser to handle.</p>
<p>If we run the same app without debugging, we get the effect we want: the exception is raised on the server side, but the server-side part of the application doesn’t halt with an error message. Instead, the client shows the error message.</p>
<p>Here’s a screenshot. Note that the error message includes the string “Click!”, which is the argument in the throw statement the <code>Button1_OnClick</code> event handler. Thanks to this, we can be pretty certain that the error message is the result of our deliberately-thrown exception:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2008/12/image.png" width="502" height="327" /></p>
<p>Now that we have the exception that we threw on the server side being handled on the client side, let’s do something with it.&#160; </p>
</p>
<h3>Handling Exceptions Passed from the Server on the Client Side</h3>
<p>Let’s do something simple – let’s catch the exception caused by the button click, and instead of having a JavaScript error box pop up, let’s make a couple of changes to the button:</p>
<ul>
<li>Change its text to “This button has been disabled for your safety.” </li>
<li>Disable it. </li>
</ul>
<p>To handle exceptions on the client side, we need to write some client-side JavaScript. Luckily, this is made simple by the number of handy utility classes defined in the scripts downloaded to the client by the <code>ScriptManager</code> component. In this case, we’re going to make use of the <code><a href="http://msdn.microsoft.com/en-us/library/bb311028.aspx">Sys.Webforms.PageRequestManager</a></code> class to deal with the exception because it provides us with the following:</p>
<ul>
<li>The <code><a href="http://msdn.microsoft.com/en-us/library/bb383810.aspx">endRequest</a></code> event, which is raised after an asynchronous postback has completed and control is returned to the browser. </li>
<li>The <code>add_endRequest</code> method, which specifies a method to call when the <code>endRequest</code> event is raised. </li>
</ul>
<p>Here’s the JavaScript, which we’ll put in a file called <code>ErrorHandler.js</code>:</p>
<p><strong>Listing 3: <code>ErrorHandler.js</code> &#8212; Client-side error handler for our very simple example app<em>.</em></strong></p>
<p><code></p>
<pre>Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

function EndRequestHandler(sender, args)
{
    if (args.get_error() != undefined) {
        $get('Button1').value = &quot;This button has been disabled for your safety.&quot;;
        $get('Button1').disabled = true;
        args.set_errorHandled(true);
    }
}</pre>
<p></code></p>
<p>The script performs the following:</p>
<ul>
<li>It registers the method <code>EndRequestHandler</code> as the method to call whenever the <code>endRequest</code> event is raised. </li>
<li>It defined the method <code>EndRequestHandler</code>, which does the following:
<ul>
<li>If an exception did occur during the asynchronous callback:&quot;
<ul>
<li>The button’s text is changed </li>
<li>The button is disabled </li>
<li>The error is reported as handled, which allows the application to continue </li>
</ul>
</li>
</ul>
</li>
</ul>
<p>Now that we have this client-side code, we need to get it to the client. We do this by using the <code>Scripts</code> section of the <code>ScriptManager</code> to send this file to the client. The listing below shows the updated layout code for our simple application. I’ve highlighted the change in the listing below:</p>
<p><strong>Listing 4: Revised <code>Default.aspx</code> – Layout for the page of our simple ASP.NET Ajax application<em>.</em></strong></p>
<p><code></p>
<pre>&lt;%@ Page Language=&quot;C#&quot; AutoEventWireup=&quot;true&quot; CodeBehind=&quot;Default.aspx.cs&quot; Inherits=&quot;WebApplication1._Default&quot; %&gt;

&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;

&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; &gt;
&lt;head runat=&quot;server&quot;&gt;
    &lt;title&gt;Error Handling Demo 1&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;

        &lt;div&gt;
            <b>&lt;asp:ScriptManager ID=&quot;ScriptManager1&quot; runat=&quot;server&quot;&gt;
                &lt;Scripts&gt;
                    &lt;asp:ScriptReference Path=&quot;~/ErrorHandler.js&quot; /&gt;
                &lt;/Scripts&gt;
            &lt;/asp:ScriptManager&gt;</b>
            &lt;asp:UpdatePanel runat=&quot;server&quot; ID=&quot;UpdatePanel1&quot;&gt;
                &lt;ContentTemplate&gt;
                    &lt;asp:Button runat=&quot;server&quot; ID=&quot;Button1&quot;
                    Text=&quot;Click Me&quot; OnClick=&quot;Button1_OnClick&quot; /&gt;
                &lt;/ContentTemplate&gt;
            &lt;/asp:UpdatePanel&gt;
        &lt;/div&gt;

    &lt;/form&gt;
&lt;/body&gt;

&lt;/html&gt;</pre>
<p></code></p>
<p><strong></strong></p>
<p>The <code>Scripts</code> section of the <code>ScriptManager</code> lets us specify scripts to be sent to the client along with the page, with each script specified in a <code>ScriptReference</code> tag.</p>
<p>When we run the app (remember, <em>without </em>debugging on) with these changes and click the button, here’s what we get:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Button with text &quot;This button has been disabled for your safety&quot;" border="0" alt="Button with text &quot;This button has been disabled for your safety&quot;" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2008/12/sample-app-revised-screenshot.gif" width="401" height="43" /> </p>
<p>In a later article, I’ll look at other ways of using client-side error handling in ASP.NET Ajax in .NET 3.5.</p>
<h3>The Error in <em>Teach Yourself ASP.NET Ajax in 24 Hours</em></h3>
<p>Here’s the page layout code for the error-handling example in <em>Teach Yourself ASP.NET Ajax in 24 Hours</em>. The code-behind for the page and the client-side JavaScript are fine, it’s this code that has the error. See if you can spot what’s amiss:</p>
<p><strong>Listing 5: <code>Default.aspx</code> &#8212; Page layout of client-side error-handling example in Hour 9 of <em>Teach Yourself ASP.NET Ajax in 24 Hours.</em></strong></p>
<p><code></p>
<pre>&lt;%@ Page Language=&quot;C#&quot; AutoEventWireup=&quot;true&quot; CodeBehind=&quot;Default.aspx.cs&quot; Inherits=&quot;WebApplication1._Default&quot; %&gt;

&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;

&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; &gt;
&lt;head runat=&quot;server&quot;&gt;
    &lt;title&gt;&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;

        &lt;div&gt;
            &lt;asp:ScriptManager ID=&quot;ScriptManager1&quot; runat=&quot;server&quot; /&gt;
            &lt;asp:UpdatePanel runat=&quot;server&quot; ID=&quot;UpdatePanel1&quot;&gt;
                &lt;ContentTemplate&gt;
                    &lt;asp:Button runat=&quot;server&quot; ID=&quot;Button1&quot;
                    Text=&quot;Click Me&quot; OnClick=&quot;Button1_OnClick&quot; /&gt;
                &lt;/ContentTemplate&gt;
            &lt;/asp:UpdatePanel&gt;
        &lt;/div&gt;

        &lt;br /&gt;&lt;br /&gt;

        &lt;div id=&quot;Message&quot; style=&quot;visibility: hidden;&quot;&gt;
            &lt;asp:HyperLink ID=&quot;HyperLink1&quot; runat=&quot;server&quot;
                           Font-Bold=&quot;true&quot;
                           Text=&quot;Error Occurred...&quot;
                           Font-Italic=&quot;true&quot;
                           ForeColor=&quot;red&quot; &gt;
            &lt;/asp:HyperLink&gt;
        &lt;/div&gt;

    &lt;/form&gt;
&lt;/body&gt;

&lt;/html&gt;</pre>
<p></code></p>
<p>Just for kicks, here’s what happens when you click on the button in the app using the code straight from <em>Teach Yourself ASP.NET Ajax in 24 Hours</em>:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Screen capture of resulting error message from original &quot;Teach Yourself ASP.NET Ajax in 24 Hours&quot; application" border="0" alt="Screen capture of resulting error message from original &quot;Teach Yourself ASP.NET Ajax in 24 Hours&quot; application" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2008/12/screen-capture-1.gif" width="582" height="337" /></p>
<p>The mistake is simple: although there is some error-handling client-side JavaScript in the app, it’s not referenced in the <code>ScriptManager</code> tag, which means it’s not sent to the client. Without error-handling code on the client side, the exception is thrown, there’s nothing to catch it and the user is presented with the standard error dialog box.</p>
<p>The fix is equally simple: reference the script in the <code>ScriptManager</code> tag’s <code>Scripts</code> section:</p>
<p><code></p>
<pre>&lt;asp:ScriptManager ID=&quot;ScriptManager1&quot; runat=&quot;server&quot;&gt;
    &lt;Scripts&gt;
        &lt;asp:ScriptReference Path=&quot;~/ErrorHandlingScript.js&quot; /&gt;
    &lt;/Scripts&gt;
&lt;/asp:ScriptManager&gt;</pre>
<p></code></p>
<p>Once that’s done, the program works as promised.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2008/12/03/a-fix-for-the-error-in-hour-9-of-teach-yourself-aspnet-ajax-in-24-hours-client-side-error-handling-in-aspnet-ajax-in-net-35/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enabling and Disabling the Mouse Wheel &#8220;Zoom&#8221; Feature on Map APIs</title>
		<link>http://www.globalnerdy.com/2008/11/22/enabling-and-disabling-the-mouse-wheel-zoom-feature-on-map-apis/</link>
		<comments>http://www.globalnerdy.com/2008/11/22/enabling-and-disabling-the-mouse-wheel-zoom-feature-on-map-apis/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 16:43:13 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[mousewheel]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[Virtual Earth]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[Yahoo Maps]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2008/11/22/enabling-and-disabling-the-mouse-wheel-zoom-feature-on-map-apis/</guid>
		<description><![CDATA[The major map APIs provide a “zoom” feature that lets you zoom the map in or out if you position the cursor over the map and use your mouse’s scroll wheel. Sometimes you want this function enabled, sometimes you don’t. David Janes, over at his Code Blog provides the JavaScript code for: Enabling and disabling [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://code.davidjanes.com/blog/2008/11/14/how-to-enabledisable-mouse-wheel-actions-on-your-map/"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Microsoft Laser Mouse 7000 superimposed over a Live map of Toronto" border="0" alt="Microsoft Laser Mouse 7000 superimposed over a Live map of Toronto" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2008/11/mouse-and-toronto-map.jpg" width="450" height="419" /></a> </p>
<p>The major map APIs provide a “zoom” feature that lets you zoom the map in or out if you position the cursor over the map and use your mouse’s scroll wheel. Sometimes you want this function enabled, sometimes you don’t. David Janes, over at his Code Blog <a href="http://code.davidjanes.com/blog/2008/11/14/how-to-enabledisable-mouse-wheel-actions-on-your-map/">provides the JavaScript code for</a>:</p>
<ul>
<li>Enabling and disabling the mouse wheel zoom for Google Maps and Microsoft Virtual Earth</li>
<li>Disabling the mouse wheel zoom for Yahoo! Maps (it’s enabled by default, but there doesn’t seem to be a way to re-enable it once disabled.)</li>
</ul>
<h3>Links</h3>
<ul>
<li><em>David Janes’ Code Blog</em>: <a href="http://code.davidjanes.com/blog/2008/11/14/how-to-enabledisable-mouse-wheel-actions-on-your-map/"><strong><em>How to enable/disable Mouse Wheel actions on your map</em></strong></a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2008/11/22/enabling-and-disabling-the-mouse-wheel-zoom-feature-on-map-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Language Adoption Debate and &#8220;Three Stooges Syndrome&#8221;</title>
		<link>http://www.globalnerdy.com/2007/10/22/the-language-adoption-debate-and-three-stooges-syndrome/</link>
		<comments>http://www.globalnerdy.com/2007/10/22/the-language-adoption-debate-and-three-stooges-syndrome/#comments</comments>
		<pubDate>Mon, 22 Oct 2007 19:40:25 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://globalnerdy.com/2007/10/22/the-language-adoption-debate-and-three-stooges-syndrome/</guid>
		<description><![CDATA[Tim &#8220;Ongoing&#8221; Bray&#8217;s Take Tim Bray posted a blog entry on what drives adoption of a language in which he included some tables such as the only below: Flawed Founders Polished Successors Procedural FORTRAN, COBOL, PL/1 C Object-Oriented C++ Java Higher-Level Perl, TCL Python, Ruby This table of his should inspire a monkey knife fight [...]]]></description>
			<content:encoded><![CDATA[<p></p><h3>Tim &#8220;<cite>Ongoing</cite>&#8221; Bray&#8217;s Take</h3>
<p><a href="http://www.tbray.org/ongoing/When/200x/2007/10/21/On-Languages"><strong>Tim Bray posted a blog entry on what drives adoption of a language</strong></a> in which he included some tables such as the only below:</p>
<blockquote><table>
<tr>
<th></th>
<th>Flawed<br />
Founders</th>
<th>Polished<br />
Successors</th>
</tr>
<tr>
<th>Procedural</th>
<td>FORTRAN, COBOL, PL/1</td>
<td>C</td>
</tr>
<tr>
<th>Object-Oriented</th>
<td>C++</td>
<td>Java</td>
</tr>
<tr>
<th>Higher-Level</th>
<td>Perl, TCL</td>
<td>Python, Ruby</td>
</tr>
</table>
</blockquote>
<p>This table of his should inspire a monkey knife fight on a number of blogs:</p>
<blockquote><table>
<tr>
<th></th>
<th>Flawed<br />
Founders</th>
<th>Polished<br />
Successors</th>
</tr>
<tr>
<th>Web-Centric</th>
<td>WebObjects, ColdFusion, ASP.Net, Struts, etc.,<br />
etc., etc., PHP</td>
<td>Rails</td>
</tr>
</table>
</blockquote>
<p>Here&#8217;s an interesting one. What will JavaScript&#8217;s successor be? My guess for the short-term (by that, I mean &#8220;the next half-dozen or so years&#8221;) is &#8220;the next version of JavaScript&#8221;.</p>
<blockquote><table>
<tr>
<th></th>
<th>Flawed<br />
Founders</th>
<th>Polished<br />
Successors</th>
</tr>
<tr>
<th>Mobile-Code</th>
<td>JavaScript</td>
<td>?</td>
</tr>
</table>
</blockquote>
<p>The one about concurrent programming is a little more up in the air. Although there are other languages designed with concurrent programming in mind (either from the ground up or with concurrency retrofitted onto an existing language) and there have been for a while (I used <a href="http://www.silicon-press.com/books/isbn.0-929306-00-7/index.html">Concurrent C</a> in a course back at <a href="http://queensu.ca/">Crazy Go Nuts University</a> in the early &#8217;90s), Erlang is getting a lot of the attention these days since it has both <a href="http://www.ericsson.com/technology/opensource/erlang/index.shtml">a success story at Ericsson under its belt</a> as well the clout of <a href="http://www.pragprog.com/titles/jaerlang">a Pragmatic Programmers book</a> behind it. There is a feeling among some programmers (<a href="http://www.tbray.org/ongoing/When/200x/2007/09/21/Erlang">Bray</a> <a href="http://www.tbray.org/ongoing/When/200x/2007/09/22/Erlang">included</a>) that it isn&#8217;t going to be the language to turn concurrent programming from arcane art into mainstream practice:</p>
<blockquote><table>
<tr>
<th></th>
<th>Flawed<br />
Founders</th>
<th>Polished<br />
Successors</th>
</tr>
<tr>
<th>Concurrent</th>
<td>Erlang</td>
<td>?</td>
</tr>
</table>
</blockquote>
<h3>Shelley &#8220;<cite>BurningBird</cite>&#8221; Powers&#8217; Take</h3>
<p>Shelley Powers disagreed with Tim&#8217;s assessments in her posts <a href="http://burningbird.net/technology/flaws-are-in-the-eye-of-the-beholder/"><strong><cite>Flaws are in the Eye of the Beholder</cite></strong></a>:</p>
<blockquote><p>
I find it fascinating when a person marks as &#8216;flawed&#8217; the languages that have, literally, defined not only the web but application development of all forms. Perhaps the metric shouldn&#8217;t be on syntax, form, or function, but on usability.
</p></blockquote>
<p>Here&#8217;s her own table on languages:</p>
<blockquote><table>
<tr>
<th></th>
<th>&#039;Perfect&#039;, but barely used</th>
<th>&#039;Flawed&#039;, but simple, approachable, powerful, <em>popular</em>
</th>
</tr>
<tr>
<th>Higher-Level</th>
<td>*Ruby (every time I see &#039;Ruby&#039; I mentally add, <em>Mama&#039;s precious little&#8230;)</em></p>
<p>*I&#8217;m giving Python a slide because Python has fairly widespread use today.</td>
<td>Perl</td>
</tr>
<tr>
<th>Client side code</th>
<td>(The to-be-created scripting language that will take a nice, clean, easy to use language and morph it until it satisfies the purists, while breaking faith with the millions of users just trying to do a job)</td>
<td>JavaScript</td>
</tr>
<tr>
<th>Object Oriented</th>
<td>Java (bloated beyond recognition with senseless additions and overly complex infrastructures)</td>
<td>C++ (which can kick Java&#039;s ass performance and resource wise)</td>
</tr>
<tr>
<th>Web-Centric</th>
<td>Rails (you know that thing they used for the one application?)</td>
<td>Cold Fusion, ASP and ASP.NET, PHP</td>
</tr>
</table>
</blockquote>
<p>Those of you who recall Bjarne &#8220;C++&#8221; Stroustrup&#8217;s line <a href="http://www.technologyreview.com/Infotech/17831/page3/">&#8220;There are just two kinds of languages: the ones everybody complains about and the ones nobody uses&#8221;</a> or the essay <a href="http://www.dreamsongs.com/WorseIsBetter.html"><cite>Worse is Better</cite></a> (or <a href="http://www.dreamsongs.com/WIB.html">the essay that led to it</a> or <a href="http://www.jwz.org/doc/worse-is-better.html">Jamie Zawinski&#8217;s commentary on it</a>) should be feeling <em>deja vu</em> now.</p>
<p>As for Shelley&#8217;s table, I&#8217;d probably have put &#8220;PHP&#8221; where &#8220;Perl&#8221; is right now.</p>
<h3>My Own Take</h3>
<p>I think that right now, the &#8220;scripting languages&#8221; are stuck in something akin to &#8220;Three Stooges Syndrome&#8221;. That&#8217;s the disease where Mr. Burns from <cite>The Simpsons</cite>, being so old and frail, has so many diseases trying to get at him at the same time that they&#8217;re all &#8220;stuck in the door&#8221;. The doctors illustrated the syndrome with a model, shown below:</p>
<p style="text-align:center;"><img src='http://globalnerdy.com/wordpress/wp-content/uploads/2007/10/3_stooges_syndrome.jpg' alt='“Three stooges syndrome” from “The Simpsons”: All the germs and viruses are stuck in the door because they tried to get in all at once.' width="320" height="240" /></p>
<p>And since Tim and Shelley have their tables, I thought I&#8217;d make one too:</p>
<table>
<tr>
<th>Scripting Stooge</th>
<th>What&#8217;s Driving It</th>
</tr>
<tr>
<td><strong>Perl</strong></td>
<td>Legacy: it was the original &#8220;duct tape of the internet&#8221;.</td>
</tr>
<tr>
<td><strong>PHP</strong></td>
<td>Widespread adoption, drives a lot of apps, easy to program, easy to deploy.</td>
</tr>
<tr>
<td><strong>Python</strong></td>
<td>Very readable, one of the 4 languages approved for use at Google (the others being C++, Java and JavaScript, <a href="http://steve-yegge.blogspot.com/2007/06/rhino-on-rails.html">according to Steve Yegge</a>).</td>
</tr>
<tr>
<td><strong>Ruby</strong></td>
<td>Ruby on Rails, which is a very nice framework from the web app developer&#8217;s point of view. That and maybe the fact that <a href="http://www.loudthinking.com/">DHH</a> is rather photogenic (although PHPer-turned-Pythoner <a href="http://leahculver.com/">Leah Culver</a> could give him some competition).</td>
</tr>
</table>
<p><a href="http://services.tucows.com/developers/2007/10/22/the-language-adoption-debate-and-three-stooges-syndrome/"><br />
<img src="http://globalnerdy.com/wordpress/wp-content/uploads/2007/07/cross-posted-to-the-tucows-developer-blog.jpg" alt="Cross-posted to the Tucows Developer Blog." /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2007/10/22/the-language-adoption-debate-and-three-stooges-syndrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>23 Programming Languages Compared</title>
		<link>http://www.globalnerdy.com/2007/07/05/23-programming-languages-compared/</link>
		<comments>http://www.globalnerdy.com/2007/07/05/23-programming-languages-compared/#comments</comments>
		<pubDate>Thu, 05 Jul 2007 17:07:57 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://globalnerdy.com/2007/07/05/23-programming-languages-compared/</guid>
		<description><![CDATA[Possibly inspired by articles like Tim O&#8217;Reilly&#8217;s State of the Computer Book Market (here are parts one, two, three and four of the Q1 2007 edition of this series) posts on the O&#8217;Reilly Radar blog, Antonio Cangiano decided to do a little research of his own: Technical books are a topic that interest me a [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Possibly inspired by articles like Tim O&#8217;Reilly&#8217;s <cite>State of the Computer Book Market</cite> (here are parts <a href="http://radar.oreilly.com/archives/2007/05/state_of_the_co_6.html">one</a>, <a href="http://radar.oreilly.com/archives/2007/05/state_of_the_co_7.html">two</a>, <a href="http://radar.oreilly.com/archives/2007/05/state_of_the_co_8.html">three</a> and <a href="http://radar.oreilly.com/archives/2007/05/state_of_the_co_10.html">four</a> of the Q1 2007 edition of this series) posts on the <a href="http://radar.oreilly.com/"><cite>O&#8217;Reilly Radar</cite></a> blog, <a href="http://antoniocangiano.com/articles/2007/07/05/23-programming-languages-compared-through-their-amazon-book-sales"><strong>Antonio Cangiano decided to do a little research of his own:</strong></a></p>
<blockquote><p>
Technical books are a topic that interest me a lot. From book sale figures and trends we can attempt to better understand where developers are putting their money, not only their mouths. For this article I decided to perform a small experiment, by collecting some interesting data. I considered 23 fairly well known programming languages, and searched for the top selling book (according to Amazon) for each of them. The Amazon sales rank allows us to compare the success of books representative of each language, and indirectly compare the popularity of the languages themselves.
</p></blockquote>
<h3>The Top Ranking Languages</h3>
<p>According to Antonio&#8217;s research, here are the best-selling programming language books are for these languages, listed starting with the best seller:</p>
<p style="text-align:center;"><img src='http://services.tucows.com/developers/wp-content/uploads/2007/07/top-4-programming-language-books.jpg' alt='Top 4 programming language books at Amazon: JavaScript, Java, Ruby and SQL' width="600" height="270" /></p>
<ol>
<li>JavaScript (<a href="http://www.amazon.com/gp/product/0596101996?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0596101996"><cite>JavaScript: The Definitive Guide</cite></a>, Amazon rank 1,227)</li>
<li>Java (<a href="http://www.amazon.com/gp/product/0596009208?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0596009208"><cite>Head First Java</cite></a>, Amazon rank 1,799)</li>
<li>Ruby (<a href="http://www.amazon.com/gp/product/0974514055?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0974514055"><cite>Programming Ruby: The Pragmatic Programmers&#8217; Guide</cite></a>, Amazon rank 1,881)</li>
<li>SQL (<a href="http://www.amazon.com/gp/product/0672325675?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0672325675"><cite>Sams Teach Yourself SQL in 10 Minutes</cite></a>, Amazon rank 1,929)</li>
</ol>
<p>To see the top 23 programming languages based on Amazon ranking, <a href="http://antoniocangiano.com/articles/2007/07/05/23-programming-languages-compared-through-their-amazon-book-sales"><strong>go visit Antonio&#8217;s blog entry</strong></a>.</p>
<p>A commenter on the article wrote:</p>
<blockquote><p>
Actionscript would rank even higher than JavaScript, since the book <a href="http://www.amazon.com/Essential-ActionScript-3-0-Colin-Moock/dp/0596526946"><cite>Essential ActionScript 3.0</cite></a> by Colin Moock currently is at sales rank #346.
</p></blockquote>
<h3>Interesting Languages</h3>
<p>There are some interesting languages on this list. Although they get mentioned on <cite>Reddit</cite> and a number of developer blogs, they&#8217;re not quite mainstream yet. In spite of that, they&#8217;ve placed quite well based on Amazon&#8217;s ranking system:</p>
<p style="text-align:center;"><img src='http://services.tucows.com/developers/wp-content/uploads/2007/07/interesting-4-programming-language-books.jpg' alt='An interesting set of language books: Erlang, F#, Lua and Haskell' width="600" height="270" /></p>
<ul>
<li>Erlang (<a href="http://www.amazon.com/gp/product/193435600X?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=193435600X"><cite>Programming Erlang: Software for a Concurrent World</cite></a>, #12 on the list, Amazon rank 8,609)</li>
<li>F# (<a href="http://www.amazon.com/gp/product/1590597575?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1590597575"><cite>Foundations of F#</cite></a>, #15 on the list, Amazon rank 21,273)</li>
<li>Lua (<a href="http://www.amazon.com/gp/product/8590379825?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=8590379825"><cite>Programming in Lua</cite></a>, #16 on the list, Amazon rank 23,052)</li>
<li>Haskell (<a href="http://www.amazon.com/gp/product/0954300696?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0954300696"><cite>The Haskell Road to Logic, Maths and Programming</cite></a>, #18 on the list, Amazon rank 1,929)</li>
</ul>
<p>[<a href="http://services.tucows.com/developers/2007/07/05/23-programming-languages-compared/">Cross-posted</a> to the <a href="http://services.tucows.com/developers/"><cite>Tucows Developer Blog</cite></a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2007/07/05/23-programming-languages-compared/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

