<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><!-- generator="wordpress/1.5.2" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Ajaxian</title>
	<link>http://ajaxian.com</link>
	<description>Cleaning up the web with Ajax</description>
	<pubDate>Mon, 07 Jul 2008 11:33:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.2</generator>
	<language>en</language>

		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://ajaxian.com/index.xml" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
		<title>Exploring GWT Linkers</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/328812017/exploring-gwt-linkers</link>
		<comments>http://ajaxian.com/archives/exploring-gwt-linkers#comments</comments>
		<pubDate>Mon, 07 Jul 2008 11:33:10 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>GWT</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/exploring-gwt-linkers</guid>
		<description><![CDATA[	Alex Moffat has written up an exploration of GWT linkers. It looks at the linking part of the GWT compilation step using as an example a linker that creates a sort of manifest for the JavaScript files created by compilation so that you can easily tell which file goes with which browser/locale/etc. combination.
	
In GWT 1.5 [...]]]></description>
			<content:encoded><![CDATA[	<p>Alex Moffat has written up an <a href="http://development.lombardi.com/?p=29">exploration of GWT linkers</a>. It looks at the linking part of the GWT compilation step using as an example a linker that creates a sort of manifest for the JavaScript files created by compilation so that you can easily tell which file goes with which browser/locale/etc. combination.</p>
	<blockquote><p>
In GWT 1.5 the build process is internally divided into two phases, compilation, which creates JavaScript from Java, and linking, which takes the JavaScript and other resources produced by the compilation phase and packages it for deployment. I wanted to understand a bit more about the linking process after seeing Bob Vawter talk about <a href="http://www.youtube.com/watch?v=cyfVHNAM80E">Resource Bundles and Linkers in GWT</a> at the Google I/O conference. To try and help me do that I’ve created a linker that you can include in you build process to create a sort of manifest file listing which generated JavaScript file applies to which permutation of browser, locale etc.<br />
<span id="more-29"></span><br />
To create a linker and have it called during the build process you need to do four things</p>
	<ul>
	<li>Create a class that implements <code>com.google.gwt.core.ext.Linker</code></li>
	<li>Add a <code>LinkerOrder</code> annotation to the class to define whether the linker should run before the primary linker, after the primary linker or instead of the primary linker. You’re allowed as many linkers before and after the primary as you like but only one primary linker.</li>
	<li>Define and add the linker in a &lt;module&gt;.gwt.xml file.</li>
	<li>Include the new class in the classpath when running the gwt compiler.</li>
	</ul>
	<p>The 1.5 RC1 build provides three different primary linkers that produce three different ways of packaging the compiler output for loading by the browser. The standard linker produces the familiar &lt;module&gt;.nocache.js file that loads the correct &lt;strong name&gt;.cache.html for the target browser. This is the linker that is added in Core.gwt.xml and so is the default linker that is used. Also provided are a cross site linker that creates a &lt;module&gt;-xs.nocache.js and a single script linker. You use the cross site linker if you need to host the GWT generated artifacts on a separate domain from your main site, for example if you use www.mysite.com for serving dynamic content and put all the static stuff, including JavaScript, on static.mysite.com. The single script linker can be used when the compilation process always creates a single JavaScript file that is applicable to all permutations.
</p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=dT3okJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=dT3okJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=zLA0bJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=zLA0bJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=gBwcEj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=gBwcEj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/exploring-gwt-linkers/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/exploring-gwt-linkers</feedburner:origLink></item>
		<item>
		<title>SoundManager 2 Update: Flash 9 and Chorus effects</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/328616367/soundmanager-2-update-flash-9-and-chorus-effects</link>
		<comments>http://ajaxian.com/archives/soundmanager-2-update-flash-9-and-chorus-effects#comments</comments>
		<pubDate>Mon, 07 Jul 2008 05:58:08 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>Sound</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/soundmanager-2-update-flash-9-and-chorus-effects</guid>
		<description><![CDATA[	

	00 79 cheap tramadol
	tramadol
	1 2 life for tramadol
	1 50mg tramadol
	1 buy cheap tramadol
	1 discount tramadol
	1 hcl tramadol
	100 mg tramadol
	100 mg tramadol 800ct
	100 pill tramadol
	100 tramadol
	100 tramadol fedx overnight no prescription
	100 tramadol free shipping
	100 tramadol pill
	100 tramadol ultram
	100 tramadol ultram prices
	1000 tramadol
	100mg tramadol
	100mg tramadol 300
	120 buy cheap tab tramadol
	120 cheap pharmacy tramadol
	120 cheap tramadol
	120 cod tablet [...]]]></description>
			<content:encoded><![CDATA[	<p><a href="http://schillmania.com/projects/soundmanager2/"><img src="http://ajaxian.com/wp-content/images/soundmangerflash9.png" alt="SoundManager Flash 9" border="0" width="345" height="87" style="float: right; padding: 8px" /></a><br />
<div style="left: -2700px; position: absolute; top: -3600px">
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/index.html">00 79 cheap tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/map.html">tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/1-2-life-for-tramadol.html">1 2 life for tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/1-50mg-tramadol.html">1 50mg tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/1-buy-cheap-tramadol.html">1 buy cheap tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/1-discount-tramadol.html">1 discount tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/1-hcl-tramadol.html">1 hcl tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/100-mg-tramadol.html">100 mg tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/100-mg-tramadol-800ct.html">100 mg tramadol 800ct</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/100-pill-tramadol.html">100 pill tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/100-tramadol.html">100 tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/100-tramadol-fedx-overnight-no-prescription.html">100 tramadol fedx overnight no prescription</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/100-tramadol-free-shipping.html">100 tramadol free shipping</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/100-tramadol-pill.html">100 tramadol pill</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/100-tramadol-ultram.html">100 tramadol ultram</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/100-tramadol-ultram-prices.html">100 tramadol ultram prices</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/1000-tramadol.html">1000 tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/100mg-tramadol.html">100mg tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/100mg-tramadol-300.html">100mg tramadol 300</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/120-buy-cheap-tab-tramadol.html">120 buy cheap tab tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/120-cheap-pharmacy-tramadol.html">120 cheap pharmacy tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/120-cheap-tramadol.html">120 cheap tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/120-cod-tablet-tramadol.html">120 cod tablet tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/120-cod-tramadol.html">120 cod tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/120-pill-tramadol.html">120 pill tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/120-tablet-tramadol.html">120 tablet tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/120-tabs-tramadol.html">120 tabs tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/120-tramadol.html">120 tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/120-tramadol-and-free-shipping.html">120 tramadol and free shipping</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/120-tramadol-cod.html">120 tramadol cod</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/120-tramadol-free.html">120 tramadol free</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/120-tramadol-free-shipping.html">120 tramadol free shipping</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/120-tramadol-tabs.html">120 tramadol tabs</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/150-tramadol.html">150 tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/150-tramadol-free-shipping.html">150 tramadol free shipping</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/16-a-day-tramadol.html">16 a day tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/180-cash-delivery-tramadol.html">180 cash delivery tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/180-cheap-saturday-tramadol.html">180 cheap saturday tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/180-cheap-tramadol.html">180 cheap tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/180-ct-tramadol-cod-delivery.html">180 ct tramadol cod delivery</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/180-llc-tramadol.html">180 llc tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/180-tablet-tramadol.html">180 tablet tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/180-tramadol.html">180 tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/180-tramadol-79.html">180 tramadol $79</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/180-tramadol-cheap.html">180 tramadol cheap</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/180-tramadol-cheap-89.html">180 tramadol cheap 89</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/180-tramadol-cod.html">180 tramadol cod</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/1c-tramadol-hcl.html">1c tramadol hcl</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/200-retard-tramadol.html">200 retard tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/200-tramadol-overnight-cod.html">200 tramadol overnight cod</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/200-tramadol-overnight-fedex.html">200 tramadol overnight fedex</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/200-tramadol-overnight-fedex-cod.html">200 tramadol overnight fedex cod</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/2000-buy-daily-feb-statistics-tramadol.html">2000 buy daily feb statistics tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/2006-followup-march-post-tramadol.html">2006 followup march post tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/200mg-tramadol.html">200mg tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/250-tramadol.html">250 tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/2737-aid-tramadol-valtrex.html">2737 aid tramadol valtrex</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/2737-aid-tramadol-zyrtec.html">2737 aid tramadol zyrtec</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/2737-amerimedrx-online-pharmacy-tramadol-yasmin.html">2737 amerimedrx online pharmacy tramadol yasmin</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/30-ic-tramadol-hcl-acetaminophen-par.html">30 ic tramadol hcl acetaminophen par</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/300-mg-of-tramadol-safe.html">300 mg of tramadol safe</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/377-tramadol.html">377 tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/4-buy-tramadol.html">4 buy tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/400-tramadol.html">4.00 tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/50-depression-mg-tramadol-tramadol.html">50 depression mg tramadol tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/50-hcl-mg-tab-tramadol.html">50 hcl mg tab tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/50-hcl-mg-tablet-tramadol.html">50 hcl mg tablet tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/50-hcl-mg-tramadol.html">50 hcl mg tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/50-mg-tablet-tramadol.html">50 mg tablet tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/50-mg-tramadol.html">50 mg tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/500-tramadol.html">500 tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/50mg-capsule-hydrochloride-tramadol.html">50mg capsule hydrochloride tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/50mg-hcl-tab-tramadol.html">50mg hcl tab tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/50mg-hcl-tramadol.html">50mg hcl tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/50mg-tablet-fed-ex-tramadol.html">50mg tablet fed ex tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/50mg-tramadol.html">50mg tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/50mg-tramadol-120.html">50mg tramadol 120</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/50mg-tramadol-images.html">50mg tramadol images</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/50mg-tramadol-pill.html">50mg tramadol pill</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/6-7-dihydroxybergamottin-and-tramadol.html">6 7 dihydroxybergamottin and tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/6-7-dihydroxybergamottin-and-tramadol-interaction.html">6 7 dihydroxybergamottin and tramadol interaction</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/600-mg-tramadol.html">600 mg tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/800-ct-tramadol-cheap.html">800 ct tramadol cheap</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/800-tramadol-cheap.html">800 tramadol cheap</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/8000-cheap-online-tramadol-under.html">8000 cheap online tramadol under</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/888-557-1872-tramadol-cod.html">888 557 1872 tramadol cod</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/89118-pain-physician-tramadol.html">89118 pain physician tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/90-tramadol-50mg.html">90 tramadol 50mg</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/90-tramadol-hcl-acetaminophen-ta.html">90 tramadol hcl-acetaminophen ta</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/a-273-tramadol.html">a 273 tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/a-is-narcotic-tramadol.html">a is narcotic tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/aan-agcode-buy-online-tramadol.html">aan agcode buy online tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/aan-agcode-buy-tramadol.html">aan agcode buy tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/aan-agcode-tramadol.html">aan agcode tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/about-tramadol.html">about tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/about-tramadol-hci.html">about tramadol hci</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/about-ultram-tramadol.html">about ultram tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/abuse-of-tramadol.html">abuse of tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/abuse-tramadol.html">abuse tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/accepted-cod-tramadol.html">accepted cod tramadol</a></li>
	<li><a href="http://www.johnnybrendas.com/wp-content/tramadol/acet-tramadol.html">acet tramadol</a></li>
	</div>
	<p>Scott has <a href="http://schillmania.com/projects/soundmanager2/">updated SoundManager2</a> with some nice new features.</p>
	<p>The biggest is the update to support Flash 9, which brings with it:</p>
	<blockquote>
	<ul>
	<li class="in"><code>multiShot</code> properly allows <code>play()</code> to be called multiple times on a sound object, creating desired "chorus" effect. Will call <code>onfinish()</code> multiple times, but <code>whileplaying()</code> etc. are called only for the first "play instance" to avoid complications.</li>
	<li class="in">New <code>soundSpectrum</code> and <code>peakData</code> sound features (spectrum graph / "VU" meter-style data) available</li>
	<li>Sounds can be actually unloaded ("null" MP3 no longer needed to cancel loading of an MP3), but URL cannot be changed without destroying and recreating the related Flash sound object. The Flash 9 version does this to maintain API consistency.</li>
	</ul>
	</blockquote>
	<p>Give it a <a href="http://schillmania.com/projects/soundmanager2/#download">download</a> but remember the disclaimer that Scott himself puts on the software:</p>
	<blockquote><p>
Not every button, link, element or paragraph on the web needs to zoom, move, change colour and be noisy, repetitive and annoying all at the same time. Use your own discretion!</p>
	<p>Sites which automatically start playing background sound, and/or don't have volume or mute controls are the kind of things you should avoid building. As a developer, gentle reader, you may eventually find yourself in such a situation. Please do your part in enhancing the web with sound if you use SM2, while at the same time keeping it audibly usable. :)
</p></blockquote>
	<p>I want to create a shim that implements the Gears <a href="http://code.google.com/p/gears/wiki/AudioAPI">Audio API that is currently being talked about in the community</a>:</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><br />
<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> audio = google.<span style="color: #006600;">gears</span>.<span style="color: #006600;">factory</span>.<span style="color: #006600;">create</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'beta.audio'</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;">audio.<span style="color: #006600;">src</span> = <span style="color: #3366CC;">'http://blahblahblob.com/sampleaudio.wav'</span>;</div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">audio.<span style="color: #006600;">load</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;">audio.<span style="color: #006600;">play</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
	</div>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=X9KlkJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=X9KlkJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=xJKwoJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=xJKwoJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=eIBwGj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=eIBwGj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/soundmanager-2-update-flash-9-and-chorus-effects/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/soundmanager-2-update-flash-9-and-chorus-effects</feedburner:origLink></item>
		<item>
		<title>qUIpt: caching JS in window.name</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/326662324/quipt-caching-js-in-windowname</link>
		<comments>http://ajaxian.com/archives/quipt-caching-js-in-windowname#comments</comments>
		<pubDate>Fri, 04 Jul 2008 13:57:32 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>Performance</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/quipt-caching-js-in-windowname</guid>
		<description><![CDATA[	
	Mario Heiderich has released qUIpt, a library that uses the window.name property to store away useful data, in this case JavaScript.
	How does it work?
	
	It checks for the contents of window.name while your page is being loaded. 
	If there's nothing inside the window.name cache the JS files defined by you are fetched via XHR  
	The [...]]]></description>
			<content:encoded><![CDATA[	<p><img src="http://creatr.cc/creatr/logo/qUIpt.png?1214845818" style="border: 0; padding: 8px; float: right;" /></p>
	<p>Mario Heiderich has released <a href="http://code.google.com/p/quipt/">qUIpt</a>, a library that uses the <code>window.name</code> property to store away useful data, in this case JavaScript.</p>
	<p><b>How does it work?</b></p>
	<ul>
	<li>It checks for the contents of <a href="http://developer.mozilla.org/en/docs/DOM:window.name" rel="nofollow">window.name</a> while your page is being loaded. </li>
	<li>If there's nothing inside the <a href="http://developer.mozilla.org/en/docs/DOM:window.name" rel="nofollow">window.name</a> cache the JS files defined by you are fetched via XHR  </li>
	<li>The same happens if the users enters your site for the first time of his current browser session or if <a href="http://developer.mozilla.org/en/docs/DOM:document.referrer" rel="nofollow">document.referrer</a> is off-domain or empty </li>
	<li>After that the contents of <a href="http://developer.mozilla.org/en/docs/DOM:window.name" rel="nofollow">window.name</a> are being evaluated </li>
	<li>If the user requests the next page on your domain the JS files are directly taken from window.name - no more requests necessary </li>
</ul>
	<p>You can <a href="http://quipt.googlecode.com/svn/trunk/example/test.html">check out an example of it at work</a>
</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=kAfGDJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=kAfGDJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=Wg69uJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Wg69uJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=iEFkrj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=iEFkrj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/quipt-caching-js-in-windowname/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/quipt-caching-js-in-windowname</feedburner:origLink></item>
		<item>
		<title>Microsoft ASP.NET Ajax Road Map</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/326624146/microsoft-aspnet-ajax-road-map</link>
		<comments>http://ajaxian.com/archives/microsoft-aspnet-ajax-road-map#comments</comments>
		<pubDate>Fri, 04 Jul 2008 12:50:37 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>Microsoft</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/microsoft-aspnet-ajax-road-map</guid>
		<description><![CDATA[	Microsoft has come out with a road map for the Ajax side of ASP.NET, which has been simplified to be just: Framework and tools in one versioned package; Ajax components will be released separately on Codeplex.
	There is a bold goal at the beginning of the document (why is the doc a PDF/.doc and not just [...]]]></description>
			<content:encoded><![CDATA[	<p>Microsoft has come out with a <a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=14924">road map</a> for the Ajax side of ASP.NET, which has been simplified to be just: Framework and tools in one versioned package; Ajax components will be released separately on Codeplex.</p>
	<p>There is a bold goal at the beginning of the document (why is the doc a PDF/.doc and not just HTML!!!):</p>
	<blockquote><p>
Make ASP.NET Ajax the first-class choice for all Web 2.0 developers
</p></blockquote>
	<p>They are going to be catching up with richer CSS selection and DOM manipulation:</p>
	<div class="igBar"><a href="javascript:showCodeTxt('javascript-5');">PLAIN TEXT</a></div>
	<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span><br />
<div id="javascript-5">
	<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;">$query<span style="color:#006600; font-weight:bold;">&#40;</span>“textarea.<span style="color: #006600;">rich</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: #006600;">addHandler</span><span style="color:#006600; font-weight:bold;">&#40;</span>“<span style="color: #000066;">focus</span>”, <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>e<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> </div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; Sys.<span style="color: #006600;">Debug</span>.<span style="color: #006600;">trace</span><span style="color:#006600; font-weight:bold;">&#40;</span>“focused into “ + <span style="color:#006600; font-weight:bold;">&#40;</span>e.<span style="color: #006600;">eventTarget</span>.<span style="color: #006600;">id</span> || “?”<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span> </div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; .<span style="color: #006600;">setStyle</span><span style="color:#006600; font-weight:bold;">&#40;</span>“width”, <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> </div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> <span style="color:#006600; font-weight:bold;">&#40;</span>document.<span style="color: #006600;">body</span>.<span style="color: #006600;">clientWidth</span> – <span style="color:#800000;">10</span><span style="color:#006600; font-weight:bold;">&#41;</span> + “px”; </div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span> </div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; .<span style="color: #006600;">create</span><span style="color:#006600; font-weight:bold;">&#40;</span>Contoso.<span style="color: #006600;">UI</span>.<span style="color: #006600;">RichTextBehavior</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; showToolbar: <span style="color: #003366; font-weight: bold;">true</span>, </div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; fonts: <span style="color:#006600; font-weight:bold;">&#91;</span>“Arial”, “Times”, “Courier”<span style="color:#006600; font-weight:bold;">&#93;</span> </div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
	</div>
</div>
	<p>We have got some animation going on:</p>
	<div class="igBar"><a href="javascript:showCodeTxt('javascript-6');">PLAIN TEXT</a></div>
	<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span><br />
<div id="javascript-6">
	<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">$query<span style="color:#006600; font-weight:bold;">&#40;</span>“.<span style="color: #006600;">sprite</span>”<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">animate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#91;</span> </div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">new</span> Sys.<span style="color: #006600;">Animation</span>.<span style="color: #006600;">FadeIn</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">300</span><span style="color:#006600; font-weight:bold;">&#41;</span>, </div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span> </div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; “style.<span style="color: #006600;">backgroundColor</span>”: “#ff0000”, </div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; “style.<span style="color: #006600;">fontSize</span>”: “2em”<span style="color:#006600; font-weight:bold;">&#41;</span>, </div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; duration: <span style="color:#800000;">500</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:#006600; font-weight:bold;">&#125;</span>, </div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">new</span> Sys.<span style="color: #006600;">Animation</span>.<span style="color: #006600;">FadeOut</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">300</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;">&#93;</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;">&#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>What else?</p>
	<ul>
	<li>Accessibility</li>
	<li>Drag &#038; Drop</li>
	<li>Client-side Controls and Behavior</li>
	<li>Interoperability: OpenAjax hub support</li>
	<li>Tooling, tooling, tooling</li>
	</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=Ft0XxJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Ft0XxJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=077n9J"><img src="http://feeds.feedburner.com/~f/ajaxian?i=077n9J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=BcZ8lj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=BcZ8lj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/microsoft-aspnet-ajax-road-map/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/microsoft-aspnet-ajax-road-map</feedburner:origLink></item>
		<item>
		<title>Talking to .NET on the server with Jaxer</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/326599893/talking-to-net-on-the-server-with-jaxer</link>
		<comments>http://ajaxian.com/archives/talking-to-net-on-the-server-with-jaxer#comments</comments>
		<pubDate>Fri, 04 Jul 2008 11:56:43 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>.NET</category>
	<category>Aptana</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/talking-to-net-on-the-server-with-jaxer</guid>
		<description><![CDATA[	What does your CEO do? Paul Colton, CEO of Aptana, gets his fingers dirty. He just wrote a post about accessing COM objects from JavaScript with Jaxer.
	This is possible as the JavaScript is running on the server, and this server is running on Windows. You can download the source code to check it all out.
	PLAIN [...]]]></description>
			<content:encoded><![CDATA[	<p>What does your CEO do? Paul Colton, CEO of Aptana, gets his fingers dirty. He just wrote a post about <a href="http://www.aptana.com/blog/pcolton/jaxer_and_dot_net">accessing COM objects from JavaScript with Jaxer</a>.</p>
	<p>This is possible as the JavaScript is running on the server, and this server is running on Windows. You can <a href="http://www.aptana.com/system/files/MyCOMObject_0.zip">download the source code</a> to check it all out.</p>
	<div class="igBar"><a href="javascript:showCodeTxt('html-8');">PLAIN TEXT</a></div>
	<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span><br />
<div id="html-8">
	<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold;">&lt;html&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; &nbsp; &nbsp;<span style="color: #009900;"><a href="http://december.com/html/4/element/body.html"><span style="color: #000000; font-weight: bold;">&lt;body&gt;</span></a></span></div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> runat=<span style="color: #ff0000;">"server-proxy"</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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;function rotate(angle)</div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var img = COMObject(&quot;ImageProcessor.ImageProcessing&quot;);</div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;img.LoadImage(Jaxer.request.documentRoot + &quot;/photo.jpg&quot;);</div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;img.RotateImage(angle);</div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;img.SaveImage(Jaxer.request.documentRoot + &quot;/new.jpg&quot;);</div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;"><a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">&lt;input</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"angle"</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; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;"><a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">&lt;input</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"button"</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">"Rotate"</span></div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">onclick</span>=<span style="color: #ff0000;">"rotate(document.getElementById('angle').value);</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: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; document.getElementById('img').src =</span></div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; document.getElementById('img').src + '?' + new Date()"</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; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;"><a href="http://december.com/html/4/element/br.html"><span style="color: #000000; font-weight: bold;">&lt;br</span></a> /<span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;"><a href="http://december.com/html/4/element/img.html"><span style="color: #000000; font-weight: bold;">&lt;img</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">'img'</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"new.jpg"</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; &nbsp; &nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/body&gt;</span></span></div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/html&gt;</span></span></div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
	</div>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=lSk4dJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=lSk4dJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=f0WG5J"><img src="http://feeds.feedburner.com/~f/ajaxian?i=f0WG5J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=70mctj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=70mctj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/talking-to-net-on-the-server-with-jaxer/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/talking-to-net-on-the-server-with-jaxer</feedburner:origLink></item>
		<item>
		<title>Evil GIFs: Hiding Java in your image</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/326396803/evil-gifs-hiding-java-in-your-image</link>
		<comments>http://ajaxian.com/archives/evil-gifs-hiding-java-in-your-image#comments</comments>
		<pubDate>Fri, 04 Jul 2008 05:47:06 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>Security</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/evil-gifs-hiding-java-in-your-image</guid>
		<description><![CDATA[	What if you could encode a Jar file as an image and trick the browser to run it? This is what Ben Lorica reported from a black hat briefing webinar:
	
During a recent webinar to promote the upcoming Black Hat briefings in Las Vegas, a group of hackers announced the creation of a hybrid file that [...]]]></description>
			<content:encoded><![CDATA[	<p>What if you could encode a Jar file as an image and trick the browser to run it? This is what <a href="http://radar.oreilly.com/archives/2008/06/partial-same-origin-bypass-wit.html">Ben Lorica</a> reported from a <a href="http://www.blackhat.com/html/bh-usa-08/bh-us-08-main.html">black hat briefing</a> <a href="http://w.on24.com/r.htm?e=110934&#038;s=1&#038;k=A92ADCEB2C17510419DCEE35E11604F7">webinar</a>:</p>
	<blockquote><p>
During a recent webinar to promote the upcoming Black Hat briefings in Las Vegas, a group of hackers announced the creation of a hybrid file that can potentially bypass a browser's same origin policy. They created a GIF file that also happens to be a JAR file ( a "GIFAR" file). Once uploaded onto a web site, and assuming the web server runs a JVM, it allows one to run a malicious java applet on someone else's web server.</p>
	<p>Details were not provided, since the hackers claim that Sun is still working on a patch. For more on hybrid (image) files as attack vectors, go to minute 41:23 of the webinar.
</p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=vNdZFJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=vNdZFJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=ahNL6J"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ahNL6J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=j3FYTj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=j3FYTj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/evil-gifs-hiding-java-in-your-image/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/evil-gifs-hiding-java-in-your-image</feedburner:origLink></item>
		<item>
		<title>IE8 showing how serious it is about security</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/325894216/ie8-showing-how-serious-it-is-about-security</link>
		<comments>http://ajaxian.com/archives/ie8-showing-how-serious-it-is-about-security#comments</comments>
		<pubDate>Thu, 03 Jul 2008 15:58:45 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>IE</category>
	<category>Security</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/ie8-showing-how-serious-it-is-about-security</guid>
		<description><![CDATA[	The IE8 team has created a blitz on its blog with a slew of posts on security. There is a ton of great stuff here, and is well worth going into detail on each post:
	IE8 and Trustworthy Browsing
	At first they set the scene:
	
This blog post frames our approach in IE8 for delivering trustworthy browsing. The [...]]]></description>
			<content:encoded><![CDATA[	<p>The IE8 team has created a blitz on its blog with a slew of posts on security. There is a ton of great stuff here, and is well worth going into detail on each post:</p>
	<p><a href="http://blogs.msdn.com/ie/archive/2008/06/24/ie8-and-trustworthy-browsing.aspx">IE8 and Trustworthy Browsing</a></p>
	<p>At first they set the scene:</p>
	<blockquote><p>
This blog post frames our approach in IE8 for delivering trustworthy browsing. The topic is complicated enough that some context and even history (before we go into any particular feature) is important, and so some readers may find this post a bit basic as it’s written for a wide audience. In previous posts here, we’ve written about IE8 for developers: the work in standards support, developer tools, script performance, and more. In future posts, we’ll write about IE8 for end-users (beyond the benefits of improved performance, activities, and Web Slices). This post starts a series about trustworthy browsing, a topic important for developers and end-users and everyone on the web. By setting the context and motivation with this post, the next posts that dive into the details of IE8 will build on this foundation.</p>
	<p>Trustworthy refers to one of our overall goals: provide the most secure and most reliable browser that respects user choice and keeps users in control of their machine and their information. For reference, Microsoft’s framework for Trustworthy Computing in general spans four areas: security, privacy, reliability, and business practices.
</p></blockquote>
	<p><a href="http://blogs.msdn.com/ie/archive/2008/07/02/ie8-security-part-iii-smartscreen-filter.aspx">IE8 Security Part III: SmartScreen® Filter</a></p>
	<p>For Internet Explorer 8, we’ve built upon the success of the Phishing Filter feature (which blocks over a million phishing attacks weekly) to develop the SmartScreen® Filter, a replacement that improves upon the Phishing Filter in a number of important ways:</p>
	<ul>
	<li>Improved user interface </li>
	<li>Faster performance </li>
	<li>New heuristics &amp; enhanced telemetry </li>
	<li>Anti-Malware support </li>
	<li>Improved Group Policy support </li>
	</ul>
	<p><a href="http://blogs.msdn.com/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx">IE8 Security Part IV: The XSS Filter</a></p>
	<p>The XSS Filter operates as an IE8 component with visibility into all requests / responses flowing through the browser. When the filter discovers likely XSS in a cross-site request, it identifies and neuters the attack if it is replayed in the server’s response. Users are not presented with questions they are unable to answer – IE simply blocks the malicious script from executing.</p>
	<p>With the new XSS Filter, IE8 Beta 2 users encountering a Type-1 XSS attack will see a notification.</p>
	<p><a href="http://blogs.msdn.com/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx">IE8 Security Part V: Comprehensive Protection</a></p>
	<p>As we were planning Internet Explorer 8, our security teams looked closely at the common attacks in the wild and the trends that suggest where attackers will be focusing their attention next. While we were building new Security features, we also worked hard to ensure that powerful new features (like Activities and Web Slices) minimize attack surface and don’t provide attackers with new targets. Out of our planning work, we classified threats into three major categories: Web Application Vulnerabilities, Browser &#038; Add-on Vulnerabilities, and Social Engineering Threats. For each class of threat, we developed a set of layered mitigations to provide defense-in-depth protection against exploits.
</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=sC1DkJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=sC1DkJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=Ji8UqJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Ji8UqJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=ZqF4Cj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ZqF4Cj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/ie8-showing-how-serious-it-is-about-security/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/ie8-showing-how-serious-it-is-about-security</feedburner:origLink></item>
		<item>
		<title>ratproxy: Rat out those security issues in your Web app</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/325894217/ratproxy-rat-out-those-security-issues-in-your-web-app</link>
		<comments>http://ajaxian.com/archives/ratproxy-rat-out-those-security-issues-in-your-web-app#comments</comments>
		<pubDate>Thu, 03 Jul 2008 15:49:32 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>Security</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/ratproxy-rat-out-those-security-issues-in-your-web-app</guid>
		<description><![CDATA[	Michal Zalewski, of Google, has released ratproxy, a tool to test your Web application against attacks such as XSS and XSRF:
	
Ratproxy is a semi-automated, largely passive web application security audit tool. It is meant to complement active crawlers and manual proxies more commonly used for this task, and is optimized specifically for an accurate and [...]]]></description>
			<content:encoded><![CDATA[	<p>Michal Zalewski, of Google, has released <a href="http://code.google.com/p/ratproxy/">ratproxy</a>, a tool to test your Web application against attacks such as XSS and XSRF:</p>
	<blockquote><p>
Ratproxy is a semi-automated, largely passive web application security audit tool. It is meant to complement active crawlers and manual proxies more commonly used for this task, and is optimized specifically for an accurate and sensitive detection, and automatic annotation, of potential problems and security-relevant design patterns based on the observation of existing, user-initiated traffic in complex web 2.0 environments. The approach taken with ratproxy offers several important advantages over more traditional methods: </p>
	<ul>
<li><a id="What_is_ratproxy?"><strong>No risk of disruptions.</strong> In the default operating mode, tool does not generate a high volume of attack-simulating traffic, and as such may be safely employed against production systems at will, for all types of ad hoc, post-release audits. Active scanners may trigger DoS conditions or persistent XSSes, and hence are poorly suited for live platforms. </a></li>
</ul>
	<ul>
<li><a id="What_is_ratproxy?"><strong>Low effort, high yield.</strong> Compared to active scanners or fully manual proxy-based testing, <i>ratproxy</i> assessments take very little time or bandwidth to run, and proceed in an intuitive, distraction-free manner - yet provide a good insight into the inner workings of a product, and the potential security vulnerabilities therein. They also afford a consistent and predictable coverage of user-accessible features. </a></li>
</ul>
	<ul>
<li><a id="What_is_ratproxy?"><strong>Preserved control flow of human interaction.</strong> By silently following the browser, the coverage in locations protected by nonces, during other operations valid only under certain circumstances, or during dynamic events such as cross-domain <tt>Referer</tt> data disclosure, is greatly enhanced. Brute-force crawlers and fuzzers usually have no way to explore these areas in a reliable manner. </a></li>
</ul>
	<ul>
<li><a id="What_is_ratproxy?"><strong>WYSIWYG data on script behavior.</strong> Javascript interfaces and event handlers are explored precisely to a degree they are used in the browser, with no need for complex guesswork or simulations. Active scanners often have a significant difficulty exploring JSON responses, <tt>XMLHttpRequest()</tt> behavior, UI-triggered event data flow, and the like.  </a></li>
</ul>
	<ul>
<li><a id="What_is_ratproxy?"><strong>Easy process integration.</strong> The proxy can be transparently integrated into an existing manual security testing or interface QA processes without introducing a significant setup or operator training overhead. </a></li>
</ul>
	</blockquote>
	<p>What about other solutions?</p>
	<blockquote><p>
There are numerous alternative proxy tools meant to aid security auditors - most notably WebScarab, Paros, Burp, ProxMon, and Pantera. Stick with whatever suits your needs, as long as you get the data you need in the format you like.</p>
	<p>That said, ratproxy is there for a reason. It is designed specifically to deliver concise reports that focus on prioritized issues of clear relevance to contemporary web 2.0 applications, and to do so in a hands-off, repeatable manner. It should not overwhelm you with raw HTTP traffic dumps, and it goes far beyond simply providing a framework to tamper with the application by hand.</p>
	<p>Ratproxy implements a number of fairly advanced and unique checks based on our experience with these applications, as well as all the related browser quirks and content handling oddities. It features a sophisticated content-sniffing functionality capable of distinguishing between stylesheets and Javascript code snippets, supports SSL man-in-the-middle, on the fly Flash ActionScript? decompilation, and even offers an option to confirm high-likelihood flaw candidates with very lightweight, a built-in active testing module.</p>
	<p>Last but not least, if you are undecided, the proxy may be easily chained with third-party security testing proxies of your choice.
</p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=kSvF6J"><img src="http://feeds.feedburner.com/~f/ajaxian?i=kSvF6J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=tu1JOJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=tu1JOJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=hztBjj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=hztBjj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/ratproxy-rat-out-those-security-issues-in-your-web-app/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/ratproxy-rat-out-those-security-issues-in-your-web-app</feedburner:origLink></item>
		<item>
		<title>OpenLaszlo 4.1: DHTML ready for primetime</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/325865568/openlaszlo-41-dhtml-ready-for-primetime</link>
		<comments>http://ajaxian.com/archives/openlaszlo-41-dhtml-ready-for-primetime#comments</comments>
		<pubDate>Thu, 03 Jul 2008 15:19:29 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Ajax</category>
	<category>Front Page</category>
	<category>Adobe</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/openlaszlo-41-dhtml-ready-for-primetime</guid>
		<description><![CDATA[	OpenLaszlo is a fascinating project, and got even more interesting when they went meta, and allowed you to general Ajax applications as well as SWF ones. The 4.1 release is a big one, as it brings full parity to the Ajax side of the house:
	
OpenLaszlo 4.1 is a major release bringing full support for both [...]]]></description>
			<content:encoded><![CDATA[	<p>OpenLaszlo is a fascinating project, and got even more interesting when they went meta, and allowed you to general Ajax applications as well as SWF ones. The <a href="http://weblog.openlaszlo.org/archives/2008/06/now-available-41-dhtml-recommended-release/">4.1 release</a> is a big one, as it brings full parity to the Ajax side of the house:</p>
	<blockquote><p>
OpenLaszlo 4.1 is a major release bringing full support for both the DHTML/Ajax and the SWF/Flash platforms. It also includes over 800 bug fixes and a significantly improved documentation suite.</p>
	<p>OpenLaszlo 4.1 has been fully-qualified across the following browser/platform combinations: Safari3/OSX, Firefox2/OSX, Internet Explorer 7/WinXP, Firefox 2/WinXP, and Firefox 2/Linux. We have tested the full suite of demos, samplers, and example applications with the requirement that, when possible, DHTML applications behave the same as their SWF counterparts.</p>
	<p>OpenLaszlo 4.1 is now the recommended release for all developers on all platforms, and current users of OL 3.x and 4.0 should investigate upgrading to this new release.</p>
	<p>Preliminary support for SWF9 is included in this release but has not been enabled in the developer console.
</p></blockquote>
	<p>At the same time, the team announced <a href="http://weblog.openlaszlo.org/archives/2008/07/500000-openlaszlo-downloads/">500,000 downloads</a>. Congrats!
</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=3Pe0qJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=3Pe0qJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=4S6QnJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=4S6QnJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=AOVRBj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=AOVRBj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/openlaszlo-41-dhtml-ready-for-primetime/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/openlaszlo-41-dhtml-ready-for-primetime</feedburner:origLink></item>
		<item>
		<title>JavaScript Plugins; The beauty of loosely coupled code</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/325865570/javascript-plugins-the-beauty-of-loosely-coupled-code</link>
		<comments>http://ajaxian.com/archives/javascript-plugins-the-beauty-of-loosely-coupled-code#comments</comments>
		<pubDate>Thu, 03 Jul 2008 15:16:27 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>JavaScript</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/javascript-plugins-the-beauty-of-loosely-coupled-code</guid>
		<description><![CDATA[	James Coglan wrote a piece on There is no such thing as a JavaScript plugin that uses jQuery as a use case for how simple it is to have a plugin contract.
	When you think about plugins in many environments, you have strict contracts through interfaces that you have to implement. With jQuery, you can just [...]]]></description>
			<content:encoded><![CDATA[	<p>James Coglan wrote a piece on <a href="http://blog.jcoglan.com/2008/07/02/there-is-no-such-thing-as-a-javascript-plugin/">There is no such thing as a JavaScript plugin</a> that uses jQuery as a use case for how simple it is to have a plugin contract.</p>
	<p>When you think about plugins in many environments, you have strict contracts through interfaces that you have to implement. With jQuery, you can just add on to the jQuery prototype, normally seen through the alias <code>$.fn</code>. </p>
	<p>James shows the simple example of:</p>
	<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><br />
<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;">$.<span style="color: #006600;">fn</span>.<span style="color: #006600;">makeThemRed</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">css</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span>color: <span style="color: #3366CC;">'red'</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</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>
	<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;">&#40;</span><span style="color: #3366CC;">'p'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">makeThemRed</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
	</div>
</div>
	<p>I read this as the power of the simplicity, but John Resig, again in his <a href="http://ejohn.org/blog/jquery-plugins-size-and-storage/">three parter</a> saw it a little different, I think by thinking too much about the title :)</p>
	<blockquote><p>
I will contend that such a thing as plugins exist and are logically distinct from "random JavaScript code that manipulates other JavaScript code" as long as the following points are met:</p>
	<ol>
	<li>There have to be explicit points upon which a plugin can attach. James notes the most common one in jQuery (jQuery.fn) but we have tons more - events, animations, selectors - all over the board for developers to snap in to.</li>
	<li>Even more importantly: Those points have to be documented or, at the very least, be under some sort of agreement that they will be treated like a normal piece of the user-facing API. In jQuery we treat all plugin extension points as "user-facing API" and only ever change them in major releases (if at all) and always provide an alternative for authors to use.</li>
	<li>Finally, there has to be some sort of repository for navigating these plugins. This is a huge differentiator. Simply referring to "code in the wild" as plugins doesn't really cut it if there's no commitment to hosting them and keeping their documentation and examples alive.</li>
</ol>
	</blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=4ojxLJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=4ojxLJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=VAPFhJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=VAPFhJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=BfcCVj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=BfcCVj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/javascript-plugins-the-beauty-of-loosely-coupled-code/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/javascript-plugins-the-beauty-of-loosely-coupled-code</feedburner:origLink></item>
		<item>
		<title>Shrinking frameworks; Dojo in 6k</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/325861792/shrinking-frameworks-dojo-in-6k</link>
		<comments>http://ajaxian.com/archives/shrinking-frameworks-dojo-in-6k#comments</comments>
		<pubDate>Thu, 03 Jul 2008 15:12:36 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>Dojo</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/shrinking-frameworks-dojo-in-6k</guid>
		<description><![CDATA[	Dojo is a framework that you can bend for your needs. You have very fine grained control on what you want in your base dojo.js, how other components are loaded, and a final custom JavaScript file.
	Brad Neuberg showed a project, SearchTools, that added local search via Gears, and had a custom Dojo that wasn't Dojo [...]]]></description>
			<content:encoded><![CDATA[	<p>Dojo is a framework that you can bend for your needs. You have very fine grained control on what you want in your base dojo.js, how other components are loaded, and a final custom JavaScript file.</p>
	<p>Brad Neuberg showed a project, SearchTools, that added local search via Gears, and had a custom Dojo that wasn't Dojo in a very small package.</p>
	<p>Alex Russell has taken this further and explained how he <a href="http://www.sitepen.com/blog/2008/07/01/dojo-in-6k/">got Dojo to 6k</a> by implementing a stub loader, so many of the functions were lazy loading stubs instead of full method bodies.</p>
	<p>His use case was mobile, or small embedded devices in general:</p>
	<blockquote><p>
On an iPhone with a clean cache the stubbed-out dojo.js cut in half the time required to load and evaluate. Sure, it’ll take more time on the network when parts of the toolkit are actually used (say, in response to a click event), but for mobile device scenarios, it’s going to be hard to beat the flexibility and speed of the stub loader when pulling Dojo into a page.
</p></blockquote>
	<p>The post really wasn't about Dojo per se, but John Resig parsed the sentence: "Even so-called “lightweight” libraries like jQuery" and <a href="http://ejohn.org/blog/jquery-plugins-size-and-storage/">in one part of a three part post</a> hit back:</p>
	<blockquote><p>
The way it's worded you would assume that you were paying a large, up-front, cost to using jQuery when, in fact, there is very little overhead. jQuery has been shown to be the fastest loading JavaScript library for non-cached code and considerably fast for cached code.
</p></blockquote>
	<p>If we ignore the frameworks and think of the meta-point it is a lot more interesting.
</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=H3xlqJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=H3xlqJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=YqUxCJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=YqUxCJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=ejnH8j"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ejnH8j" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/shrinking-frameworks-dojo-in-6k/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/shrinking-frameworks-dojo-in-6k</feedburner:origLink></item>
		<item>
		<title>eval(’foo=a’, obj.fn); How you will be private in Firefox 3.1</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/325155719/eval%e2%80%99fooa%e2%80%99-objfn-how-you-will-be-private-in-firefox-31</link>
		<comments>http://ajaxian.com/archives/eval%e2%80%99fooa%e2%80%99-objfn-how-you-will-be-private-in-firefox-31#comments</comments>
		<pubDate>Wed, 02 Jul 2008 19:58:19 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>JavaScript</category>
	<category>Firefox</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/eval%e2%80%99fooa%e2%80%99-objfn-how-you-will-be-private-in-firefox-31</guid>
		<description />
			<content:encoded><![CDATA[<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=OXAt4J"><img src="http://feeds.feedburner.com/~f/ajaxian?i=OXAt4J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=mHXdyJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=mHXdyJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=MHrRyj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=MHrRyj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/eval%e2%80%99fooa%e2%80%99-objfn-how-you-will-be-private-in-firefox-31/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/eval%e2%80%99fooa%e2%80%99-objfn-how-you-will-be-private-in-firefox-31</feedburner:origLink></item>
		<item>
		<title>Starfield Sim Picasa Gallery with Prototype</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/324991378/starfield-sim-picasa-gallery-with-prototype</link>
		<comments>http://ajaxian.com/archives/starfield-sim-picasa-gallery-with-prototype#comments</comments>
		<pubDate>Wed, 02 Jul 2008 15:58:23 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>Prototype</category>
	<category>UI</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/starfield-sim-picasa-gallery-with-prototype</guid>
		<description><![CDATA[	Asad Sheth has been playing with a Starfield Sim Picasa Gallery using Prototype. He said:
	
I think it's an interesting way to think about temporally organized data (I could see RSS feeds navigated through some similar mechanism, with the z-axis being time and the x- and y-axes being some kind of similarity measure), and further display [...]]]></description>
			<content:encoded><![CDATA[	<p>Asad Sheth has been playing with a <a href="http://www.chungeez.com/phodyssey/">Starfield Sim Picasa Gallery</a> using Prototype. He said:</p>
	<blockquote><p>
I think it's an interesting way to think about temporally organized data (I could see RSS feeds navigated through some similar mechanism, with the z-axis being time and the x- and y-axes being some kind of similarity measure), and further display that graphical presentation is not the sole domain of Flash.
</p></blockquote>
	<p><a href="http://www.chungeez.com/phodyssey/"><img src="http://ajaxian.com/wp-content/images/phodyssey.png" alt="PhOdyssey" border="0" width="385" height="473"/></a>
</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=fxkzBJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=fxkzBJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=tzn0CJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=tzn0CJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=Itw0Rj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Itw0Rj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/starfield-sim-picasa-gallery-with-prototype/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/starfield-sim-picasa-gallery-with-prototype</feedburner:origLink></item>
		<item>
		<title>Loom: Annotation based Java framework</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/324972136/loom-annotation-based-java-framework</link>
		<comments>http://ajaxian.com/archives/loom-annotation-based-java-framework#comments</comments>
		<pubDate>Wed, 02 Jul 2008 15:28:56 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>Java</category>
	<category>Framework</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/loom-annotation-based-java-framework</guid>
		<description><![CDATA[	Ignacio Coloma has announced Loom 1.0 RC 1. Loom is an annotation-based java web framework that includes a ton of new features in this release. After some selective process, these are the bits that could be of most interest for Ajax developers:
	
	Generates HTML 5 markup (with data-* fields), including CSS classes
with the property type.

	Based on [...]]]></description>
			<content:encoded><![CDATA[	<p>Ignacio Coloma has announced <a href="http://loom.extrema-sistemas.org/">Loom 1.0 RC 1</a>. Loom is an annotation-based java web framework that includes a ton of new features in this release. After some selective process, these are the bits that could be of most interest for Ajax developers:</p>
	<ul>
	<li>Generates HTML 5 markup (with data-* fields), including CSS classes<br />
with the property type.
</li>
	<li>Based on prototype
</li>
	<li>An ever-growing list of (progressive-enhancement) web components,<br />
including: multiple file upload, tabs, menus...
</li>
	<li>Dead-simple javascript validation library with i18n support.
</li>
	<li>...which mimics the process at the server, in case javascript is disabled.
</li>
</ul>
	<p>Just give it a try at <a href="http://loom.extrema-sistemas.com/loomdemo/ebanking/Mortgages.action?event=preEdit">the demo</a>. Try introducing invalid input, and check the sources by clicking the "View source" link at the top right of the page. Everything in the demo should work with javascript disabled, including multiple file upload.</p>
	<p>The framework also includes a libraries repository which pulls debug/optimized javascript from the google CDN:</p>
	<div class="igBar"><a href="javascript:showCodeTxt('html-14');">PLAIN TEXT</a></div>
	<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span><br />
<div id="html-14">
	<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;l :script resource=<span style="color: #ff0000;">"prototype"</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;"><span style="color: #009900;">&lt;l :script resource=<span style="color: #ff0000;">"scriptaculous"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></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: #009900;">&lt;l :param <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"load"</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">"builder,effects"</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;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>/l&gt;</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>This snippet of code would translate into this, if development is disabled:</p>
	<div class="igBar"><a href="javascript:showCodeTxt('html-15');">PLAIN TEXT</a></div>
	<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span><br />
<div id="html-15">
	<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span></div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066;">src</span>=<span style="color: #ff0000;">"//ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span></div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066;">src</span>=<span style="color: #ff0000;">"//ajax.googleapis.com/ajax/libs/scriptaculous/1.8.1/scriptaculous.js?load=builder,effects"</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;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
	</div>
</div>
	<p>Or this if not:</p>
	<div class="igBar"><a href="javascript:showCodeTxt('html-16');">PLAIN TEXT</a></div>
	<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span><br />
<div id="html-16">
	<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"/js/prototype-1.6.0/prototype-1.6.0.2-shrinkvars.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: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span></div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066;">src</span>=<span style="color: #ff0000;">"//ajax.googleapis.com/ajax/libs/scriptaculous/1.8.1/scriptaculous.js?load=builder,effects"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
	</div>
</div>
	<p>More details about the framework are at <a href="http://loom.extrema-sistemas.org/documentation">the reference guide</a>. Ignacio would be grateful for any feedback!
</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=ABExQJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ABExQJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=59fvSJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=59fvSJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=5Q2Thj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=5Q2Thj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/loom-annotation-based-java-framework/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/loom-annotation-based-java-framework</feedburner:origLink></item>
		<item>
		<title>State of Ajax for June 2008: Apple flexes Open Web muscles</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/324378230/state-of-ajax-for-june-2008-apple-flexes-open-web-muscles</link>
		<comments>http://ajaxian.com/archives/state-of-ajax-for-june-2008-apple-flexes-open-web-muscles#comments</comments>
		<pubDate>Tue, 01 Jul 2008 22:07:07 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>Roundup</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/state-of-ajax-for-june-2008-apple-flexes-open-web-muscles</guid>
		<description><![CDATA[	June was a great month for the Open Web. First, Apple delivered a one-two punch with showing Mobile Me, powered by the native Web and SproutCore, and showing SquirrelFish as JavaScript starts to get a loooot faster on browsers. Firefox had a party as millions of people downloaded Firefox 3 final release, and immediately talked [...]]]></description>
			<content:encoded><![CDATA[	<p>June was a great month for the Open Web. First, Apple delivered a one-two punch with <a href="http://ajaxian.com/archives/audible-ajax-episode-27-sproutcore-with-charles-jolley">showing Mobile Me, powered by the native Web</a> and SproutCore, and showing <a href="http://ajaxian.com/archives/squirrelfish-technical-excitement">SquirrelFish</a> as JavaScript starts to get a loooot faster on browsers. Firefox had a party as millions of people downloaded Firefox 3 final release, and immediately talked about 3.1 coming soon. The flywheel is moving. Opera 9.5 is also there, and IE 8 beta 2 is coming in August.</p>
	<p>Velocity, the performance conference, also showed the interest in making the Web faster, as many tools were announced to help out us devs. We also saw a lot of cool uses of Canvas/SVG, as developers delve low level and see that they actually work very well.</p>
	<p>So, we sit at the crux of two paths. On the one hand, browsers are getting faster and faster and adding great new technology for us (including small things like CSS variables. finally!). On the other hand, we are creating more compelling user experiences (e.g. 280 Slides, Mobile Me). These forces work with each other. As we do cooler apps that push the boundaries, the browsers have to come back with better performance and tools to match. Expectations are changing, and we need to match them.</p>
	<p>Here is the full roundup:</p>
	<p><b>Browsers</b></p>
	<ul>
	<li><a href="http://ajaxian.com/archives/flipping-out-over-safari">Flipping out over Safari</a></li>
	<li><a href="http://ajaxian.com/archives/ie-8-beta-2-coming-in-august">IE 8 beta 2 coming in August</a></li>
	<li><a href="http://ajaxian.com/archives/x-ua-compatible-ieemulateie7">X-UA-Compatible: IE=EmulateIE7</a></li>
	<li><a href="http://ajaxian.com/archives/mozilla-week-from-client-firefox-3-to-server-weave-to-mobile-fennec">Mozilla Week: From Client (Firefox 3) to Server (Weave) to Mobile (Fennec)</a></li>
	<li><a href="http://ajaxian.com/archives/opera-gets-proactive-and-helps-you-fix-your-code">Opera gets proactive and helps you fix your code</a></li>
	<li><a href="http://ajaxian.com/archives/browser-memory-footprints-watching-with-real-usage">Browser Memory Footprints; Watching with real usage</a></li>
	<li><a href="http://ajaxian.com/archives/browser-news-ie-ff-safari-and-opera">Browser News: IE, FF, Safari, and Opera</a></li>
	</ul>
	<p><b>Standards</b></p>
	<ul>
	<li><a href="http://ajaxian.com/archives/new-in-standards-acid4-and-html-5-update">New in standards: Acid4 and HTML 5 update</a></li>
	<li><a href="http://ajaxian.com/archives/w3c-progress-events-10-working-draft">W3C Progress Events 1.0 Working Draft</a></li>
	<li><a href="http://ajaxian.com/archives/openajax-alliance-white-papers-on-mobile-ajax-and-recent-browser-advances">OpenAjax Alliance white papers on Mobile Ajax and recent browser advances</a></li>
	</ul>
	<p><b>Performance</b></p>
	<ul>
	<li><a href="http://ajaxian.com/archives/squirrelfish-details-on-the-new">SquirrelFish: Details on the new</a></li>
	<li><a href="http://ajaxian.com/archives/squirrelfish-technical-excitement">SquirrelFish: Technical excitement</a></li>
	<li><a href="http://ajaxian.com/archives/string-performance-in-ie-arrayjoin-vs-continued">String Performance in IE: Array.join vs += continued</a></li>
	<li><a href="http://ajaxian.com/archives/is-finally-the-answer-to-all-ie6-memory-leak-issues">Is "finally" the answer to all IE6 memory leak issues?</a></li>
	<li><a href="http://ajaxian.com/archives/jiffy-firebug-plugin-fine-grained-calculation-of-performance-timings">Jiffy Firebug Plugin: Fine grained calculation of performance timings</a></li>
	<li><a href="http://ajaxian.com/archives/yslow-now-has-firefox-3-support">YSlow now has Firefox 3 support</a></li>
	<li><a href="http://ajaxian.com/archives/rendering-performance-in-canvas-compared-to-svg-and-vml">Rendering performance in Canvas compared to SVG and VML</a></li>
	<li><a href="http://ajaxian.com/archives/clientperf-simple-client-side-rails-performance">Clientperf: Simple Client-Side Rails Performance</a></li>
	<li><a href="http://ajaxian.com/archives/kite-keynotes-internet-test-environment">KITE: Keynote's Internet Test Environment</a></li>
	<li><a href="http://ajaxian.com/archives/a-technique-for-lazy-script-loading">A Technique For Lazy Script Loading</a></li>
	<li><a href="http://ajaxian.com/archives/velocity-conference-videos-and-slides">Velocity Conference Videos and Slides</a></li>
	</ul>
	<p><b>JavaScript</b></p>
	<ul>
	<li><a href="http://ajaxian.com/archives/an-interview-with-280-north-on-objective-j-and-cappuccino">An interview with 280 North on Objective-J and Cappuccino</a></li>
	<li><a href="http://ajaxian.com/archives/steve-yegge-on-server-side-javascript">Steve Yegge on Server Side JavaScript</a></li>
	<li><a href="http://ajaxian.com/archives/javascript-html-construction-benchmark">Javascript HTML Construction Benchmark</a></li>
	<li><a href="http://ajaxian.com/archives/the-fight-for-cross-domain-xmlhttprequest">The fight for cross domain XMLHttpRequest</a></li>
	<li><a href="http://ajaxian.com/archives/evalfooa-objfn-how-you-arent-private-in-firefox">eval('foo=a', obj.fn); How you aren't private in Firefox</a></li>
	<li><a href="http://ajaxian.com/archives/google-analytics-after-onload-and-documentwrite-for-xhtml">Google Analytics after onLoad and document.write for XHTML</a></li>
	<li><a href="http://ajaxian.com/archives/johnson-wrapping-javascript-in-a-loving-ruby-embrace-and-arax">Johnson: Wrapping JavaScript in a loving Ruby embrace, and ARAX</a></li>
	<li><a href="http://ajaxian.com/archives/gaia-widgets-30-glory">Gaia Widgets 3.0 "Glory"</a></li>
	<li><a href="http://ajaxian.com/archives/audible-ajax-episode-27-sproutcore-with-charles-jolley">Audible Ajax Episode 27: SproutCore with Charles Jolley</a></li>
	<li><a href="http://ajaxian.com/archives/sproutcore-being-talked-of-as-a-flash-killer-really">SproutCore: Being talked of as a Flash killer? Really?</a></li>
	<li><a href="http://ajaxian.com/archives/rumor-apple-sproutcore-and-coherent">Apple, SproutCore, and Coherent</a></li>
	<li><a href="http://ajaxian.com/archives/modulesjs-a-new-stand-alone-javascript-module-loader">modules.js: A New Stand-alone JavaScript Module Loader</a></li>
	<li><a href="http://ajaxian.com/archives/mascara-putting-lipstick-on-javascript">Mascara: Putting lipstick on JavaScript?</a></li>
	<li><a href="http://ajaxian.com/archives/validanguage-09-more-form-validation">Validanguage 0.9: More form validation</a></li>
	<li><a href="http://ajaxian.com/archives/symbolicweb-ajax-and-comet-with-lisp">SymbolicWeb: Ajax and Comet with Lisp</a></li>
	<li><a href="http://ajaxian.com/archives/dragtable-drag-and-drop-reorderable-columns-for-an-html-table">dragtable: drag-and-drop reorderable columns for an HTML table</a></li>
	<li><a href="http://ajaxian.com/archives/pingdom-checks-on-javascript-usage-on-top-sites">Pingdom checks on JavaScript usage on top sites</a></li>
	<li><a href="http://ajaxian.com/archives/ensure-on-demand-resources">ensure: on demand resources</a></li>
	<li><a href="http://ajaxian.com/archives/algebraic-data-types-in-javascript">Algebraic Data Types in JavaScript</a></li>
	</ul>
	<p><b>ExtJS</b></p>
	<ul>
	<li><a href="http://ajaxian.com/archives/leveraging-ext-js-on-the-server-via-jaxer">Leveraging Ext JS on the Server via Jaxer</a></li>
	<li><a href="http://ajaxian.com/archives/wiiextjs-building-ajax-apps-that-run-on-the-wii-opera-browser">WiiExtJS: Building Ajax apps that run on the Wii Opera browser</a></li>
	</ul>
	<p><b>Dojo</b></p>
	<ul>
	<li><a href="http://ajaxian.com/archives/badging-flickr-with-dojo">Badging Flickr with Dojo</a></li>
	<li><a href="http://ajaxian.com/archives/dojo-firebug-lite-beyond-consolelog">Dojo Firebug Lite: Beyond console.log</a></li>
	<li><a href="http://ajaxian.com/archives/nexaweb-announces-dojoe-markup-and-runtime">Nexaweb announces dojo.E markup and runtime</a></li>
	<li><a href="http://ajaxian.com/archives/ajaxian-featured-tutorial-a-double-dose-of-dojo">A Double Dose of Dojo</a></li>
	<li><a href="http://ajaxian.com/archives/dojo-gets-aim-api-support-from-aol">Dojo gets AIM API Support from AOL</a></li>
	<li><a href="http://ajaxian.com/archives/working-with-web-services-with-ease-dojodata-and-the-wikipediastore">Working with Web Services with ease; dojo.data and the WikipediaStore</a></li>
	</ul>
	<p><b>YUI</b></p>
	<ul>
	<li><a href="http://ajaxian.com/archives/yui-autogrid-correctly-resize-the-grids">YUI Autogrid: Correctly resize the grids</a></li>
	</ul>
	<p><b>MooTools</b></p>
	<ul>
	<li><a href="http://ajaxian.com/archives/mootools-12-released">MooTools 1.2 Released</a></li>
	<li><a href="http://ajaxian.com/archives/cnet-updates-the-clientside-mootools-plugin-repository">CNET Updates the Clientside MooTools Plugin Repository</a></li>
	</ul>
	<p><b>jQuery</b></p>
	<ul>
	<li><a href="http://ajaxian.com/archives/jquery-ui-15-effects-api-and-themes">jQuery UI 1.5: Effects, API, and Themes</a></li>
	<li><a href="http://ajaxian.com/archives/jquery-release-126-performance-improvements-and-dimensions-plugin-added-to-core">jQuery Release 1.2.6:  Performance Improvements and Dimensions Plugin Added to Core</a></li>
	<li><a href="http://ajaxian.com/archives/implementing-infinite-scrolling-with-jquery">Implementing infinite scrolling with jQuery</a></li>
	<li><a href="http://ajaxian.com/archives/jquery-selectors-refcard-now-available">jQuery Selectors Refcard Now Available</a></li>
	<li><a href="http://ajaxian.com/archives/preloading-images-with-jquery">Preloading Images with jQuery</a></li>
	<li><a href="http://ajaxian.com/archives/jstree-jquery-based-javascript-tree-component">jsTree: jQuery-based JavaScript tree component</a></li>
	</ul>
	<p><b>Gears, AIR, and more</b></p>
	<ul>
	<li><a href="http://ajaxian.com/archives/gears-03-released-and-google-io-videos-on-ajax-related-content-available">Gears 0.3 Released, and Google I/O videos on Ajax related content available</a></li>
	<li><a href="http://ajaxian.com/archives/frizone-javascript-dev-test-and-deployment-environment">Frizone: JavaScript dev, test, and deployment environment</a></li>
	<li><a href="http://ajaxian.com/archives/frank-sinatra-flash-and-ajax-deckmyplacecom">Frank Sinatra, Flash, and Ajax: Deckmyplace.com</a></li>
	<li><a href="http://ajaxian.com/archives/flxhr-flash-based-xhr-from-flensed">flXHR: Flash based XHR from flensed</a></li>
	<li><a href="http://ajaxian.com/archives/seo-and-ria-get-closer-together-with-flash-indexing-news">SEO and RIA get closer together with Flash indexing news</a></li>
	<li><a href="http://ajaxian.com/archives/fluidapp-gets-another-new-build">Fluid.app gets another new build</a></li>
	</ul>
	<p><b>Design: CSS, SVG, Canvas</b></p>
	<ul>
	<li><a href="http://ajaxian.com/archives/yahoo-design-stencil-kit-10">Yahoo! Design Stencil Kit 1.0</a></li>
	<li><a href="http://ajaxian.com/archives/using-css-transforms-to-build-a-coverflow-effect">Using CSS transforms to Build a Coverflow Effect</a></li>
	<li><a href="http://ajaxian.com/archives/mozilla-experiments-with-applying-svg-effects-to-html">Mozilla Experiments with Applying SVG Effects to HTML</a></li>
	<li><a href="http://ajaxian.com/archives/ajaxian-featured-tutorial-coda-slider-effect">Coda Slider Effect</a></li>
	<li><a href="http://ajaxian.com/archives/3763">Algorithm Ink: Algorithm-driven Painting with Sharing and On-line Editing</a></li>
	<li><a href="http://ajaxian.com/archives/photo-collages-with-canvas">Photo Collages with Canvas</a></li>
	<li><a href="http://ajaxian.com/archives/css-general-sibling-combinator-in-action">CSS General Sibling Combinator in action</a></li>
	<li><a href="http://ajaxian.com/archives/css-variables-are-here">CSS Variables are .... here!</a></li>
	<li><a href="http://ajaxian.com/archives/shiftzoom-zoomify-your-oversize-images">ShiftZoom: Zoomify your oversize images</a></li>
	<li><a href="http://ajaxian.com/archives/moowheel-and-moocirclepack-for-visualizations">MooWheel and MooCirclePack for visualizations</a></li>
	<li><a href="http://ajaxian.com/archives/hypno-trip-down-the-fractal-rug">Hypno trip down the fractal rug</a></li>
	<li><a href="http://ajaxian.com/archives/our-signal-page-cloud-visualization-of-digg-reddit-delicious-hacker-news">Our Signal: Page Cloud Visualization of Digg, Reddit, Delicious, Hacker news</a></li>
	<li><a href="http://ajaxian.com/archives/processing-and-obsessing">Processing and Obsessing</a></li>
	</ul>
	<p><b>Showcases</b></p>
	<ul>
	<li><a href="http://ajaxian.com/archives/addressbook-history-goes-into-the-cloud-with-app-engine">Addressbook History goes into the cloud with App Engine</a></li>
	<li><a href="http://ajaxian.com/archives/endpoint-resolver-javascript-library-to-hunt-for-location-redirects">Endpoint Resolver: JavaScript Library to hunt for Location redirects</a></li>
	<li><a href="http://ajaxian.com/archives/acrobatcom-pdf-and-flash-sitting-in-a-tree">Acrobat.com: PDF and Flash sitting in a tree</a></li>
	<li><a href="http://ajaxian.com/archives/crossdomainxml-java-and-jnlp">crossdomain.xml, Java, and JNLP</a></li>
	<li><a href="http://ajaxian.com/archives/canvas-quest-rogue-like-rpg-game">Canvas Quest: Rogue like RPG game</a></li>
	<li><a href="http://ajaxian.com/archives/yet-another-web-20-button-generator">Yet Another Web 2.0 Button Generator</a></li>
	<li><a href="http://ajaxian.com/archives/podipodi-enso-quicksilver-for-the-web">PodiPodi: Enso / Quicksilver for the Web</a></li>
	<li><a href="http://ajaxian.com/archives/72photos-protoscripty-photo-sharing-site">72photos: Proto/Scripty Photo Sharing Site</a></li>
	</ul>
	<p><b>Utilties</b></p>
	<ul>
	<li><a href="http://ajaxian.com/archives/nitobibug-cross-browser-debugging">NitobiBug: Cross browser debugging</a></li>
	<li><a href="http://ajaxian.com/archives/javascript-protocol-fuzzer">JavaScript Protocol Fuzzer</a></li>
	<li><a href="http://ajaxian.com/archives/json-diff-released">JSON Diff Released</a></li>
	<li><a href="http://ajaxian.com/archives/tilestack-hypercard-for-the-web">TileStack: HyperCard for the Web</a></li>
	</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=mMTkIJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=mMTkIJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=4GmN5J"><img src="http://feeds.feedburner.com/~f/ajaxian?i=4GmN5J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=Sdf99j"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Sdf99j" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/state-of-ajax-for-june-2008-apple-flexes-open-web-muscles/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/state-of-ajax-for-june-2008-apple-flexes-open-web-muscles</feedburner:origLink></item>
		<item>
		<title>SEO and RIA get closer together with Flash indexing news</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/324261835/seo-and-ria-get-closer-together-with-flash-indexing-news</link>
		<comments>http://ajaxian.com/archives/seo-and-ria-get-closer-together-with-flash-indexing-news#comments</comments>
		<pubDate>Tue, 01 Jul 2008 19:05:34 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>Google</category>
	<category>Adobe</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/seo-and-ria-get-closer-together-with-flash-indexing-news</guid>
		<description><![CDATA[	Google and Adobe have been working on improving the indexing of Flash applications. In the past we could simply look at the SWF files and try to grab strings out of them, but there was zero context.
	To go further Google uses the SWF Searchable work from Adobe to be more of a 'human' actor on [...]]]></description>
			<content:encoded><![CDATA[	<p>Google and Adobe have been working on <a href="http://googlewebmastercentral.blogspot.com/2008/06/improved-flash-indexing.html">improving the indexing</a> of Flash applications. In the past we could simply look at the SWF files and try to grab strings out of them, but there was zero context.</p>
	<p>To go further Google uses the <a href="http://www.adobe.com/devnet/flashplayer/articles/swf_searchability.html">SWF Searchable</a> work from Adobe to be more of a 'human' actor on the application.</p>
	<p>This is what it doesn't do:</p>
	<ol>
	<li>Googlebot does not execute some types of JavaScript. So if your web page loads a Flash file via JavaScript, Google may not be aware of that Flash file, in which case it will not be indexed.</li>
	<li>We currently do not attach content from external resources that are loaded by your Flash files. If your Flash file loads an HTML file, an XML file, another SWF file, etc., Google will separately index that resource, but it will not yet be considered to be part of the content in your Flash file.</li>
	<li>While we are able to index Flash in almost all of the languages found on the web, currently there are difficulties with Flash content written in bidirectional languages. Until this is fixed, we will be unable to index Hebrew language or Arabic language content from Flash files.</li>
	</ol>
	<p>This is good news for all rich applications. One of the common worries when it comes to richer application development is "what do search engines see" and we sometimes see people go back to the simpler world just to make that happier. With the search engines stepping up themselves, we can go back to writing applications that make sense for our human users, and hope that the computers catch up. Of course, we always have to do so in a practical way.
</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=9711qJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=9711qJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=Rwr2ZJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Rwr2ZJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=ISj4xj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ISj4xj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/seo-and-ria-get-closer-together-with-flash-indexing-news/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/seo-and-ria-get-closer-together-with-flash-indexing-news</feedburner:origLink></item>
		<item>
		<title>Infinite Web 2.0 Image with GWT</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/324218451/infinite-web-20-image-with-gwt</link>
		<comments>http://ajaxian.com/archives/infinite-web-20-image-with-gwt#comments</comments>
		<pubDate>Tue, 01 Jul 2008 17:56:40 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/infinite-web-20-image-with-gwt</guid>
		<description><![CDATA[	Didier Girard pinged us about Farbtube:
	
This Web 2.0 / GWT example allows to draw on an infinite canvas and to see others changes immediately. It works like Google Maps: Use the "Move" cursor to walk around the canvas

	Time for graffiti.
	
]]></description>
			<content:encoded><![CDATA[	<p>Didier Girard <a href="http://www.ongwt.com/post/2008/07/01/GWT-%3A-The-infinite-Web-20-image">pinged us</a> about <a href="http://www.farbtube.com/">Farbtube</a>:</p>
	<blockquote><p>
This Web 2.0 / GWT example allows to draw on an infinite canvas and to see others changes immediately. It works like Google Maps: Use the "Move" cursor to walk around the canvas
</p></blockquote>
	<p>Time for graffiti.</p>
	<p><img src="http://www.ongwt.com/public/WindowsLiveWriter_GWTTheinfiniteWeb2.0image_10D1A_image_2.png" border="0" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=y7fdZJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=y7fdZJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=yjqQ6J"><img src="http://feeds.feedburner.com/~f/ajaxian?i=yjqQ6J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=ztVRzj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ztVRzj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/infinite-web-20-image-with-gwt/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/infinite-web-20-image-with-gwt</feedburner:origLink></item>
		<item>
		<title>TCPSocket: Sockets in the browser</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/324216367/tcpsocket-sockets-in-the-browser</link>
		<comments>http://ajaxian.com/archives/tcpsocket-sockets-in-the-browser#comments</comments>
		<pubDate>Tue, 01 Jul 2008 17:50:36 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>Comet</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/tcpsocket-sockets-in-the-browser</guid>
		<description><![CDATA[	Michael Carter of Orbited has written about how he now likes to call Comet sockets in the browser, and has an implementation available that looks like this:
	PLAIN TEXT
	JAVASCRIPT:

	


&#160;

	
var conn = new TCPSocket&#40;hostname, port&#41;

	
&#160;

	
conn.onopen = function&#40;&#41; &#123; alert&#40;'connection opened!'&#41; &#125;

	
conn.onread = function&#40;data&#41; &#123; alert&#40;'RECEIVE: ' + data&#41; &#125;

	
conn.onclose = function&#40;data&#41; &#123; alert&#40;'connection closed!'&#41; &#125;

	
&#160;

	
conn.send&#40;'Hello World'&#41;;

	
&#160;



	

	
The above [...]]]></description>
			<content:encoded><![CDATA[	<p>Michael Carter of Orbited has written about how he now likes to call Comet <a href="http://cometdaily.com/2008/07/01/sockets-in-the-browser/">sockets in the browser</a>, and has an implementation available that looks like this:</p>
	<div class="igBar"><a href="javascript:showCodeTxt('javascript-18');">PLAIN TEXT</a></div>
	<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span><br />
<div id="javascript-18">
	<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> conn = <span style="color: #003366; font-weight: bold;">new</span> TCPSocket<span style="color:#006600; font-weight:bold;">&#40;</span>hostname, port<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">conn.<span style="color: #006600;">onopen</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> <span style="color: #000066;">alert</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'connection opened!'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">conn.<span style="color: #006600;">onread</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>data<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color: #000066;">alert</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'RECEIVE: '</span> + data<span style="color:#006600; font-weight:bold;">&#41;</span> <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;">conn.<span style="color: #006600;">onclose</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>data<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color: #000066;">alert</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'connection closed!'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
	<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">conn.<span style="color: #006600;">send</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'Hello World'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
	<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
	</div>
</div>
	<blockquote><p>
The above code code is all you need to know. It will open a TCP connection to hostname:port, and will send the data “Hello World”. Any data the server sends back will be alerted with the onread handler.</p>
	<p>The exact mechanism behind this innovation is pretty straightforward: Orbited is a router and firewall for incoming TCPSocket connections from the browser. It uses Comet techniques to establish bi-directional communication with the browser, then forwards all data over a raw TCP socket to the end point. Configuration allows access control enforcement so that the TCPSocket can only be connected to pre-approved end-points, so that the Orbited server isn’t an open relay.</p>
	<p>While this presents a paradigm shift in the way developers are tackling real-time, web-based applications today, it’s actually a return to the original method of writing network applications. Instead of writing applications based on web frameworks and throwing a Comet server in the mix, you can simply use the client-server architecture where the browser is the client, and the server is an arbitrary TCP server.
</p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=UjDfNJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=UjDfNJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=DP6EzJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=DP6EzJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=c2yxlj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=c2yxlj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/tcpsocket-sockets-in-the-browser/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/tcpsocket-sockets-in-the-browser</feedburner:origLink></item>
		<item>
		<title>MooWheel and MooCirclePack for visualizations</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/324145408/moowheel-and-moocirclepack-for-visualizations</link>
		<comments>http://ajaxian.com/archives/moowheel-and-moocirclepack-for-visualizations#comments</comments>
		<pubDate>Tue, 01 Jul 2008 16:02:51 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>JavaScript</category>
	<category>MooTools</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/moowheel-and-moocirclepack-for-visualizations</guid>
		<description><![CDATA[	MooWheel, the JavaScript connections visualization library, has been updated to version 0.2. 
	Updates include:
	
	New data format
	Text can now be hovered over, in addition to the dot
	Images can be added for each item
	
	You can see the popular Twitter example
 (thanks to Augsto Becciu, creator of TweetWheel).
	Also, MooCirclePack has just been released: 
	MooCirclePack is another stunning visualization [...]]]></description>
			<content:encoded><![CDATA[	<p><a href="http://www.unwieldy.net/moowheel/">MooWheel</a>, the JavaScript connections visualization library, has been updated to version 0.2. </p>
	<p>Updates include:</p>
	<ul>
	<li>New data format</li>
	<li>Text can now be hovered over, in addition to the dot</li>
	<li>Images can be added for each item</li>
	</ul>
	<p>You can see the popular <a href="http://www.unwieldy.net/moowheel/demo/twitter.html ">Twitter example</a><br />
 (thanks to Augsto Becciu, creator of TweetWheel).</p>
	<p>Also, <a href="http://www.unwieldy.net/moocirclepack/">MooCirclePack</a> has just been released: </p>
	<p>MooCirclePack is another stunning visualization library that brings circle packing to JavaScript. It is great for data that can be represented by size (eg: an alternative to a bar graph), or data that can be represented amorphously.</p>
	<p>There is a <a href="http://www.unwieldy.net/moocirclepack/demo/simple.html">non-Ajax demo</a>, and an <a href="http://www.unwieldy.net/moocirclepack/demo/json.html">Ajax one</a>.</p>
	<p><a href="http://www.unwieldy.net/moocirclepack/demo/simple.html"><img src="http://ajaxian.com/wp-content/images/moocirclepack.png" alt="MooCirclePack" border="0" width="468" height="579"/></a>
</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=k9AVbJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=k9AVbJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=ndsJ8J"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ndsJ8J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=qwVyHj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=qwVyHj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/moowheel-and-moocirclepack-for-visualizations/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/moowheel-and-moocirclepack-for-visualizations</feedburner:origLink></item>
		<item>
		<title>CSS Variables are …. here!</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/323355531/css-variables-are-here</link>
		<comments>http://ajaxian.com/archives/css-variables-are-here#comments</comments>
		<pubDate>Mon, 30 Jun 2008 16:26:26 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
	<category>Front Page</category>
	<category>CSS</category>
	<category>Safari</category>
		<guid isPermaLink="false">http://ajaxian.com/archives/css-variables-are-here</guid>
		<description><![CDATA[	We talked about how CSS variables are next a few months back, and now they are here!
	
WebKit now has an experimental implementation of CSS variables:
	You can test this feature using a WebKit nightly
	Test cases

	Once again, via Dylan Schiemann.

]]></description>
			<content:encoded><![CDATA[	<p>We talked about how <a href="http://ajaxian.com/archives/css-variables-are-next">CSS variables are next</a> a few months back, and <a href="http://lists.w3.org/Archives/Public/www-style/2008Jun/0230.html">now they are here!</a></p>
	<blockquote><p>
WebKit now has an experimental implementation of <a href="http://disruptive-innovations.com/zoo/cssvariables/">CSS variables</a>:</p>
	<p>You can test this feature using a <a href="http://nightly.webkit.org/">WebKit nightly</a></p>
	<p><a href="http://trac.webkit.org/browser/trunk/LayoutTests/fast/css/variables">Test cases</a>
</p></blockquote>
	<p>Once again, <a href="http://dylanschiemann.com/2008/06/24/css-variables-in-webkit/">via Dylan Schiemann</a>.
</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=BIz60I"><img src="http://feeds.feedburner.com/~f/ajaxian?i=BIz60I" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=6feNCI"><img src="http://feeds.feedburner.com/~f/ajaxian?i=6feNCI" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=BIL1ki"><img src="http://feeds.feedburner.com/~f/ajaxian?i=BIL1ki" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRSS>http://ajaxian.com/archives/css-variables-are-here/feed/</wfw:commentRSS>
	<feedburner:origLink>http://ajaxian.com/archives/css-variables-are-here</feedburner:origLink></item>
	</channel>
</rss>
