<?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>Ajaxian &#187; Presentation</title>
	<atom:link href="http://ajaxian.com/by/topic/presentation/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaxian.com</link>
	<description>Cleaning up the web with Ajax</description>
	<lastBuildDate>Tue, 22 May 2012 21:45:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
    	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>3D Slides Built with HTML5, CSS3, and SVG</title>
		<link>http://ajaxian.com/archives/3d-slides-built-with-html5-css3-and-svg</link>
		<comments>http://ajaxian.com/archives/3d-slides-built-with-html5-css3-and-svg#comments</comments>
		<pubDate>Wed, 06 Oct 2010 06:00:17 +0000</pubDate>
		<dc:creator>Brad Neuberg</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=10409</guid>
		<description><![CDATA[Over on my personal blog I talk about a 3D slide deck I&#8217;ve created that uses HTML5, CSS3, and a bit of SVG (video). The main idea behind this deck is to be able to &#8216;zoom&#8217; into topics to as deep a level as necessary. Slides are nested, like an outline. For example, I gave <a href="http://ajaxian.com/archives/3d-slides-built-with-html5-css3-and-svg">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><center><iframe src="http://player.vimeo.com/video/15573974" width="400" height="300" frameborder="0"></iframe></center></p>
<p><a href="http://blog.codinginparadise.org/2010/10/3d-slides-built-with-html5-css3-and-svg.html">Over on my personal blog</a> I talk about a 3D slide deck I&#8217;ve created that uses HTML5, CSS3, and a bit of SVG (<a href="ttp://vimeo.com/15573974">video</a>). The main idea behind this deck is to be able to &#8216;zoom&#8217; into topics to as deep a level as necessary. Slides are nested, like an outline.</p>
<p>For example, I gave a talk at Future of Web Apps recently on HTML5, CSS3, and other web technologies and only had 40 minutes, so I just skimmed the surface of the slides. However, in a few days I&#8217;ll be speaking at Fronteers and will be diving deep into SVG and Canvas, so those slides can be zoomed into. The goal is for me to have a universal slide deck that can &#8216;accordian&#8217; open and closed to fill either a 40 minute session or an all day workshop, kind of like stretchtext.</p>
<p><a href="http://blog.codinginparadise.org/2010/10/3d-slides-built-with-html5-css3-and-svg.html">Read more to learn</a> about the 3D slide deck and how I built it.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/3d-slides-built-with-html5-css3-and-svg/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Free talk at Yahoo on the 27th about the software revolution that is JavaScript</title>
		<link>http://ajaxian.com/archives/free-talk-at-yahoo-on-the-27th-about-the-software-revolution-that-is-javascript</link>
		<comments>http://ajaxian.com/archives/free-talk-at-yahoo-on-the-27th-about-the-software-revolution-that-is-javascript#comments</comments>
		<pubDate>Wed, 11 Aug 2010 08:42:00 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=9908</guid>
		<description><![CDATA[Yahoo invites to their campus in Sunnyvale, California on the 27th of August to hear Douglas Crockford talk about &#8220;Loopage&#8221;. In his own words: Software development is hampered by a specific set of design mistakes that were made in the first programming languages and repeated in everything that has been done since. And, somewhat miraculously, <a href="http://ajaxian.com/archives/free-talk-at-yahoo-on-the-27th-about-the-software-revolution-that-is-javascript">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Yahoo invites to their campus in Sunnyvale, California on the 27th of August to hear Douglas Crockford talk about &#8220;Loopage&#8221;. </p>
<p><a href="http://www.flickr.com/photos/equanimity/4879036375/in/contacts/"><img src="http://farm5.static.flickr.com/4077/4879036375_4067be407d_m.jpg" alt="Douglas with a Slinky by photo"/></a></p>
<p>In his own words:</p>
<blockquote><p>Software development is hampered by a specific set of design mistakes that were made in the first programming languages and repeated in everything that has been done since. And, somewhat miraculously, JavaScript is going to make it right, radically transforming the way we write applications. Again. In the Loop of History, it has all happened before, but it has never happened like this. This is why you should care about the emergence of server-side JavaScript and the excitement around projects like Node.js &#8212; not because they&#8217;re at the sharp end of a trend, but because they&#8217;re paving the road toward the next big revolution in software.</p></blockquote>
<p>You can <a href="http://www.meetup.com/BayJax/calendar/14371278/?from=list&#038;offset=0">sign up for your free ticket on Meetup</a> and there are still a few places left. As with all the BayJax talks the video will be available later on, too.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/free-talk-at-yahoo-on-the-27th-about-the-software-revolution-that-is-javascript/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>It&#8217;s Friday. Take the time to learn the Web with a splash of French, German, and Irish</title>
		<link>http://ajaxian.com/archives/its-friday-take-the-time-to-learn-the-web-with-a-splash-of-french-german-and-irish</link>
		<comments>http://ajaxian.com/archives/its-friday-take-the-time-to-learn-the-web-with-a-splash-of-french-german-and-irish#comments</comments>
		<pubDate>Fri, 16 Jul 2010 17:34:34 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=9824</guid>
		<description><![CDATA[The week has been long. Much code has been written. There is much more to do, but Friday is for relaxing a little. Take some time, sit back and watch, as three fantastic videos are available for you: French: Paul Rouget of Mozilla, shows you the future Paul builds the best demos. ever. At the <a href="http://ajaxian.com/archives/its-friday-take-the-time-to-learn-the-web-with-a-splash-of-french-german-and-irish">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>The week has been long. Much code has been written. There is much more to do, but Friday is for relaxing a little. Take some time, sit back and watch, as three fantastic videos are available for you:</p>
<p><strong>French: Paul Rouget of Mozilla, shows you the future</strong></p>
<p>Paul builds the best demos. ever. At the Mozilla Summit in Whistler, he shows off what you can do when you remix HTML5, CSS3, SVG, WebGL, and WebSockets. A must see.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/-BsB0HpS768&amp;hl=en_US&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/-BsB0HpS768&amp;hl=en_US&amp;fs=1" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
<p><strong>German: Building an awesome social HTML5 engine</strong></p>
<p>Paul Bakaus of Dextrose (and jQuery UI fame) recently launched the Aves Engine, a social gaming engine in pure HTML! Dextrose also joined forces with Effect Games to bolster its Web gaming might. Paul gave a talk at Google explaining the technology, and it just went live:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/_RRnyChxijA&amp;hl=en_US&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/_RRnyChxijA&amp;hl=en_US&amp;fs=1" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
<p><strong>&#8220;Irish&#8221;: Paul shows you jQuery c0de</strong></p>
<p>Ok, Irish by name, and maybe a touch by nature&#8230;. but not by nationality. Paul Irish has been doing an amazing talk at conferences where he walks through the jQuery source code to teach you fun and frolics of JavaScript. He picked up ScreenFlow and did it again to reach you all. Paul is a gem in our community, and at 52 minutes&#8230;. you will still want more:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/i_qE1iAmjFg&amp;hl=en_US&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/i_qE1iAmjFg&amp;hl=en_US&amp;fs=1" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
<p>Have a great weekend!</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/its-friday-take-the-time-to-learn-the-web-with-a-splash-of-french-german-and-irish/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The Best of Steve: Performance at JSConf</title>
		<link>http://ajaxian.com/archives/the-best-of-steve-performance-at-jsconf</link>
		<comments>http://ajaxian.com/archives/the-best-of-steve-performance-at-jsconf#comments</comments>
		<pubDate>Sun, 18 Apr 2010 19:54:18 +0000</pubDate>
		<dc:creator>Michael Mahemoff</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=9047</guid>
		<description><![CDATA[(Live blogging notes.) At JSConf, Steve Souders walks us through several performance-optimising things on his mind lately. Site Speed in PageRank A week ago, Google announced site speed is going to be taken into account for PageRank. For Steve, this is a dream come true. Now companies are going to start investing in performance, so <a href="http://ajaxian.com/archives/the-best-of-steve-performance-at-jsconf">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://ajaxian.com/wp-content/images/steve_book_large.jpg" alt="steve_book_large" title="steve_book_large" width="140" height="185" class="alignnone size-full wp-image-9046" /></p>
<p>(Live blogging notes.)</p>
<p>At JSConf, <a href="http://stevesouders.com/">Steve Souders</a> walks us through several performance-optimising things on his mind lately.</p>
<h3>Site Speed in PageRank</h3>
<p>A week ago, Google announced site speed is going to be taken into account for PageRank. For Steve, this is a dream come true. Now companies are going to start investing in performance, so less of those slow-loading sites that frustrated him enough to get started down this performance path. One of the criticisms is that this will favour big companies, but Steve points out that smaller companies are often more nimble and able to adapt to changes like this.</p>
<p>As part of Google's webmaster tools, site performance is shown to respective site masters, along with some guidance. Another good resource is <a href="http://www.webpagetest.org/">http://www.webpagetest.org/</a>. Other than its main measurement service, a great feature of WebPageTest is side-by-side comparisons. Show your manager a side-by-side against a competitor for guaranteed satisfaction.</p>
<h3>Performance of Third Party Widgets</h3>
<p>There's been something of a reversal in performance hotspots. Five years ago, it was the core application code that was mostly slowing things down, much as teams would like to blame performance problem on 3rd party ads. Nowadays, those apps have been more finely tuned, and at the same time, people are using more 3rd party stuff - not just ads, but embedded widgets. All of which explains why Steve's been looking at third-party widgets lately. You can see what he's been up to at <a href="http://www.stevesouders.com/p3pc/">P3PC</a>, a benchmark tool for third-party widgets.</p>
<p>A key question is how are the widgets embedded? People are no longer just doing the blocking document.write calls. Instead, it's much more common to dynamically create a script tag and append to the page.  But where and how do you append it? jQuery's library code, for example, does it in a simple, elegant, manner:</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;">var</span> head = document.<span style="color: #006600;">getElementsByTagName</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"head"</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span> || document.<span style="color: #006600;">documentElement</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; script = document.<span style="color: #006600;">createElement</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"script"</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;">...</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;">head</span>.<span style="color: #006600;">insertBefore</span><span style="color:#006600; font-weight:bold;">&#40;</span>script, head.<span style="color: #006600;">firstChild</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>Others, not so much. See Steve's recent blog posts for more analysis on these techniques (<a href="http://www.stevesouders.com/blog/2010/03/03/p3pc-google-analytics/">e.g. on Google Analytics</a>).</p>
<h3>Frag Tag</h3>
<p>An <a href="http://www.stevesouders.com/blog/2010/02/15/browser-performance-wishlist/#download_scripts">early proposal</a> from Steve and Alex Russell ...</p>
<pre>
&lt;FRAG&gt;
&lt;script src="snippet.js"&gt;&lt;/script&gt;
&lt;/FRAG&gt;
</pre>
<p>The idea is that the frag loads independently; even document.write doesn't block. And it could go further, into a sandboxing mechanism. "If we had this frag tag, it would be one of the biggest things website owners could do to improve the performance of their pages."</p>
<h3>Browser Disk Cache</h3>
<p>The main message here is that browser disk cache is too small, and he's been talking to vendors about upping capacity. <a href="http://stevesouders.com/cache.php">And there's a survey for you</a>.</p>
<h3>What makes sites feel slow?</h3>
<p>So lately Steve's been going back to basics and looking at user perception, thinking not just about how fast the Javascript takes to load, but how fast till the user sees anything. So he's promoting the standard progressive enhancement pattern, similar to <a href="http://ajaxian.com/archives/facebook-javascript-jsconf">Facebook's earlier talk</a>:</p>
<p>* Deliver HTML<br />
* Defer JS<br />
* Avoid DOM<br />
* Decorate later.</p>
<p>He's done a couple of studies to this end:</p>
<p>* Charting page load time - as the user actually sees it - against market share...in an attempt to show faster sites mean bigger market share.<br />
* Looking at initiail payload versus execution. Many of the sample (highly popular) sites are serving many functions on initial payload, which could be deferred until later - putting scripts at the bottom of the page, and loading scripts asynchronously.</p>
<h3>Other Stuff</h3>
<p>Check out:</p>
<p>* <a href="http://www.browserscope.org/">Browserscope</a>, "a community-driven project for profiling web browsers".</p>
<p>* HTTP Archive Format (HAR). An industry standard for capturing Used in an increasing number of tools, e.g. NetExport plugin in Firebug.</p>
<p>* <a href="http://en.oreilly.com/velocity2010">Velocity Conference</a>, which Steve founded with O'Reilly. June 22-24, Santa Clara.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/the-best-of-steve-performance-at-jsconf/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Best HTML5 Slides Ever</title>
		<link>http://ajaxian.com/archives/the-best-html5-slides-ever</link>
		<comments>http://ajaxian.com/archives/the-best-html5-slides-ever#comments</comments>
		<pubDate>Sat, 17 Apr 2010 13:38:22 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=9002</guid>
		<description><![CDATA[@edr is the man. He did amazing things at Yahoo! and now at his new role at Google he continues in the same vein. This time he has created the coolest set of HTML5 slides ever, using the technology inline. Take a walk through the woods and learn about all things HTML5. Starting with the <a href="http://ajaxian.com/archives/the-best-html5-slides-ever">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://ajaxian.com/wp-content/images/csstransformsslide.png" alt="csstransformsslide" title="csstransformsslide" width="520" height="283" class="alignnone size-full wp-image-9003"/></p>
<p><a href="http://twitter.com/edr">@edr is the man</a>. He did amazing things at Yahoo! and now at his new role at Google he continues in the same vein. This time he has created the coolest set of <a href="http://apirocks.com/html5/html5.html">HTML5 slides ever</a>, using the technology inline.</p>
<p>Take a walk through the woods and learn about all things HTML5. Starting with the JS APIS (selector API, storage, appcache, web workers,  web sockets, notifications, drag and drop, and geolocation). </p>
<p>Then delve into the new HTML semantic tags, link relations, micro data, ARIA, forms, audio and video, Canvas, and WebGL.</p>
<p>Finally, the holy trinity finishes with CSS and selectors, fonts, text, columns, stroking, opacity, HSL, rounded corners, gradients, shadows, backgrounds, transitions, transforms, and animations.</p>
<p>Top draw Ernest. Top draw (he based his work on a presentation from Marcin Wichary).</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/the-best-html5-slides-ever/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>I Can&#8217;t Believe It&#8217;s Not Flash</title>
		<link>http://ajaxian.com/archives/i-cant-believe-its-not-flash</link>
		<comments>http://ajaxian.com/archives/i-cant-believe-its-not-flash#comments</comments>
		<pubDate>Fri, 19 Feb 2010 05:46:33 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=8623</guid>
		<description><![CDATA[Thomas Fuchs gave a presentation titled "I Can't Believe It's Not Flash" at WebStock. It is often hard to grasp a presentation from slides, but this one is great fun to flip through. This one really hits home: We were surprised to see how JavaScript was NOT the bottleneck in Bespin when we first prototyped <a href="http://ajaxian.com/archives/i-cant-believe-its-not-flash">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=icantbelieveitsnotflash-100218195851-phpapp01&#038;stripped_title=i-cant-believe-its-not-flash" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=icantbelieveitsnotflash-100218195851-phpapp01&#038;stripped_title=i-cant-believe-its-not-flash" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p>
<p>Thomas Fuchs gave a presentation titled "I Can't Believe It's Not Flash" at WebStock. It is often hard to grasp a presentation from slides, but this one is great fun to flip through.</p>
<p>This one really hits home:</p>
<p><img src="http://ajaxian.com/wp-content/images/performancehit.png" alt="performancehit" title="performancehit" width="468" height="349" class="alignnone size-full wp-image-8624"/></p>
<p>We were surprised to see how JavaScript was NOT the bottleneck in Bespin when we first prototyped it.</p>
<p>And, this is Thomas, so you know he is going to be cheeky.... and he doesn't dissapoint ;)</p>
<p><img src="http://ajaxian.com/wp-content/images/flashhtml5video.png" alt="flashhtml5video" title="flashhtml5video" width="504" height="377" class="alignnone size-full wp-image-8625"/></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/i-cant-believe-its-not-flash/feed</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
		<item>
		<title>Crockford on JavaScript: A Public Lecture Series at Yahoo!</title>
		<link>http://ajaxian.com/archives/crockford-on-javascript-a-public-lecture-series-at-yahoo</link>
		<comments>http://ajaxian.com/archives/crockford-on-javascript-a-public-lecture-series-at-yahoo#comments</comments>
		<pubDate>Tue, 05 Jan 2010 11:45:10 +0000</pubDate>
		<dc:creator>Brad Neuberg</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=8388</guid>
		<description><![CDATA[Douglas Crockford showed us how JavaScript (or parts of it) could be used to do real software engineering. Now Crockford and Yahoo! are hosting a cool series of public lectures on the language we all love: Douglas Crockford is Yahoo!'s JavaScript architect and a member of the committee designing future versions of the world's most <a href="http://ajaxian.com/archives/crockford-on-javascript-a-public-lecture-series-at-yahoo">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-8389" title="crockford_on_js" src="http://ajaxian.com/wp-content/images/crockford_on_js.jpg" alt="crockford_on_js" width="500" height="375" /><a href="http://www.crockford.com/">Douglas Crockford</a> <a href="http://javascript.crockford.com/javascript.html">showed us how</a> JavaScript (or <a href="http://www.amazon.com/exec/obidos/ASIN/0596517742/wrrrldwideweb">parts of it</a>) could be used to do real software engineering. Now Crockford and Yahoo! are <a href="http://yuiblog.com/crockford/">hosting a cool series of public lectures</a> on the language we all love:</p>
<blockquote><p><a title="Douglas Crockford's Wrrrld Wide Web" href="http://www.crockford.com/">Douglas Crockford</a> is Yahoo!'s JavaScript architect and a member of the committee designing future versions of the world's most popular programming language. In the first three months of 2010, Douglas will be delivering his acclaimed series of lectures on the history of JavaScript, its features, and its use.</p>
<ol>
<li>Monday, January 25: <strong>History of JavaScript</strong> (<a href="http://crockford-history.eventbrite.com/">RSVP</a>)</li>
<li>Friday, February 5: <strong>Survey of the JavaScript Language</strong> (<a href="http://crockford-survey.eventbrite.com/">RSVP</a>)</li>
<li>Wednesday, February 17: <strong>Functions and Inheritance in JavaScript</strong> (<a href="http://crockford-inheritance.eventbrite.com/">RSVP</a>)</li>
<li>Wednesday, March 3: <strong>JavaScript and the DOM</strong> (<a href="http://crockford-dom.eventbrite.com/">RSVP</a>)</li>
<li>Wednesday, March 31: <strong>Style and Performance in JavaScript</strong> (<a href="http://crockford-style.eventbrite.com/">RSVP</a>)</li>
</ol>
<p>Lectures will be held in URLs Café, Building C, on <a title="Yahoo! Maps, Driving Directions, and Traffic" href="http://bit.ly/638q8S">Yahoo's main campus in Sunnyvale, CA</a>. Doors open at 5:30 p.m.; lectures begin at 6 p.m. Pizza and refreshments will be served. Attendance is free, but seating is limited; <strong>RSVP is required for admittance</strong>.</p></blockquote>
<p>I can't wait!</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/crockford-on-javascript-a-public-lecture-series-at-yahoo/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Full Frontal &#8217;09: Stuart Langridge on HTML5 Features</title>
		<link>http://ajaxian.com/archives/full-frontal-09-stuart-langridge-on-html5-features</link>
		<comments>http://ajaxian.com/archives/full-frontal-09-stuart-langridge-on-html5-features#comments</comments>
		<pubDate>Fri, 20 Nov 2009 15:52:24 +0000</pubDate>
		<dc:creator>Michael Mahemoff</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7972</guid>
		<description><![CDATA[Stuart Langridge introduces us to some of the up-and-coming features we're getting with current and future browsers, a nice complement to Robert Nyman's talk, which covered the advanced features of "mainstream" (IE6-compatible) Javascript. After introducing the features that are there today, he also talks about how we can deal with the browser many of us <a href="http://ajaxian.com/archives/full-frontal-09-stuart-langridge-on-html5-features">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Stuart Langridge introduces us to some of the up-and-coming features we're getting with current and future browsers, a nice complement to Robert Nyman's talk, which covered the advanced features of "mainstream" (IE6-compatible) Javascript. After introducing the features that are there today, he also talks about how we can deal with the browser many of us are still having to support.</p>
<h3>The Goodies</h3>
<p>Here are some of the things we can look forward to. (Having been part of the large crowd who charged the pub across the road at lunch, I was a bit late getting back, so I missed one or two of these.)</p>
<h4>Lists</h4>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-7');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-7">
<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;">&#91;</span><span style="color:#800000;">1</span>,<span style="color:#800000;">2</span>,<span style="color:#800000;">3</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color: #006600;">every</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;">&#41;</span> <span style="color: #009900; font-style: italic;">// run for all items</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;">list.<span style="color: #006600;">filter</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color: #009900; font-style: italic;">// find elements in the list that pass the function</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">list.<span style="color: #006600;">map</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color: #009900; font-style: italic;">// apply function to each item</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>It takes a mental shift to start taking advantage of features like this. "Certain browsers" *cough* don't yet provide these conveniences, but you can take advantage of them straight away. Or another example is the base2 library - use it now and you'll be ready for the time when it's present in all browsers.</p>
<h4>Getters and Setters</h4>
<p>As our Javascript apps get increasingly bigger and more complex, we need to borrow principles, patterns, and techniques from "real programming". Getters and setters are the kind of thing we'll need more of. More generally, we'll need to be in the mindset that we're building APIs to components, which others might use; not just an individual making a one-off web app. Stuart shows a couple of techniques for getters and setters: (a) manually defined; (b) using </p>
<h4>Storage</h4>
<p>We can now do global storage - <tt>globalStorage</tt> works similarly to cookies. "Like cookies turned up to 11".</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-8');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-8">
<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;">&nbsp; globalStorage<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #3366CC;">"kryogenix.org"</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color: #006600;">visits</span> = visits+<span style="color:#800000;">1</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>He notes that like XHR, Microsoft did it a long time ago with <tt>userdata</tt>.</p>
<p>There is also the possibility of SQL and a consistent database API, somewhat supported today but not yet standardised.</p>
<h4>Server-Sent Events</h4>
<div class="igBar"><a href="javascript:showCodeTxt('html-9');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span>
<div id="html-9">
<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;">&lt;event -source <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"getTime.php"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></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>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-10');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-10">
<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;">getElementsByTagName</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"event-source"</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color: #006600;">addEventListener</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"server-time"</span>, eventHandler, <span style="color: #003366; font-weight: bold;">false</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: #003366; font-weight: bold;">function</span> eventHandler<span style="color:#006600; font-weight:bold;">&#40;</span>event<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000066;">alert</span><span style="color:#006600; font-weight:bold;">&#40;</span>event.<span style="color: #006600;">data</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></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>Only in Opera right now.</p>
<h3>Great. So Do We, Can We, Use it Now or Later?</h3>
<p>You can use these features now if you're in a single-browser environment that supports them: app for one mobile; Air app; intranet app (where you've amazingly got Firefox exlcusively on your intranet); HTA. This isn't the sinful act of coding to weird proprietary APIs; it's coding to browsers that happen to support the technologies of tomorrow, today.</p>
<p>The libraries help us get to the future today, as long as they can support APIs compatibly across all the browsers. But it's all a little difficult when the market leader doesn't play ball. Hopefully, Dean Edwards will continue working on Base2 to plug the gaps, but we still have the problem. Around a year ago, it felt like the anti-IE6 might be at a tipping point, but that's died down a bit, and it's not clear how much longer we'll be held back.</p>
<p>What can you do then with IE6? If a number of major websites really held back and stopped supporting IE6, Stuart reckons corporations would upgrade. Imagine what would happen if Google stopped working on IE6...immediate upgrades. Show of hands indicates perhaps 20% of the audience would agree to mass dropping IE6 on their public sites. In Q&#038;A, Stuart later clarifies he's not really proposing an IE6 shutdown switch, more like a helpful suggestion to upgrade.</p>
<p>Silverlight and Flash. Proprietary, not open. If everyone started using Flash, the future is Adobe's future. Let's make it our future instead - we're building the open web. A call to arms for showing strength in numbers.<br />
</event></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/full-frontal-09-stuart-langridge-on-html5-features/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Full Frontal &#8217;09: Robert Nyman on the Javascript Language</title>
		<link>http://ajaxian.com/archives/full-frontal-09-robert-nyman-on-the-javascript-language</link>
		<comments>http://ajaxian.com/archives/full-frontal-09-robert-nyman-on-the-javascript-language#comments</comments>
		<pubDate>Fri, 20 Nov 2009 12:06:32 +0000</pubDate>
		<dc:creator>Michael Mahemoff</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7964</guid>
		<description><![CDATA[Robert Nyman walks through some of the more subtle low-level features of Javascript, and some of the idioms that have emerged. Comparisons: Understanding identity (===) versus equality (==). Boolean expressions: Understanding how short-circuit logic (if a &#038;&#038; b won't eval b if a is false); Types: Type coercion ("1"+2+3); "falsey" (false, null, 0) versus "truthy"; <a href="http://ajaxian.com/archives/full-frontal-09-robert-nyman-on-the-javascript-language">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Robert Nyman walks through some of the more subtle low-level features of Javascript, and some of the idioms that have emerged.</p>
<p>Comparisons: Understanding identity (===) versus equality (==).</p>
<p>Boolean expressions: Understanding how short-circuit logic (<tt>if a &#038;& b</tt> won't eval b if a is false);</p>
<p>Types: Type coercion ("1"+2+3); "falsey" (false, null, 0) versus "truthy"; the importance of using operators like parseInt and instanceof.</p>
<p>Functions: Anonymous functions; self-invoking functions - <tt>function() { })()</tt> ; using the <tt>arguments</tt> collection to get all arguments to the current function, important to note it's not a real array with all the array methods, and using arguments to overload arguments.</p>
<p>Objects: Using object literal notation { a:b, c:d } instead of setting up properties individually; equivalence of <tt>ben.arms</tt> and <tt>ben["arms"]</tt>, and how useful it can be to use the latter in conjunction with a function  argument, ie let the caller pass in a variable which will be set; using "in" to check if a property exists (<tt>if "arms" in ben</tt>).</p>
<p>Inheritance: Using the prototype chain for inheritance from subclass to superclasses up to Object. There are various implementations - e.g. Resig, Edward's Base, Dan Webb; if you understand these implementations, then you understand Javascript. However, Robert's arguing for the native way of doing it - as Doug Crockford says, "I now see my early attempts to support the classical model in Javascript as a mistake".</p>
<p>Global scope: Avoid using global scope where you can. For example, nesting functions. R<br />
obert later points to <a href="http://yuiblog.com/blog/2007/06/12/module-pattern/">the Yahoo! module pattern</a>.</p>
<p>Binding <tt>this</tt>: Using <tt>call</tt> and <tt>apply</tt>; these are useful for setting <tt>this</tt> and also can pass arguments through from the current function to another one without having to manually copy them out.</p>
<p>Sugaring: Adding syntax sugar, e.g. extending String.prototype.</p>
<p>Currying: As illustrated by Doug Crockford's <tt>curry</tt> implementation.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/full-frontal-09-robert-nyman-on-the-javascript-language/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>HTML5 Canvas FTW!</title>
		<link>http://ajaxian.com/archives/html5-canvas-ftw</link>
		<comments>http://ajaxian.com/archives/html5-canvas-ftw#comments</comments>
		<pubDate>Thu, 15 Oct 2009 11:30:01 +0000</pubDate>
		<dc:creator>Brad Neuberg</dc:creator>
				<category><![CDATA[Canvas]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7622</guid>
		<description><![CDATA[Dmitry Baranovskiy, of Raphaël fame (can't forget the umlauts), has posted an excellent presentation on the Canvas tag from Web Directions South ’09:]]></description>
			<content:encoded><![CDATA[<p><a href="http://dmitry.baranovskiy.com/">Dmitry Baranovskiy</a>, of <a href="http://raphaeljs.com/">Raphaël</a> fame (can't forget the <a href="http://en.wikipedia.org/wiki/Heavy_Metal_Umlaut">umlauts</a>), has <a href="http://www.slideshare.net/Dmitry.Baranovskiy/canvas-2195590">posted an excellent presentation</a> on the Canvas tag from Web Directions South ’09:</p>
<p style="text-align: center;"><object style="margin: 0px;" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=canvas-091012000634-phpapp01&amp;stripped_title=canvas-2195590" /><param name="allowfullscreen" value="true" /><embed style="margin: 0px;" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=canvas-091012000634-phpapp01&amp;stripped_title=canvas-2195590" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/html5-canvas-ftw/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Developer evangelism handbook released</title>
		<link>http://ajaxian.com/archives/developer-evangelism-handbook-released</link>
		<comments>http://ajaxian.com/archives/developer-evangelism-handbook-released#comments</comments>
		<pubDate>Tue, 28 Jul 2009 20:59:53 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[Workshop]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[evangelism]]></category>
		<category><![CDATA[handbook]]></category>
		<category><![CDATA[speaking]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7147</guid>
		<description><![CDATA[As developers, it can be hard to get your voice heard in a company. Whilst our products depend on developers building them the right way, other people seem to call the shots about where they are going. This becomes disastrous when a company tries to reach developers with their product. Normal marketing and PR stunts <a href="http://ajaxian.com/archives/developer-evangelism-handbook-released">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>As developers, it can be hard to get your voice heard in a company. Whilst our products depend on developers building them the right way, other people seem to call the shots about where they are going. </p>
<p>This becomes disastrous when a company tries to reach developers with their product. Normal marketing and PR stunts normally fail to get us excited. To work around this issue, clever companies allow developers to move into a role of developer evangelists. </p>
<blockquote><p>A developer evangelist is a spokesperson, mediator and translator between a company and both its technical staff and outside developers.</p></blockquote>
<p>This is my job at the moment, and I was asked by people I trained if there is a handbook about the skills needed to do this job, so I wrote one.</p>
<p>Check out the <a href="http://developer-evangelism.com">The Developer Evangelist handbook</a> </p>
<p>The handbook explains several things:</p>
<li>What developer evangelism is</li>
<li>What makes a good developer evangelist</li>
<li>How to write for the web</li>
<li>How to use social media and the web to promote content</li>
<li>How to deliver great presentations</li>
<li>How to deal with criticism of your company and what to do with the competition</li>
<li>How to write easy to understand and useful code examples</li>
<p>The handbook is Creative Commons and free to use. I am working on getting a printed version out, too.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/developer-evangelism-handbook-released/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Bespin Talk at Mozilla Labs Meetup</title>
		<link>http://ajaxian.com/archives/bespin-talk-at-mozilla-labs-meetup</link>
		<comments>http://ajaxian.com/archives/bespin-talk-at-mozilla-labs-meetup#comments</comments>
		<pubDate>Wed, 11 Mar 2009 11:34:42 +0000</pubDate>
		<dc:creator>Michael Mahemoff</dc:creator>
				<category><![CDATA[Bespin]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[Comet]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6287</guid>
		<description><![CDATA[I went along last night to the London Mozilla Labs meetup, where Dion, Ben, and Joe delivered a presentation on Bespin. These are my notes from the event. Goals Bespin - initially an experiment, now interested to see how far it can go as a coding environment (among other things). "The editor of our dreams": <a href="http://ajaxian.com/archives/bespin-talk-at-mozilla-labs-meetup">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://ajaxian.com/wp-content/uploads/bespin1.png" alt="" title="Bespin" width="470" height="192" class="alignnone size-full wp-image-6014" /></p>
<p>I went along last night to the London Mozilla Labs meetup, where Dion, Ben, and Joe delivered a presentation on <a href="https://bespin.mozilla.com/">Bespin</a>. These are my notes from the event.</p>
<h3>Goals</h3>
<p>Bespin - initially an experiment, now interested to see how far it can go as a coding environment (among other things).</p>
<p>"The editor of our dreams":</p>
<ul>
<li>Accessible from anywhere</li>
<li>Simple to use, like Textmate - for people who don't want to muck around with low-level details, too much time in version control</li>
<li>Wicked fast - many editors look okay initially but don't scale well with large files and fast editing</li>
<li>Rock-solid real-time collaboration - like SubEthaEdit - watch people in our time, e.g. follow someone like Brendan Eich as he codes (given that it's already open source). One of the meta-goals here is to lower the barriers for open-source development.</li>
<li>Integrated command-line, like Vi</li>
<li>"Self-hosted" environment - like Emacs. As a programmer, can get into its guts. And can do this kind of thing in real-time - modify the model as it runs (c.f. Eclipse - must re-compile)</li>
</ul>
<h3>Demo</h3>
<p>Dion demos interacting with the Bespin editor. (Always good to see how the creators eat their own dogfood.) Ben points out it's fast, thanks to Canvas. Some demos of the command-line, its extensibility, and collaboration features.</p>
<h3>Collaboration</h3>
<p>Moz hired Joe Walker of Comet/DWR fame a month ago. Joe explains collaboration goals.</p>
<p>Typical scenario - two coders working simultaneously, perhaps chatting over skype.</p>
<p>From Neil Fraser (worked on Google Docs stuff around this) - designed as a "little version control system" - sends out diffs and patches it (see <a href="http://code.google.com/p/google-mobwrite/">Mobwrite</a>. Bizzarely, the bottleneck is not the network or the patch, but the diff. And exarcebated by the fact that typing faster - doing more work - necessitates more diffing.</p>
<p>Joe shows debug messages in Firebug console - showing diff info going to and from the server</p>
<h3>Extra Features</h3>
<p>Code nav - heatmap showing all of code and what's been edited. recently. Example of a mashup component you can build.</p>
<p>e.g. IBM coder turned it into a Java compiler - by compiling the Java on the server. Used Bespin's server API. Likewise, the editor is also a distinct component - can use the editor for other (non-IDE) application - e.g. a wiki project using Bespin's editor to edit the wiki. Likewise, the command line is separate. And there's the underlying core, Thunderhead.</p>
<p>Ben further emphasises it's not just a rich client-side editor - server-side code analysis with the RESTful API.</p>
<h3>Upcoming Features</h3>
<p>Big things:</p>
<ul>
<li>Collaboration</li>
<li>VCS integration - integrate with Mercurial, etc etc</li>
<li>Ubiquity Integration</li>
<li>Server Side Javascript - can have different server implementations, could be Ruby etc, and want to implement one in JS</li>
</ul>
<p>Smaller:</p>
<ul>
<li>Some nice commands</li>
<li>Plan "follow me!"</li>
<li>Syntax highlighting</li>
<li>Design concepts</li>
<li>Templates ("create project Rails")</li>
<li>Editor functionality</li>
<li>... many more - need people to help with it (engaging with the community and supporting contributions in an open-sourcey way is a big theme in this talk)</li>
</ul>
<h3>Fin</h3>
<p>They leave us with <a href="http://rubyconf2008.confreaks.com/keynote.html">a clip of Dave Thomas @ RubyConf</a> asking if it's weird to love your software tools, and answering that you <strong>have to</strong> love your tools. Fair play!</p>
<h3>Questions and Answers</h3>
<p><b>Q. Distributed Version Control - will bespin support it?</b> Bespin designed for two basic use cases (a) standard thing - check in to repo etc (b) bespin.mozilla.com - SAAS type model.</p>
<p><b>Q. What data structure is being used for patch sets? Because a decent structure would make VCS possible.</b> Mobwrite - Neil Fraser's project behind Google Docs - so using that format, but we might expect it to change in the future.</p>
<p><b>Q. (me) Eating your own dogfood</b> Dogfooding by end of month, when VCS lands or using  Appcelerator Titanium to run off local file system.</p>
<p><b>Q. (about integration with Ubiqutiy I think?)</b> Ubiquity as the runtime and Bespin for authoring. Initially, separate to Ubiquity and then normalised commands with Ubiquity. Now just starting to share components like parser. Next phase, access to virtually all of Ubiquity and will work even without Moz browsers. And the other way round - running Ubiquity commands inside Bespin.</p>
<p><b>Q. With the collaboration engine, can you do more than code creation, e.g. drawing or spreadsheets?</b> Using Mobwrite, the engine behind Google Docs' collaboration - Mobwrite's restricted to text - as long as there are changes to some structure (ie it can be serialised), it's possible.</p>
<p><b>Q. Codes and tests in the cloud - should be great for continuous integration</b> There are various people already implementing the Bespin server API for other things too. With the code out in the cloud, very possible to do all sorts of things with the code. John Resig (also Moz) is also interested in this area - also wrt manual tests that are downloaded to various people's browsers and run locally. Maybe could even be automated using the aggregate crowd while the browser isn't doing anything else. Another project is <a href="http://labs.mozilla.com/2008/03/introducing-test-pilot/">Test Pilot (usability testing)</a>.</p>
<p>(On a related note, I mentioned later on it would be interesting to couple the code with real-time user data, e.g. a heatmap overlay on the code showing how much resources each segment used during real-world use.)</p>
<p><b>Q. Hyperlinking in code? Could you create ~implicit links, e.g. to other parts of the code?</b> Don't have hyperlinks because it's canvas! But will be able to implement these things - would be done as a syntax highlighter extension.</p>
<p><b>Q. Firstly, the name? Secondly, the offline capability - can I just run it directly off the local file system.</b> With Appcelerator Titanium, would feel like a real desktop app while offline, but can still access the cloud when connected. (No-one answered the name question ;)</p>
<p><b>Q. Mashups in the browser - loads of scope for in-editor mashups, will it be part of the editor framework</b> Right now, editor has an event bus - events like "he's opened the file, he's hit a key", so can set up events for this kind of thing. It's all based on an asynchronous model, so very possible.</p>
<p><b>Q. Will there be user testing - to see what people really want?</b> There's a huge list in Bugzilla for these kinds of things. This is a tech preview, missing a ton of functionality. Already improved, but a lot more to do.</p>
<p><b>Q. Vim or Emacs macros - which will be first?</b> Have implemented Elisp and Javascript, so it's only a matter of time. (cunningly avoided expressing a preference :)</p>
<p><b>Q. Functional reactive programming (FRP) - <a href="http://lambda-the-ultimate.org/node/1771">Flapjax</a> demonstrates the idea in JS - for pubsub. Would it be possible to extend the current pubsub framework into a FRP framework - avoids bugs around order .</b> Would be good to see something like that.</p>
<p><b>Q. Are you "re-inventing the web" with this stuff, i.e. finding that canvas doesn't support it?</b> Yes, do have to reinvent a lot of things - people coming together to discuss these things - ARIA etc. Very focused on accessibility. Two ways to do it - (a) hacks like the cut-and-paste to mirror what's happening; (b) longer-term - drive the browsers forward.</p>
<p>Aside - Bespin currently leaks memory. Browsers are now runtimes, so want to build a tool for memory tracking. (a) Log each garbage collection. (b) Graphical view of the heap. After that, tool after that is meta - a directory of all the tools  out there.</p>
<p><b>Q. On a much smaller scale, could it be used as a textarea?</b> Yes, Firefox engineers were keen to look at that.</p>
<p><b>Q. How much implemented in Javascript?</b> Very much the trend in Moz. cf. Aza Raskin's recent post on doing an extension in Javascript (*cough* Chrome *cough*). All the XUL stuff was necessary at the time. Javascript's not the bottleneck anymore.</p>
<p><b>Q. The name? (as was previously asked)</b> So with that, let's wrap up. </p>
<p>My colleague <a href="http://fnd.lewcid.org/blog/archive/53">Fred</a> has also posted his impressions.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/bespin-talk-at-mozilla-labs-meetup/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Ajax Universe: Ben and Dion showcase the Presentation Randomizer</title>
		<link>http://ajaxian.com/archives/the-ajax-universe-ben-and-dion-showcase-the-presentation-randomizer</link>
		<comments>http://ajaxian.com/archives/the-ajax-universe-ben-and-dion-showcase-the-presentation-randomizer#comments</comments>
		<pubDate>Wed, 05 Nov 2008 05:22:36 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[Recording]]></category>
		<category><![CDATA[The Ajax Experience]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4973</guid>
		<description><![CDATA[This was my favourite presentation of the year. Ben and I have given a lot of talks together, and to spice things up we created the presentation randomizer, a simple Ajax app that would sound a buzzer at random times. Why did we do this? When the buzzer went, we would have to instantly change <a href="http://ajaxian.com/archives/the-ajax-universe-ben-and-dion-showcase-the-presentation-randomizer">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><embed src="http://services.brightcove.com/services/viewer/federated_f8/1596744118" bgcolor="#FFFFFF" flashVars="videoId=1825879418&#038;playerId=1596744118&#038;viewerSecureGatewayURL=https://console.brightcove.com/services/amfgateway&#038;servicesURL=http://services.brightcove.com/services&#038;cdnURL=http://admin.brightcove.com&#038;domain=embed&#038;autoStart=false&#038;" base="http://admin.brightcove.com" name="flashObj" width="486" height="412" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></p>
<p>This was my favourite presentation of the year. Ben and I have given a lot of talks together, and to spice things up we <a href="http://ajaxian.com/archives/the-presentation-randomizer">created the presentation randomizer</a>, a simple Ajax app that would sound a buzzer at random times. Why did we do this? When the buzzer went, we would have to instantly change presenter. "Who's line is it anyway?" for geeks.</p>
<p>The presentation was recorded by Adobe, and Ted Patrick just pushed it live:</p>
<blockquote><p>
The Ajax revolution is complete: Sophisticated JavaScript user interfaces are nearly ubiquitous. Yet, the innovations in the Ajax community continue. Dion and Ben set the stage for the Ajax Experience by discussing the latest developments, including multithreaded JavaScript technology-powered UIs, robust offline storage, choosing the right Ajax/JavaScript technology framework, Ajax outside of the browser, and more.
</p></blockquote>
<p>Thanks again to the entire community that came out to The Ajax Experience. Without you, we wouldn't have this opportunity.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/the-ajax-universe-ben-and-dion-showcase-the-presentation-randomizer/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The Presentation Randomizer</title>
		<link>http://ajaxian.com/archives/the-presentation-randomizer</link>
		<comments>http://ajaxian.com/archives/the-presentation-randomizer#comments</comments>
		<pubDate>Wed, 01 Oct 2008 13:03:22 +0000</pubDate>
		<dc:creator>Ben Galbraith</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[The Ajax Experience]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4651</guid>
		<description><![CDATA[At our Ajax Experience keynote this year, Dion and I coded up a simple little program that buzzed at random intervals every 10-120 seconds. Whenever it buzzed, one of us had to stop talking and the other would have to pick up right where the other guy left off. It definitely kept things fresh. Quite <a href="http://ajaxian.com/archives/the-presentation-randomizer">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://ajaxian.com/wp-content/uploads/randomizer.jpg" alt="" title="The Prezo Randomizer" width="470" height="284" class="alignnone size-full wp-image-4652" /></p>
<p>At our Ajax Experience keynote this year, Dion and I coded up a simple little program that buzzed at random intervals every 10-120 seconds. Whenever it buzzed, one of us had to stop talking and the other would have to pick up right where the other guy left off. It definitely kept things fresh.</p>
<p>Quite a few folks asked us to release the code. It's quite trivial; <a href="http://www.feature50.com/pr/randomizer.html">check it out</a>.</p>
<p>We used <a href="http://www.schillmania.com/projects/soundmanager2/">SoundManager2</a> to play the buzzer sound; the rest is straight-forward.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/the-presentation-randomizer/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Detailed JavaScript and Processing.js from John Resig</title>
		<link>http://ajaxian.com/archives/detailed-javascript-and-processingjs-from-john-resig</link>
		<comments>http://ajaxian.com/archives/detailed-javascript-and-processingjs-from-john-resig#comments</comments>
		<pubDate>Wed, 24 Sep 2008 11:00:40 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Canvas]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4585</guid>
		<description><![CDATA[John Resig has given some great talks recently, and just posted about some of them. First, we have his interactive learning area where the presentation is just a JavaScript application that you can play with. Double click on the code, make a change, and save away! The talk goes into the innards of the language <a href="http://ajaxian.com/archives/detailed-javascript-and-processingjs-from-john-resig">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>John Resig has given some great talks recently, and <a href="http://ejohn.org/blog/adv-javascript-and-processingjs/">just posted about some of them</a>.</p>
<p>First, we have his <a href="http://ejohn.org/apps/learn/">interactive learning area</a> where the presentation is just a JavaScript application that you can play with. Double click on the code, make a change, and save away!</p>
<p>The talk goes into the innards of the language that we are know, love, or at least deal with:</p>
<ul>
<li>Defining Functions</li>
<li>Named Functions</li>
<li>Functions as Objects</li>
<li>Context</li>
<li>Instantiation</li>
<li>Flexible Arguments</li>
<li>Closures</li>
<li>Temporary Scope</li>
<li>Function Prototypes</li>
<li>Instance Type</li>
<li>Inheritance</li>
<li>Built-in Prototypes</li>
<li>Enforcing Function Context</li>
<li>Bonus: Function Length</li>
</ul>
<p>The goal of all of this, is that after going through the presentation you should understand the following:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-12');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-12">
<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: #009900; font-style: italic;">// The .bind method from Prototype.js </span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">Function</span>.<span style="color: #006600;">prototype</span>.<span style="color: #006600;">bind</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-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #003366; font-weight: bold;">var</span> fn = <span style="color: #000066; font-weight: bold;">this</span>, args = Array.<span style="color: #006600;">prototype</span>.<span style="color: #006600;">slice</span>.<span style="color: #006600;">call</span><span style="color:#006600; font-weight:bold;">&#40;</span>arguments<span style="color:#006600; font-weight:bold;">&#41;</span>, object = args.<span style="color: #006600;">shift</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; <span style="color: #000066; font-weight: bold;">return</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-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> fn.<span style="color: #006600;">apply</span><span style="color:#006600; font-weight:bold;">&#40;</span>object, </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; args.<span style="color: #006600;">concat</span><span style="color:#006600; font-weight:bold;">&#40;</span>Array.<span style="color: #006600;">prototype</span>.<span style="color: #006600;">slice</span>.<span style="color: #006600;">call</span><span style="color:#006600; font-weight:bold;">&#40;</span>arguments<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>; </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>;</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>Next up is his talk on Canvas, Processing and Processing.js. Everytime I see this stuff it makes me smile. Amazing visualizations are here:</p>
<p><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=visualjs-1222126563177801-8&#038;stripped_title=building-a-visualization-language-presentation" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=visualjs-1222126563177801-8&#038;stripped_title=building-a-visualization-language-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/detailed-javascript-and-processingjs-from-john-resig/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>@Media Ajax Panel</title>
		<link>http://ajaxian.com/archives/media-ajax-panel</link>
		<comments>http://ajaxian.com/archives/media-ajax-panel#comments</comments>
		<pubDate>Tue, 16 Sep 2008 16:08:26 +0000</pubDate>
		<dc:creator>Michael Mahemoff</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4492</guid>
		<description><![CDATA[Panel at @media ajax 2008. Dean Edwards, Brendan Eich, Christian Heillmann, Jake Archibald, Joe Walker (chair) I've captured at least some of what was said here ;). What is the Open Web to you and why is it important (or otherwise)? (general agreement that it's good thing, as we'd expect :) Christian - What if <a href="http://ajaxian.com/archives/media-ajax-panel">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Panel at <a href="http://www.vivabit.com/atmediaAjax/">@media ajax 2008</a>.</p>
<p>Dean Edwards, Brendan Eich, Christian Heillmann, Jake Archibald, Joe Walker (chair)</p>
<p>I've captured at least some of what was said here ;).</p>
<h3>What is the Open Web to you and why is it important (or otherwise)?</h3>
<p>(general agreement that it's good thing, as we'd expect :)<br /> Christian - What if open formats don't have the reach? e.g. ogg vorbis.</p>
<h3>One JS file can't depend on another without wrapping all the code in a function. How should this be solved? An "include" function in ES4?</h3>
<p>Brendan - "include" could make UI lock up. Can do it with (html 5) web workers (speculative parsing).</p>
<h3>Should you pick just one library/framewrk to use, a handful, or have an open policy to use anything at any time? How do you evaluate which one(s) to use?</h3>
<p>Christian - would be good to see comparison sites like cmsmatrix.org, not just which one is 20 milliseconds faster than the other. (MM - I tried to create <a href="http://ajaxpatterns.org/Frameworks_Matrix">something like this</a>, but it could be bigger in both dimensions.)</p>
<p>Discussion about the "glow" library created by BBC, discussed by Jake Archibald yesterday. Okay to release unpolished product to open source as an individual or small company, but harder when it carries the name of a big organisation like BBC.</p>
<h3>What kind of build scripts/engines do you recommend to concatenate multiple scripts into one?</h3>
<p>Jokes about copy-paste and batch scripts.</p>
<p>Christian - It's 2008 - we should be using minifier, etc. More structured approach to releasing.</p>
<h3>What recent tools or techniques do you use to speed up or improve your development process? Do you have any quick tips?</h3>
<p>Jake - More developers :) HTML editor - Komodo edit. Debug - Firebug in FF, Developer toolbar and windows script debugger in IE</p>
<p>Christian - Moving to a Mac made developing far better, and partly due to Textmate. And Javascript bundle that runs JSLint over your code. Firebug.</p>
<p>Brendan - Distributed version control systems have been good. Textmate's good, but I'm an old Vi/Unix hacker.</p>
<p>Dean - Recently disabled Firebug to speed up development - causes bugs, reports misleading line numbers, etc. Went back to error console which gives you the correct line number. (Joe - it's getting better now.) Microsoft script debugger is actually quite good.</p>
<p>Christian - Firefox still the coolest browser for developers, but with all the tools, have to keep turning off greasemonkey scripts etc.</p>
<h3>Does Cappucino / Objective-J have a future? What are their benefits and detriments?</h3>
<p>Dean - More problems in the browser<br /> Brendan - GWT guys are realists, acknowledge their abstractions leak. But OTOH they've made Ajax development accessible to Java developers who otherwise wouldn't do it.<br /> Brendan (asked about what he'd do if he could change the language in the browser) - You'd get a lot of demand for Python and Ruby, Python's probably the more mature.<br /> Brendan - Flex originally intended to make web app development like windows development. (Questions this approach). Pity we don't have things like JQuery for desktop apps.</p>
<h3>What's the biggest missing bit of functionality from modern web browsers?</h3>
<p>Christan - Big problem is we're stuck with old browsers.<br /> Jake - Large companies lock down IE6.</p>
<p>Poll of audience - many people work for companies where the average user still runs IE6.</p>
<p>How to prevent? 37signals, Apple, Facebook have all written apps that don't target IE6. Christian-mainstream media could help, e.g. recent article saying users rarely get viruses via FF. <a href="http://billpstudios.blogspot.com/2007/11/facebook-recommends-ie7.html">Facebook also recommends FF and Safari</a> along with IE.</p>
<p>Christian - Chrome is targeted at regular users, not developers - so IE market share might reduce. Brendan - Chrome might, good if they do, but difficult to see how to make a major change.</p>
<p>Jake - Apple get away with a lot of evil that if MS did the same thing they would be beaten for. e.g. Apple ships with a browser, just like MS.</p>
<p>Back to the question - what would you want:</p>
<p>Dean - standardised behaviour extensions for CSS<br /> Jake - constants in CSS</p>
<p>Joe - vector graphics engine - canvas everywhere</p>
<p>Christian - web forms - e.g. calendar control</p>
<p>Jake - CSS - multiple background images</p>
<p>Christian - better layout (discussing boxes and vertical centering). Right now, we're as hacky as we were with tables.</p>
<p>Christian - better video and audio support (Jake - Flash alrady does this well, would rather see effort spent on other things).</p>
<p>Audience - up button (to go up directory levels).</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/media-ajax-panel/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Steve Yegge on Server Side JavaScript</title>
		<link>http://ajaxian.com/archives/steve-yegge-on-server-side-javascript</link>
		<comments>http://ajaxian.com/archives/steve-yegge-on-server-side-javascript#comments</comments>
		<pubDate>Mon, 16 Jun 2008 05:25:04 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3756</guid>
		<description><![CDATA[I had to single this talk out. Steve Yegge is a living legend, and with his mammoth write up of his talk you can see it in text view, and you can also download all of the slides. Steve does his thing, and goes in glorious directions, such as how we end up with a <a href="http://ajaxian.com/archives/steve-yegge-on-server-side-javascript">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/BttI-y9VzXQ&#038;hl=en"></param><embed src="http://www.youtube.com/v/BttI-y9VzXQ&#038;hl=en" type="application/x-shockwave-flash" width="425" height="344"></embed></object></p>
<p>I had to single this talk out. Steve Yegge is a living legend, and with his <a href="http://steve-yegge.blogspot.com/2008/06/rhinos-and-tigers.html">mammoth write up of his talk</a> you can see it in text view, and you can also <a href="http://sites.google.com/site/io/server-side-javascript-on-the-java-virtual-machine">download all of the slides</a>.</p>
<p>Steve does his thing, and goes in glorious directions, such as how we end up with a scriptable back end, how the JVM matters as a host for these things, SchemeScript, how defineProperty gets around the for .. in issues, "Who likes to write their own giant deterministic finite automata to do string matching? Heh. It's weird â€” nobody raised their hand.", obj = {run: function() { print('hi') }}, RnR (Rhino's not Ruby), "And Scala's interesting because it actually takes a functional static type system and it layers... it merges it with Java's object-oriented type system, to produce.... Frankenstein's Monster.", and man it just keeps going and going.</p>
<p>As much a talk about languages as a whole.... and a lot of fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/steve-yegge-on-server-side-javascript/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Gears 0.3 Released, and Google I/O videos on Ajax related content available</title>
		<link>http://ajaxian.com/archives/gears-03-released-and-google-io-videos-on-ajax-related-content-available</link>
		<comments>http://ajaxian.com/archives/gears-03-released-and-google-io-videos-on-ajax-related-content-available#comments</comments>
		<pubDate>Thu, 12 Jun 2008 20:53:50 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Gears]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/gears-03-released-and-google-io-videos-on-ajax-related-content-available</guid>
		<description><![CDATA[Some good stuff came out from my employer. First, we have the Gears 0.3 release which includes support for Firefox 3! I have been using it for awhile, and it has been great. The team wanted to get it out before the Firefox 3 launch (planned for June 17th). A plugin like Gears can get <a href="http://ajaxian.com/archives/gears-03-released-and-google-io-videos-on-ajax-related-content-available">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Some good stuff came out from my employer. First, we have the <a href="http://gearsblog.blogspot.com/2008/06/fly-gears-03.html">Gears 0.3 release</a> which includes support for Firefox 3! I have been using it for awhile, and it has been great. The team wanted to get it out before the <a href="http://developer.mozilla.org/devnews/index.php/2008/06/11/coming-tuesday-june-17th-firefox-3/">Firefox 3 launch (planned for June 17th)</a>. A plugin like Gears can get deep into browser internals, so it is a challenge to keep up to date as APIs change in beta releases, so it is great to be out there now and I we will take a close look at the final release!</p>
<p>As well as Firefox 3 support, Gears 0.3 includes:</p>
<ul>
<li>Ability to create <a href="http://code.google.com/apis/gears/api_desktop.html">desktop shortcuts</a> with a snippet of JavaScript</li>
<li>Improved support for customizing the <a href="http://code.google.com/apis/gears/design.html#detecting">installation flow</a> and <a href="http://code.google.com/apis/gears/api_factory.html#getpermission">permission dialog</a></li>
<li>Better support for <a href="http://code.google.com/apis/gears/api_workerpool.html#sendmessage">sending</a> complex objects to workers</li>
<li>Detailed <a href="http://code.google.com/apis/gears/api_localserver.html#events">progress events</a> for managed resource store updates</li>
<li><a href="http://code.google.com/apis/gears/upcoming/history.html">And more...</a></li>
</ul>
<p>Then, all of the videos from <a href="http://google-code-updates.blogspot.com/2008/06/google-io-recorded-sessions-now-posted.html">Google I/O sessions</a> have been published.</p>
<p>I put together a <a href="http://www.youtube.com/view_play_list?p=E596D3026FCEFD1E">playlist</a> that includes Ajax and Gears related content:</p>
<p><object width="416" height="337"><param name="movie" value="http://www.youtube.com/cp/vjVQa1PpcFMpZf3y-3x_SPolz4LQvVLuDMItd7FSaV8="></param><embed src="http://www.youtube.com/cp/vjVQa1PpcFMpZf3y-3x_SPolz4LQvVLuDMItd7FSaV8=" type="application/x-shockwave-flash" width="416" height="337"></embed></object></p>
<p>Check out the great talks such as:</p>
<p><b>Gears</b></p>
<ul>
<li><a href="http://www.youtube.com/watch?v=hapkRYxCU_8">Improving Browsers in New Ways: Gears++</a></li>
<li><a href="http://www.youtube.com/watch?v=nEgynWIKzSY">Google Gears for Mobile</a></li>
<li><a href="http://www.youtube.com/watch?v=piq3vmhQ-LU">HTML 5, Brought to You by Gears</a></li>
<li><a href="http://www.youtube.com/watch?v=x3tOhaSk-wQ">Gears and MySpace - Search on the Client</a></li>
<li><a href="http://www.youtube.com/watch?v=cePFlJ8sGj4">Taking Large-Scale Applications Offline</a></li>
<li><a href="http://www.youtube.com/watch?v=7fsBDQ2ng8s">Gears Case Studies</a></li>
</ul>
<p><b>GWT</b></p>
<ul>
<li><a href="http://www.youtube.com/watch?v=xh5Vo_drhDE">Using GWT to Build a Diagramming Tool</a></li>
<li><a href="http://www.youtube.com/watch?v=tRJEZgIX8BI">GWT and Client-Server Communication</a></li>
<li><a href="http://www.youtube.com/watch?v=2ScPbu8ga1Q">GWT Extreme by Ray Cromwell</a></li>
<li><a href="http://www.youtube.com/watch?v=vv2MnqP8Bmk">JavaScript and DOM Programming in GWT</a></li>
<li><a href="http://www.youtube.com/watch?v=cyfVHNAM80E">Resource Bundles and Linkers in GWT</a></li>
<li><a href="http://www.youtube.com/watch?v=nvti32k4xyU">Deferred Binding with GWT</a></li>
</ul>
<p><b>General Ajax</b></p>
<ul>
<li><a href="http://www.youtube.com/watch?v=nG66hIhUdEU">Alex Russell on "Can We Get There from Here?"</a></li>
<li><a href="http://www.youtube.com/watch?v=qU_1_DrP04I">Spice up Your Apps with Google AJAX APIs</a></li>
<li><a href="http://www.youtube.com/watch?v=t_AUNp7zyUY">Yours truly, Dion and Ben, State of Ajax: The Universe Is Expanding</a></li>
<li><a href="http://www.youtube.com/watch?v=BttI-y9VzXQ">Steve Yegge on Server Side JavaScript</a></li>
</ul>
<p>Wow, a lot of material there!</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/gears-03-released-and-google-io-videos-on-ajax-related-content-available/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Wii Darts: Powering Ajax applications with Wii controllers</title>
		<link>http://ajaxian.com/archives/wii-darts-powering-ajax-applications-with-wii-controllers</link>
		<comments>http://ajaxian.com/archives/wii-darts-powering-ajax-applications-with-wii-controllers#comments</comments>
		<pubDate>Wed, 07 May 2008 23:08:50 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3633</guid>
		<description><![CDATA[Ben and I gave a presentation at JavaOne on what's new with Ajax. Since this was JavaOne, we skewed a little more than we normally would to Java topics, and one of them was using the new Java Plugin, that has great new features such as being able to take a running applet out of <a href="http://ajaxian.com/archives/wii-darts-powering-ajax-applications-with-wii-controllers">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Ben and I gave a presentation at JavaOne on what's new with Ajax. Since this was JavaOne, we skewed a little more than we normally would to Java topics, and one of them was using the new Java Plugin, that has great new features such as being able to take a running applet out of the web page, and having it continue to live after shutting down the browser. Java is running out of process here, which also helps the "Java crashing the entire browser" problem.</p>
<p>Anyway, back to our demo. For some context, last year at JavaOne had us performing Guitar Hero on stage, so we knew that we had to use a gaming console in some way. This year it had to be the Wii, but instead of using the console, we decided to just use the controllers.</p>
<p>Wouldn't it be cool to control a Web page using the controllers? We thought so, and we set to it. You can talk to the Wiimotes via Bluetooth, so we needed a stack that would allow us to do just that. Java has a bluetooth stack. We could get an applet to talk to the Java stack. Hmm.</p>
<p>It actually took quite some time to test out the various stacks out there. In the end we went with a native system called <a href="http://www.wiiuse.net/">Wiiuse</a> that a lot of Wii hackers use. There is a wrapper library called <a href="http://code.google.com/p/wiiusej/">Wiiusej</a> that gave us exactly what we needed.</p>
<p>A quick test later and we had an application that was talking between the remote and the program. It turns out that the main controller sees a series of IR lights that are in the Wii sensor bar, and this allows you to simulate the system with any decent IR source. In the presentation room the big lights that shine on stage were strong enough to act as a sensor bar so we won't even have to use it. We can just point out to the crowd.</p>
<p>Anyway, back to the application. We then wrote a Java class that acts as a state machine for what the remote is doing. It understands the movements, which buttons are pushed, how fast you are moving the device. With this data we could build a simple darts game. With the state machine Java code, and an Applet wrapper that exposed the information, we were ready to get to the Ajax side of the house.</p>
<p>We painted a darts board onto the screen and then had JavaScript start polling the Applet for information via JSObject (As simple as: <code>document.nameofapplet.pollmethod()</code>). This turned out to be more stable than talking the other way, even though it meant we were polling instead of being entirely event driven. When the JavaScript code polled the applet it would pass back a data structure with the data for the coordinates of the remote, and whether the dart had been fired (button A to fire, button B to reload). We would move the dart image on the screen as you move the remote, and when fired we kicked off an animation to fire the dart at the board.</p>
<p>At first, it was all too simple. You setup the shot and it would get the right area every time. Not a fun game. We then decided to add some simple physics to the Ajax game. We took into account the velocity of the throw (if weak it would fall down) and how straight your shot was. If you wiggle around, the dart will not be accurate.</p>
<p>Anyway, this was a lot of fun, and shows that as much as we mock Java applets, if we forget about using them as fancy blink tags, and instead think of them as more extension points, maybe there is life for them.</p>
<p>The video below shows you a demo of the application, the source code with an explanation, and more details.</p>
<p><object type="application/x-shockwave-flash" width="480" height="362" data="http://www.vimeo.com/moogaloop.swf?clip_id=968191&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA"><param name="quality" value="best" /><param name="allowfullscreen" value="true" /><param name="scale" value="showAll" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=968191&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/wii-darts-powering-ajax-applications-with-wii-controllers/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ajax Pioneer Week: John Resig of jQuery</title>
		<link>http://ajaxian.com/archives/ajax-pioneer-week-john-resig-of-jquery</link>
		<comments>http://ajaxian.com/archives/ajax-pioneer-week-john-resig-of-jquery#comments</comments>
		<pubDate>Wed, 07 May 2008 18:14:52 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Interview]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/ajax-pioneer-week-john-resig-of-jquery</guid>
		<description><![CDATA[John Resig got in front of the camera, and the projector, as he gives us his thoughts on the state, and future of Ajax. He starts out by discussing jQuery Core, and the features in the near term (1.2.4), short term (1.3) and beyond. He then delves into the UI side of the house with <a href="http://ajaxian.com/archives/ajax-pioneer-week-john-resig-of-jquery">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>John Resig got in front of the camera, and the projector, as he gives us his thoughts on the state, and future of Ajax.</p>
<p>He starts out by discussing jQuery Core, and the features in the near term (1.2.4), short term (1.3) and beyond. He then delves into the UI side of the house with jQuery UI 1.5. He segues from jQuery to the future of browsers and JavaScript in general.</p>
<p><object type="application/x-shockwave-flash" width="480" height="361" data="http://www.vimeo.com/moogaloop.swf?clip_id=984675&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA"><param name="quality" value="best" /><param name="allowfullscreen" value="true" /><param name="scale" value="showAll" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=984675&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA" /></object></p>
<p><b>Previously on Ajax Pioneer Week...</b></p>
<ul>
<li><a href="http://ajaxian.com/archives/ajax-pioneer-week-alex-russell-of-dojo">Alex Russell of Dojo</a></li>
<li><a href="http://ajaxian.com/archives/ajax-pioneer-week-bruce-johnson-of-gwt">Bruce Johnson of GWT</a></li>
<li><a href="http://ajaxian.com/archives/ajax-pioneer-week-sam-stephenson-of-prototype">Sam Stephenson of Prototype</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/ajax-pioneer-week-john-resig-of-jquery/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

