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

<channel>
	<title>Ajaxian &#187; Yahoo!</title>
	<atom:link href="http://ajaxian.com/by/topic/yahoo/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaxian.com</link>
	<description>Cleaning up the web with Ajax</description>
	<lastBuildDate>Tue, 22 May 2012 21:45:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
    	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Progressive enhancement using nothing but JavaScript?</title>
		<link>http://ajaxian.com/archives/progressive-enhancement-using-nothing-but-javascript</link>
		<comments>http://ajaxian.com/archives/progressive-enhancement-using-nothing-but-javascript#comments</comments>
		<pubDate>Fri, 17 Sep 2010 18:06:45 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Node]]></category>
		<category><![CDATA[Yahoo!]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=10342</guid>
		<description><![CDATA[Progressive enhancement is still a confusing matter for a lot of people who are very excited about the capabilities of JavaScript in modern browser environments. It can feel anachronistic to write your solutions for a non-JS environment and then once more enhances in JavaScript. I grew up like that so for me it is a <a href="http://ajaxian.com/archives/progressive-enhancement-using-nothing-but-javascript">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Progressive enhancement is still a confusing matter for a lot of people who are very excited about the capabilities of JavaScript in modern browser environments. It can feel anachronistic to write your solutions for a non-JS environment and then once more enhances in JavaScript. I grew up like that so for me it is a simple matter of doing the right thing but with today&#8217;s world of JavaScript libraries and out-of-the-box widgets it can seem a drag.</p>
<p>Enter Dav Glass of the YUI team. He&#8217;s been turning the concept of progressive enhancement around in his head and as a JS lover and backend code &#8220;endurer&#8221; he set out to solve this issue once and for all in a pure JavaScript way. </p>
<p>Here&#8217;s the issue: you cannot assume JS to be available on the client side as your visitors might be on a slow mobile connection or are paranoid enough to turn off JS or actually have it turned off for them by company policy or many other cases. </p>
<p>So in order to use pure JavaScript to render a solution that works for everybody the natural thing was to move the JS solution to the server side and re-use it on the client when it is possible.</p>
<p>If you say server-side JavaScript you end up quickly talking about Node.js and so did Dav.</p>
<p>Check out <a href="http://express.davglass.com/">the following demo</a>:</p>
<p><a href="http://express.davglass.com/"><img src="http://farm5.static.flickr.com/4087/4999257612_b24f441bbb.jpg" alt="Express.js, Node and YUI3 for progressive enhancement by photo"/></a></p>
<p>All of what you see is driven by JavaScript &#8211; there is no server-side PHP fallback. Yet if you turn off JavaScript in your browser, you get the same experience. </p>
<p>The reason is that Dav uses <a href="http://expressjs.com/">Express.js</a> and Node to render the HTML of the application server-side with JavaScript and <a href="http://developer.yahoo.com/yui/3/">YUI3</a>. The code <a href="http://github.com/davglass/yui-express/">is available on GitHub</a> and a video of him giving a talk about this is available soon on the <a href="http://yuiblog.com/">YUI blog</a>. </p>
<p>This is an exciting concept as it means that we can build progressively enhancing solutions using any widget library if we just think of the server-side case, too. This can mean a lot less code and easier maintenance as the only skill needed to build bullet-proof solutions is JavaScript. </p>
<p>The missing piece to the puzzle though is a fully fledged DOM renderer on the server side. DOMJS works but a C++ version would be much better in terms of performance and have all the features of DOM-2.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/progressive-enhancement-using-nothing-but-javascript/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Free talk at Yahoo on the 27th about the software revolution that is JavaScript</title>
		<link>http://ajaxian.com/archives/free-talk-at-yahoo-on-the-27th-about-the-software-revolution-that-is-javascript</link>
		<comments>http://ajaxian.com/archives/free-talk-at-yahoo-on-the-27th-about-the-software-revolution-that-is-javascript#comments</comments>
		<pubDate>Wed, 11 Aug 2010 08:42:00 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[Yahoo!]]></category>

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

		<guid isPermaLink="false">http://ajaxian.com/?p=8503</guid>
		<description><![CDATA[As part of an upcoming article on geo location I am putting together a few Geo Toys for myself and here is the first one. Addmap.js is a JavaScript that analyses an elements text content, finds geographical locations and links them to Google Maps. It also adds a map preview and a list of the <a href="http://ajaxian.com/archives/addmap-js-automatically-analyse-a-text-for-geo-locations-and-add-a-map">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>As part of an upcoming article on geo location I am putting together a few <a href="http://github.com/codepo8/geotoys">Geo Toys</a> for myself and here is the first one. Addmap.js is a JavaScript that analyses an elements text content, finds geographical locations and links them to Google Maps. It also adds a map preview and a list of the found locations to the element.</p>
<p>See addmap.js in action below - all the content in the green box is generated from the paragraph of text above it. You can try it out for yourself by clicking the screenshot.</p>
<p><a href="http://isithackday.com/hacks/geo/addmap.html"><img src="http://ajaxian.com/wp-content/images/textandmap.png" alt="Demonstration screenshot of addmap.js" title="Demo of addmap.js" width="557" height="282" class="size-full wp-image-8502" /></a></p>
<p>Using addmap.js is easy - sign up for a <a href="http://code.google.com/apis/maps/signup.html">Google Maps Key</a> and provide it as a configuration parameter. Then call the analyse function with the ID of the element to analyse as the parameter:</p>
<div class="igBar"><a href="javascript:showCodeTxt('xml-2');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">XML:</span>
<div id="xml-2">
<div class="xml">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;script</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"http://github.com/codepo8/geotoys/raw/master/addmap.js"</span><span style="font-weight: bold; color: black;">&gt;</span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/script<span style="font-weight: bold; color: black;">&gt;</span></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="font-weight: bold; color: black;">&lt;script<span style="font-weight: bold; color: black;">&gt;</span></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;">addmap.config.mapkey = 'YOUR_API_KEY';</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">addmap.analyse('content');</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="font-weight: bold; color: black;">&lt;/script<span style="font-weight: bold; color: black;">&gt;</span></span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>The script uses <a href="http://developer.yahoo.com/yql">YQL</a> and <a href="http://developer.yahoo.com/geo/placemaker">Yahoo PlaceMaker</a> under the hood, for more info and updates on this, <a href="http://www.wait-till-i.com/2010/01/29/adding-map-links-and-a-small-map-to-any-text-using-javascript-addmap-js/">check the blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/addmap-js-automatically-analyse-a-text-for-geo-locations-and-add-a-map/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using YQL as a proxy for cross-domain Ajax</title>
		<link>http://ajaxian.com/archives/using-yql-as-a-proxy-for-cross-domain-ajax</link>
		<comments>http://ajaxian.com/archives/using-yql-as-a-proxy-for-cross-domain-ajax#comments</comments>
		<pubDate>Tue, 12 Jan 2010 00:42:08 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[XmlHttpRequest]]></category>
		<category><![CDATA[Yahoo!]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[crossdomain]]></category>
		<category><![CDATA[json-p]]></category>
		<category><![CDATA[json-p-x]]></category>
		<category><![CDATA[yql]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=8416</guid>
		<description><![CDATA[OK, this is nothing shockingly new, but I found it pretty useful. Using jQuery, Ajax has become more or less a one-liner: PLAIN TEXT JAVASCRIPT: $&#40;document&#41;.ready&#40;function&#40;&#41;&#123; &#160; $&#40;'.ajaxtrigger'&#41;.click&#40;function&#40;&#41;&#123; &#160; &#160; $&#40;'#target'&#41;.load&#40;$&#40;this&#41;.attr&#40;'href'&#41;&#41;; &#160; &#160; return false; &#160; &#125;&#41;; &#125;&#41;; This loads the document any link with a class of "ajaxtrigger" points to and updates the content <a href="http://ajaxian.com/archives/using-yql-as-a-proxy-for-cross-domain-ajax">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>OK, this is nothing shockingly new, but I found it pretty useful. Using jQuery, Ajax has become more or less a one-liner:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-7');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-7">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color:#006600; font-weight:bold;">&#40;</span>document<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">ready</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-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;">&#40;</span><span style="color: #3366CC;">'.ajaxtrigger'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">click</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; $<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'#target'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">load</span><span style="color:#006600; font-weight:bold;">&#40;</span>$<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">attr</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'href'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</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;"><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>This loads the document any link with a class of "ajaxtrigger" points to and updates the content of the element with the ID "target". If the link is a third party link on another domain it fails though - and silently at that. Normally you'd work around that with a server-side proxy, but you can actually do without it. </p>
<p><a href="http://developer.yahoo.com/yql">YQL</a> is a hosted web service that can scrape HTML for you. It also runs the HTML through HTML Tidy and caches it for you. For example to load http://bbc.co.uk you'd use the following statement:</p>
<div class="igBar"><a href="javascript:showCodeTxt('code-8');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">CODE:</span>
<div id="code-8">
<div class="code">
<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;">select * from html where url=<span style="color:#CC0000;">'http://bbc.co.uk'</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>As a URL this turns into:</p>
<div class="igBar"><a href="javascript:showCodeTxt('code-9');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">CODE:</span>
<div id="code-9">
<div class="code">
<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;">http:<span style="color:#FF9933; font-style:italic;">//query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D'http%3A%2F%2Fbbc.co.uk'%0A&amp;format=xml </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>You could request JSON-P by setting the output format to json and define a callback, but that would give the HTML back as a massive object which is not nice. YQL also offers JSON-P-X as an alternative which is a JSON object with a callback and the HTML as a string inside a simple Array. See it by clicking the following URL:</p>
<p><a href="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%27http%3A%2F%2Fbbc.co.uk%27%0A&#038;format=xml&#038;diagnostics=false&#038;callback=foo">http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%27http%3A%2F%2Fbbc.co.uk%27%0A&#038;format=xml&#038;diagnostics=false&#038;callback=foo</a></p>
<p>Now, using jQuery's <code>getJSON()</code> we can load this even without a named callback function. That way we can use one method for content that is third party and simply use <code>load()</code> for the other:</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>
<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;">$<span style="color:#006600; font-weight:bold;">&#40;</span>document<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">ready</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #003366; font-weight: bold;">var</span> container = $<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'#target'</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;">&#40;</span><span style="color: #3366CC;">'.ajaxtrigger'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">click</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; doAjax<span style="color:#006600; font-weight:bold;">&#40;</span>$<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">attr</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'href'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</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; <span style="color: #003366; font-weight: bold;">function</span> doAjax<span style="color:#006600; font-weight:bold;">&#40;</span>url<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span>url.<span style="color: #006600;">match</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'^http'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; $.<span style="color: #006600;">getJSON</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"http://query.yahooapis.com/v1/public/yql?"</span>+</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #3366CC;">"q=select%20*%20from%20html%20where%20url%3D%22"</span>+</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; encodeURIComponent<span style="color:#006600; font-weight:bold;">&#40;</span>url<span style="color:#006600; font-weight:bold;">&#41;</span>+</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #3366CC;">"%22&amp;format=xml'&amp;callback=?"</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #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></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: #000066; font-weight: bold;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span>data.<span style="color: #006600;">results</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; container.<span style="color: #006600;">html</span><span style="color:#006600; font-weight:bold;">&#40;</span>data.<span style="color: #006600;">results</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> errormsg = <span style="color: #3366CC;">'&lt;p&gt;Error: could not load the page.&lt;/p&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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; container.<span style="color: #006600;">html</span><span style="color:#006600; font-weight:bold;">&#40;</span>errormsg<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <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; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <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;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; $<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'#target'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">load</span><span style="color:#006600; font-weight:bold;">&#40;</span>url<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;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>You can see the <a href="http://icant.co.uk/articles/crossdomain-ajax-with-jquery/error-handling.html">demo in action here</a>, more details are available <a href="http://www.wait-till-i.com/2010/01/10/loading-external-content-with-ajax-using-jquery-and-yql/">on my blog</a> and the source is available <a href="http://github.com/codepo8/crossdomain-ajax-with-jquery-and-yql">on GitHub</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/using-yql-as-a-proxy-for-cross-domain-ajax/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Crockford on JavaScript: A Public Lecture Series at Yahoo!</title>
		<link>http://ajaxian.com/archives/crockford-on-javascript-a-public-lecture-series-at-yahoo</link>
		<comments>http://ajaxian.com/archives/crockford-on-javascript-a-public-lecture-series-at-yahoo#comments</comments>
		<pubDate>Tue, 05 Jan 2010 11:45:10 +0000</pubDate>
		<dc:creator>Brad Neuberg</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[Yahoo!]]></category>

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

		<guid isPermaLink="false">http://ajaxian.com/?p=8183</guid>
		<description><![CDATA[It is amazing how much easier it is these days to build pretty sweet mashups by using hosted services. Here's a screencast of using Yahoo, Bing and Google to build a search interface in under 25 minutes without having to read any API docs or installing SDKs by using YQL: Building a search mashup with <a href="http://ajaxian.com/archives/three-search-engines-one-interface-25-minutes-live-code">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>It is amazing how much easier it is these days to build pretty sweet mashups by using hosted services. Here's a screencast of using Yahoo, Bing and Google to build a search interface in under 25 minutes without having to read any API docs or installing SDKs by using YQL:</p>
<p><object width="450" height="309"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=8075850&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=8075850&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="309"></embed></object>
<p><a href="http://vimeo.com/8075850">Building a search mashup with YQL using Google, Yahoo and Bing - live :)</a> from <a href="http://vimeo.com/user574521">Christian Heilmann</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Give it a lick of paint and you have a <a href="http://icant.co.uk/goohoobi/">pretty sweet little tool</a>: </p>
<p><a href="http://icant.co.uk/goohoobi/"><img src="http://farm3.static.flickr.com/2701/4170924993_3cc418285b.jpg" width="450" alt="GooHooBi - search Google, Yahoo and Bing in one go!"/></a></p>
<p>All the <a href="http://github.com/codepo8/GooHooBi">source code is available on GitHub</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/three-search-engines-one-interface-25-minutes-live-code/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>YUI 3 Is Out!</title>
		<link>http://ajaxian.com/archives/yui-3-is-out</link>
		<comments>http://ajaxian.com/archives/yui-3-is-out#comments</comments>
		<pubDate>Wed, 30 Sep 2009 11:30:34 +0000</pubDate>
		<dc:creator>Brad Neuberg</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[Toolkit]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7471</guid>
		<description><![CDATA[The YUI team has put out YUI 3.0: We’re pleased to announce today the general-availability release of YUI 3.0.0. YUI 3’s core infrastructure (YUI, Node and Event) and its utility suite (including Animation, IO, Drag &#38; Drop and more) are all considered production-ready with today’s release. This is a ground-up redesign of YUI: Selector-driven: YUI <a href="http://ajaxian.com/archives/yui-3-is-out">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-7472" title="yui_snippet" src="http://ajaxian.com/wp-content/images/yui_snippet.png" alt="yui_snippet" width="289" height="59" /></p>
<p><a href="http://www.yuiblog.com/blog/2009/09/29/yui-3-0-0/">The YUI team has put out YUI 3.0</a>:</p>
<blockquote><p>We’re pleased to announce today the general-availability release of <a href="http://developer.yahoo.com/yui/3/">YUI 3.0.0</a>. YUI 3’s core infrastructure (<a href="http://developer.yahoo.com/yui/3/yui/">YUI</a>, <a href="http://developer.yahoo.com/yui/3/node/">Node</a> and <a href="http://developer.yahoo.com/yui/3/event/">Event</a>) and its utility suite (including <a href="http://developer.yahoo.com/yui/3/anim/">Animation</a>, <a href="http://developer.yahoo.com/yui/3/io/">IO</a>, <a href="http://developer.yahoo.com/yui/3/dd/">Drag &amp; Drop</a> and more) are all considered production-ready with today’s release.</p></blockquote>
<p>This is a ground-up redesign of YUI:</p>
<blockquote>
<ol>
<li><strong>Selector-driven:</strong> YUI 3 is built around one of the lightest, fastest selector engines available, bringing the expressive power of the CSS selector specification into actions that target DOM nodes.</li>
<li><strong>Syntactically terse:</strong> Without polluting the global namespace, YUI 3 supports a more terse coding style in which more can be accomplished with less code.</li>
<li><strong>Self-completing:</strong> YUI 3’s light (6.2KB gzipped) seed file can serve as the starting point for any implementation. As long as this seed file is present on the page, you can load any module in the library on the fly. And all modules brought into the page via the built-in loader are done so via combo-handled, non-blocking HTTP requests. This makes loading the library safe, easy and fast.</li>
<li><strong>Sandboxed:</strong> YUI modules are bound to YUI instances when you <code>use()</code> them; this protects you against changes that might happen later in the page’s lifecycle. (In other words, if someone blows away a module you’re using after you’ve created your YUI instance, your code won’t be affected.)</li>
</ol>
</blockquote>
<p>It's especially nice to see the new terse YUI namespacing, so you can just type YUI() instead of the older longer syntax.</p>
<p style="text-align: center;"><a href="http://developer.yahoo.com/yui/"><img class="aligncenter" title="Screenshot of YUI Home Page" src="http://yuiblog.com/assets/yui-homepage-20090929-105915.png" alt="" width="459" height="278" /></a></p>
<p>The cool thing about YUI (and this release) is that it is literally driving the Yahoo! Home Page. That's pretty awesome of Yahoo! to release this code and make it generally available to the wider community. Congrats to the whole YUI team on the new release.</p>
<p><a href="http://www.yuiblog.com/blog/2009/09/29/yui-3-0-0/">See the original announcement blog post</a> on getting started with YUI 3.0 in 3 easy steps.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/yui-3-is-out/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>YUI 2.8.0 &#8211; Local Storage wrapper, better Flash interaction, crossdomain connections and progress bars</title>
		<link>http://ajaxian.com/archives/yui-280-local-storage-wrapper-better-flash-interaction-crossdomain-connections-and-progress-bars</link>
		<comments>http://ajaxian.com/archives/yui-280-local-storage-wrapper-better-flash-interaction-crossdomain-connections-and-progress-bars#comments</comments>
		<pubDate>Thu, 17 Sep 2009 22:49:48 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[Yahoo!]]></category>
		<category><![CDATA[YUI]]></category>
		<category><![CDATA[localstorage]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[swf]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7395</guid>
		<description><![CDATA[Yahoo this week announced the new release of the Yahooo User Interface library. This is great because it answers the question if the 2.x library is still being maintained whilst 3.0 is out and buzzing. The detailed release notes for YUI 2.8.0 show that there is indeed a lot of maintenance and improvement still being <a href="http://ajaxian.com/archives/yui-280-local-storage-wrapper-better-flash-interaction-crossdomain-connections-and-progress-bars">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Yahoo this week announced the <a href="http://developer.yahoo.com/yui/">new release of the Yahooo User Interface library</a>. This is great because it answers the question if the 2.x library is still being maintained whilst <a href="http://yuilibrary.com/projects/yui3/wiki">3.0 is out and buzzing</a>. The detailed <a href="http://yuilibrary.com/projects/yui2/wiki/ReadMe/Rollup_2.8.0">release notes for YUI 2.8.0</a> show that there is indeed a lot of maintenance and improvement still being done.</p>
<p>Some of the highlights of the new release are four new components - the <a href="http://developer.yahoo.com/yui/storage/">Storage Utility</a>, <a href="http://developer.yahoo.com/yui/swfstore/">SWFStore Utility</a>, <a href="http://developer.yahoo.com/yui/swf/">SWF Utility</a>, and the <a href="http://developer.yahoo.com/yui/progressbar/">ProgressBar Control</a>. </p>
<p>The Storage Utility is a wrapper for local storage supporting Google Gears, Flash or HTML5 and was submitted by Matt Snider who works for Mint.com.</p>
<p>The SWFStore utility, written by Alaric Cole provides a predictable API for interaction of Flash and JavaScript whilst Allen Rabinovic's SWF Utility is a more granular way of embedding Flash in web sites than <a href="http://code.google.com/p/swfobject/">SWFobject</a>. </p>
<p>The ProgressBar control by Daniel Barreiro aka Satyam is another example of just how detailed YUI controls are when it comes to exposing custom events. This allows you to either use it out of the box or extend it by overwriting only what you need rather than messing around with the main code of the control.</p>
<p>Other noteworthy changes in YUI with the 2.8.0 release are an extension to the event handling component to support <a href="http://icant.co.uk/sandbox/eventdelegation/">event delegation</a> without having to write it in detail, the connection manager supporting crossdomain requests and getting cut up into smaller on-demand components, and the Carousel control getting a "gallery style".</p>
<p>Check out the more in-depth overview on the <a href="http://www.yuiblog.com/blog/2009/09/14/yui-2-8-0/">YUI blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/yui-280-local-storage-wrapper-better-flash-interaction-crossdomain-connections-and-progress-bars/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pimping JSON &#8211; YQL now offers JSONP-X!</title>
		<link>http://ajaxian.com/archives/pimping-json-yql-now-offers-jsonp-x</link>
		<comments>http://ajaxian.com/archives/pimping-json-yql-now-offers-jsonp-x#comments</comments>
		<pubDate>Thu, 09 Jul 2009 15:48:11 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Yahoo!]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[json-p]]></category>
		<category><![CDATA[jsonp-x]]></category>
		<category><![CDATA[outputformat]]></category>
		<category><![CDATA[yql]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7089</guid>
		<description><![CDATA[Yesterday's announcement of Yahoo's YQL now supporting insert, update and delete overshadowed another interesting new feature: JSONP-X output. Here's what it is and why it is useful: YQL data can be returned in XML which is annoying to use in JavaScript (for starters because of crossdomain issues in Ajax). JSON is much easier as it <a href="http://ajaxian.com/archives/pimping-json-yql-now-offers-jsonp-x">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday's announcement of <a href="http://developer.yahoo.com/yql">Yahoo's YQL</a> now supporting <a href="http://developer.yahoo.com/yql/guide/yql-iud-statements.html">insert, update and delete</a> overshadowed another interesting new feature: JSONP-X output. </p>
<p>Here's what it is and why it is useful: YQL data can be returned in XML which is annoying to use in JavaScript (for starters because of crossdomain issues in Ajax). JSON is much easier as it is native to JavaScript. JSON-P makes it even more easy for us to use as JSON data wrapped in a function call allows us to get the data by creating script nodes dynamically.</p>
<p>Where it falls apart is when you want to get back HTML from some system (not on your own server) and use it in JavaScript. You either need to convert the XML to JavaScript and create HTML elements from it or you need to loop through a JSON construct and assemble HTML from it. JSONP-X works around that step for you. In essence it is XML as a string returned inside a JSON object. </p>
<p>XML:</p>
<div class="igBar"><a href="javascript:showCodeTxt('xml-16');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">XML:</span>
<div id="xml-16">
<div class="xml">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;results<span style="font-weight: bold; color: black;">&gt;</span></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; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;div</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"following"</span><span style="font-weight: bold; color: black;">&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; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;span<span style="font-weight: bold; color: black;">&gt;</span></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; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;a</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"http://twitter.com/codepo8"</span><span style="font-weight: bold; color: black;">&gt;</span></span>Codepo8<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/a<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/span<span style="font-weight: bold; color: black;">&gt;</span></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; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/div<span style="font-weight: bold; color: black;">&gt;</span></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;"><span style="font-weight: bold; color: black;">&lt;/results<span style="font-weight: bold; color: black;">&gt;</span></span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>JSON:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-17');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-17">
<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;"><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #3366CC;">"results"</span>:<span style="color:#006600; font-weight:bold;">&#91;</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: #3366CC;">"div"</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: #3366CC;">"id"</span>:<span style="color: #3366CC;">"following"</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: #3366CC;">"span"</span>:<span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color: #3366CC;">"a"</span>:<span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #3366CC;">"href"</span>:<span style="color: #3366CC;">"http://twitter.com/codepo8"</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #3366CC;">"text"</span>:<span style="color: #3366CC;">"Codepo8"</span> </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>JSON-P:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-18');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-18">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">foo<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #3366CC;">"results"</span>:<span style="color:#006600; font-weight:bold;">&#91;</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: #3366CC;">"div"</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: #3366CC;">"id"</span>:<span style="color: #3366CC;">"following"</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: #3366CC;">"span"</span>:<span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color: #3366CC;">"a"</span>:<span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #3366CC;">"href"</span>:<span style="color: #3366CC;">"http://twitter.com/codepo8"</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #3366CC;">"text"</span>:<span style="color: #3366CC;">"Codepo8"</span> </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>JSONP-X:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-19');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-19">
<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;">foo<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #3366CC;">"results"</span>:<span style="color:#006600; font-weight:bold;">&#91;</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: #3366CC;">"&lt;div id=<span style="color: #000099; font-weight: bold;">\"</span>following<span style="color: #000099; font-weight: bold;">\"</span>&gt;&lt;span&gt;&lt;a href=<span style="color: #000099; font-weight: bold;">\"</span>http://twitter.com/codepo8<span style="color: #000099; font-weight: bold;">\"</span>&gt;Codepo8&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;"</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;">&#93;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>The way to invoke the JSONP-X output is to provide a format parameter of xml and a callback parameter.</p>
<p>This allows me for example to get the list of people I follow on twitter from my twitter homepage and display it in another document with a few lines of JavaScript without any need of using the API or having a local proxy:</p>
<div class="igBar"><a href="javascript:showCodeTxt('html-20');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span>
<div id="html-20">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span> <span style="color: #000066;">charset</span>=<span style="color: #ff0000;">"utf-8"</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;">function foo(o){</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; var out = document.getElementById('container');</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; var content = o.results[0]</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; out.innerHTML = content.replace(/href=&quot;\//g,'href=&quot;http://twitter.com/');</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">}</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span>&nbsp; &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> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Ftwitter.com%2Fcodepo8%22%20and%20xpath%20%3D%20%22%2F%2Fdiv[%40id%3D%27following_list%27]%22&amp;format=xml&amp;callback=foo"</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>
</ol>
</div>
</div>
</div>
<p>More details on this <a href="http://www.wait-till-i.com/2009/07/09/another-interesting-yql-feature-xml-with-callback-json-p-x/">are available in this blog post</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/pimping-json-yql-now-offers-jsonp-x/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Machsend: P2P file sharing via Browser Plus</title>
		<link>http://ajaxian.com/archives/machsend-p2p-file-sharing-via-browser-plus</link>
		<comments>http://ajaxian.com/archives/machsend-p2p-file-sharing-via-browser-plus#comments</comments>
		<pubDate>Fri, 03 Jul 2009 10:52:52 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Component]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7041</guid>
		<description><![CDATA[Alex MacCaw has released Machsend, a Yahoo! Browser Plus plugin that enables P2P file transfers from inside the browser. It showcases what can be done with a BP plugin, leaving you wish cross browser functionality. I guess it is kinda fun to hack the browser :)]]></description>
			<content:encoded><![CDATA[<p><img src="http://leadthinking.com/wp-content/uploads/2009/06/Picture-13-542x262.png"/></p>
<p>Alex MacCaw has released <a href="http://leadthinking.com/89-machsend-p2p-in-the-browser">Machsend</a>, a Yahoo! Browser Plus plugin that enables P2P file transfers from inside the browser.</p>
<p>It showcases what can be done with a BP plugin, leaving you wish cross browser functionality.</p>
<p>I guess it is kinda fun to <a href="http://hackthebrowser.org/">hack the browser</a> :)</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/machsend-p2p-file-sharing-via-browser-plus/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GeoMaker &#8211; geo locations as microformats or a map from texts or URLs</title>
		<link>http://ajaxian.com/archives/geomaker-geo-locations-as-microformats-or-a-map-from-texts-or-urls</link>
		<comments>http://ajaxian.com/archives/geomaker-geo-locations-as-microformats-or-a-map-from-texts-or-urls#comments</comments>
		<pubDate>Thu, 02 Jul 2009 08:02:33 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Yahoo!]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Geo]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[placemaker]]></category>
		<category><![CDATA[wrapper]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7052</guid>
		<description><![CDATA[As preparation for an upcoming tech talk about Placemaker I thought it would be good to take a bit of the pain out of the geolocation service by making an interface for it. Placemaker works the following way: you post some content or a URL to it, it goes through the content or gets the <a href="http://ajaxian.com/archives/geomaker-geo-locations-as-microformats-or-a-map-from-texts-or-urls">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>As preparation for an <a href="http://upcoming.yahoo.com/event/2799061/">upcoming tech talk about Placemaker</a> I thought it would be good to take a bit of the pain out of the geolocation service by making an interface for it. <a href="http://developer.yahoo.com/geo/placemaker">Placemaker</a> works the following way: you post some content or a URL to it, it goes through the content or gets the content from the URL and analyzes it. It then finds geographical locations in the text and disambiguates them (for example to skip names like "Jack London" and not consider it the city London). Finally you get it back as XML. </p>
<p>The annoying thing is that Placemaker only support POST request and does not have a JSON output - for now. <a href="http://icant.co.uk/geomaker/">GeoMaker</a> allows non-developers to enter some text or a URL, filter the results (using YUI datatable) to remove false positives (no system is perfect) and get the embed code for a Yahoo Map  or a list of microformatted locations as copy+paste. See the screencast to get the end user experience:</p>
<p><object type="application/x-shockwave-flash" width="500" height="375" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="flashvars" value="intl_lang=en-us&#038;photo_secret=292f6ff9f0&#038;photo_id=3678699792"></param><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377"></param><param name="bgcolor" value="#000000"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&#038;photo_secret=292f6ff9f0&#038;photo_id=3678699792" height="375" width="500"></embed></object></p>
<p>Of course, every time you build something like that, red-blooded developers will ask for an API to do the same thing (and pointing them to Placemaker wasn't enough). So here it is:</p>
<p><a href="http://icant.co.uk/geomaker/api.php">http://icant.co.uk/geomaker/api.php</a> takes two parameters: <code>url</code> of the web document to load and <code>output</code> which could be <code>map</code>, <code>kml</code>, <code>microformats</code>, <code>csv</code>, or <code>json</code> (with <code>callback</code> for JSON-P). Using this you can analyze a url in JavaScript and get the data back as an array: </p>
<div class="igBar"><a href="javascript:showCodeTxt('html-23');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span>
<div id="html-23">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script&gt;</span></a></span>function geomaker(o){</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; for(var i=0,j=o.length;i<span style="color: #009900;">&lt;j ;i++<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; // o<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span> will have lat, lon, <span style="color: #000066;">title</span> and match</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"http://icant.co.uk/geomaker/api.php?url=http://ajaxian.com&amp;output=json&amp;callback=geomaker"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>The Ajaxian.com output right now would be:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-24');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-24">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">geomaker<span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #3366CC;">"lat"</span>:<span style="color: #3366CC;">"42.3586"</span>,<span style="color: #3366CC;">"lon"</span>:<span style="color: #3366CC;">"-71.0567"</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color: #3366CC;">"title"</span>:<span style="color: #3366CC;">"Boston, MA, US"</span>,<span style="color: #3366CC;">"match"</span>:<span style="color: #3366CC;">"Boston"</span><span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #3366CC;">"lat"</span>:<span style="color: #3366CC;">"42.3586"</span>,<span style="color: #3366CC;">"lon"</span>:<span style="color: #3366CC;">"-71.0567"</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color: #3366CC;">"title"</span>:<span style="color: #3366CC;">"Boston, MA, US"</span>,<span style="color: #3366CC;">"match"</span>:<span style="color: #3366CC;">"Boston, MA"</span><span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #3366CC;">"lat"</span>:<span style="color: #3366CC;">"40.7075"</span>,<span style="color: #3366CC;">"lon"</span>:<span style="color: #3366CC;">"-106.918"</span>,<span style="color: #3366CC;">"title"</span>:<span style="color: #3366CC;">"Clark, CO, US"</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color: #3366CC;">"match"</span>:<span style="color: #3366CC;">"Clark, Co"</span><span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #3366CC;">"lat"</span>:<span style="color: #3366CC;">"42.3115"</span>,<span style="color: #3366CC;">"lon"</span>:<span style="color: #3366CC;">"43.3658"</span>,<span style="color: #3366CC;">"title"</span>:<span style="color: #3366CC;">"Georgia"</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color: #3366CC;">"match"</span>:<span style="color: #3366CC;">"Geo"</span><span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #3366CC;">"lat"</span>:<span style="color: #3366CC;">"44.9601"</span>,<span style="color: #3366CC;">"lon"</span>:<span style="color: #3366CC;">"7.16229"</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color: #3366CC;">"title"</span>:<span style="color: #3366CC;">"Rey, Piedmont, IT"</span>,<span style="color: #3366CC;">"match"</span>:<span style="color: #3366CC;">"Rey"</span><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p></j></script></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/geomaker-geo-locations-as-microformats-or-a-map-from-texts-or-urls/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>First beta of YUI 3.0 released</title>
		<link>http://ajaxian.com/archives/first-beta-of-yui-30-released</link>
		<comments>http://ajaxian.com/archives/first-beta-of-yui-30-released#comments</comments>
		<pubDate>Thu, 25 Jun 2009 11:52:47 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7010</guid>
		<description><![CDATA[Congrats to the YUI team for releasing their first beta of YUI 3: We’ve spent a lot of time in this release cycle refining the core elements of YUI 3 — YUI, Node, and Event — to ensure that we have the right API going forward. Performance is improved, and we’ve refined our module/submodule structure. <a href="http://ajaxian.com/archives/first-beta-of-yui-30-released">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Congrats to the YUI team for <a href="http://www.yuiblog.com/blog/2009/06/24/yui3b1/">releasing their first beta of YUI 3</a>:</p>
<blockquote>
<p>We’ve spent a lot of time in this release cycle refining the core elements of YUI 3 — <a href="http://developer.yahoo.com/yui/3/yui/">YUI</a>, <a href="http://developer.yahoo.com/yui/3/node/">Node</a>, and <a href="http://developer.yahoo.com/yui/3/event/">Event</a> — to ensure that we have the right API going forward. Performance is improved, and we’ve refined our module/submodule structure. In some cases we’ve added significant new features, including intrinsic support for event delegation in the Event package; however, the focus is on moving the base library to  production quality.</p>
<p>Several YUI 2.x components make their YUI 3 debut in this release:</p>
<ol>
<li><strong><a href="http://developer.yahoo.com/yui/3/datasource/">DataSource</a>:</strong> YUI’s data abstraction layer provides a standard interface into data sets, regardless of the data’s origin (local, XHR, XSS, etc.) and format (JSON, XML, CSV, etc.);</li>
<li><strong><a href="http://developer.yahoo.com/yui/3/imageloader/">ImageLoader</a>: </strong> ImageLoader allows you to defer the loading of images that aren’t in the viewport when the page paints, throttling bandwidth usage and improving performance;</li>
<li><strong><a href="http://developer.yahoo.com/yui/3/history/">History</a>:</strong> The  History component gives you control of the brower’s back button within the context of a single-page web application;</li>
<li><strong><a href="http://developer.yahoo.com/yui/3/stylesheet/">StyleSheet</a>:</strong>  StyleSheet  makes it easy to create and modify CSS rules on the fly, allowing you to dynamically style page elements with fewer repaints.</li>
</ol>
<p>As part of the more granular packaging in the new codeline, we’ve created separate YUI 3 modules to house functionality that in YUI 2 was bundled with other components. <a href="http://developer.yahoo.com/yui/3/cache/">Cache</a>, <a href="http://developer.yahoo.com/yui/3/datatype/">DataType</a> and <a href="http://developer.yahoo.com/yui/3/dataschema/">DataSchema</a> debut in this release; each of these used to be a part of DataSource.</p>
</blockquote>
<p>To keep up to date, check out the <a href="http://yuilibrary.com/projects/yui3/roadmap">roadmap</a> and <a href="http://yuilibrary.com/projects/yui3/dashboard">dashboard</a> that the team keeps up to date.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/first-beta-of-yui-30-released/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GeoFill &#8211; find users by IP or lookup and prefill forms for them</title>
		<link>http://ajaxian.com/archives/geofill-find-users-by-ip-or-lookup-and-prefill-forms-for-them</link>
		<comments>http://ajaxian.com/archives/geofill-find-users-by-ip-or-lookup-and-prefill-forms-for-them#comments</comments>
		<pubDate>Mon, 08 Jun 2009 10:03:25 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[Yahoo!]]></category>
		<category><![CDATA[Geo]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[javascrip]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[wrapper]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6902</guid>
		<description><![CDATA[One thing that annoys me is that in the days of geolocation and location recognition I still have to enter my country and city in forms over and over again. This is especially annoying when you like in the UK which could be anywhere in these wonderful large dropdowns (UK, England, Great Britain, United Kingdom, <a href="http://ajaxian.com/archives/geofill-find-users-by-ip-or-lookup-and-prefill-forms-for-them">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>One thing that annoys me is that in the days of geolocation and location recognition I still have to enter my country and city in forms over and over again. This is especially annoying when you like in the UK which could be anywhere in these wonderful large dropdowns (UK, England, Great Britain, United Kingdom, Blighty...).</p>
<p>There are many geo lookup tools and a lot of (at least UK) web sites started doing post code lookup tools. This is cool, but as annoying when I spent another reload of a full large form for a postcode lookup that went wrong. With the UK <a href="http://www.ygeoblog.com/2009/02/uk-addressing-the-non-golden-rules-of-geo-or-help-my-county-doesnt-exist/">being quite a mess when it comes to post codes</a> this is not uncommon.</p>
<p>Now, to work around these issues I've put together a small JavaScript wrapper library called <a href="http://icant.co.uk/geofill/index.php?demo=suggestion">GeoFill</a> (also available on <a href="http://github.com/codepo8/JavaScript-Geo-Fill/tree/master">GitHub</a>). This one makes it easy to provide a "is this your location" functionality in JavaScript:</p>
<p><a href="http://icant.co.uk/geofill"><img src="http://farm4.static.flickr.com/3306/3605363380_7478daac04.jpg" alt="GeoFill - automatically filling form data with geo information by  you." /></a></p>
<p>GeoFill has two different methods to automatically fill forms with geo information:</p>
<ul>
<li><code>geofill.find(properties)</code> does an IP lookup of the current user and tries to get the geographical data from that one. </li>
<li><code>geofill.lookup(properties,postcode)</code> tries to get the geographical data from the postcode provided in your form.</li>
</ul>
<p>Both methods can either automatically fill a form when you provide them with an object telling it which info should go into the form with a given ID, but also have a callback property that allows you to use the data immediately</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-29');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-29">
<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;">geofill.<span style="color: #006600;">lookup</span><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#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; callback:<span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>o<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; console.<span style="color: #006600;">log</span><span style="color:#006600; font-weight:bold;">&#40;</span>o<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></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span>,<span style="color: #3366CC;">'wc2h8ad'</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>The returned object is:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-30');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-30">
<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;"><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; city:<span style="color: #3366CC;">"London"</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; country:<span style="color: #3366CC;">"United Kingdom"</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; latitude:<span style="color: #3366CC;">"51.51384"</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; longitude:<span style="color: #3366CC;">"-0.12857"</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; postcode:<span style="color: #3366CC;">"WC2H 8AD"</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>
</ol>
</div>
</div>
</div>
<p>The find method uses the GeoIP lookup:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-31');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-31">
<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;">geofill.<span style="color: #006600;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; callback:<span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>o<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; console.<span style="color: #006600;">log</span><span style="color:#006600; font-weight:bold;">&#40;</span>o<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>And returns (in my case):</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-32');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-32">
<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;"><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; city:<span style="color: #3366CC;">"London"</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; country:<span style="color: #3366CC;">"United Kingdom"</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; latitude:<span style="color: #3366CC;">"51.5"</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; longitude:<span style="color: #3366CC;">"-0.11670000106096"</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; postcode:<span style="color: #3366CC;">"WC2H 8AD"</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>
</ol>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/geofill-find-users-by-ip-or-lookup-and-prefill-forms-for-them/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A peek under the hood of YUI3 &#8211; Satyen Desai on library architecture</title>
		<link>http://ajaxian.com/archives/a-peek-under-the-hood-of-yui3-satyen-desai-on-library-architecture</link>
		<comments>http://ajaxian.com/archives/a-peek-under-the-hood-of-yui3-satyen-desai-on-library-architecture#comments</comments>
		<pubDate>Fri, 15 May 2009 22:41:16 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Framework]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[Yahoo!]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6802</guid>
		<description><![CDATA[Talks about JavaScript are not a rare occasion any more, everybody has something to say about this wonderfully versatile language. Douglas Crockford taught us a lot about the language itself, John Resig and Peter Paul Koch taught us how browsers deal (and fail dealing) with it and there are dozens of screencasts of how to <a href="http://ajaxian.com/archives/a-peek-under-the-hood-of-yui3-satyen-desai-on-library-architecture">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Talks about JavaScript are not a rare occasion any more, everybody has something to say about this wonderfully versatile language. Douglas Crockford taught us a lot about the language itself, John Resig and Peter Paul Koch taught us how browsers deal (and fail dealing) with it and there are dozens of screencasts of how to use this or that language. </p>
<p>What most of these talks and videos have in common is application of JavaScript and how to deal with issues that will occur. Information about designing and architecting large JavaScript solutions on the other hand are rare. Satyen Desai now broke the silence and gave a great talk on the architecture and design decisions of the the <a href="http://developer.yahoo.com/yui/3/">third generation of the Yahoo User Interface library</a>:</p>
<div><object width="512" height="322"><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.40" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=13406817&#038;vid=5044557&#038;lang=en-us&#038;intl=us&#038;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/8818/85299985.jpeg&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.40" type="application/x-shockwave-flash" width="512" height="322" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=13406817&#038;vid=5044557&#038;lang=en-us&#038;intl=us&#038;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/8818/85299985.jpeg&#038;embed=1" ></embed></object><br /><a href="http://video.yahoo.com/watch/5044557/13406817">Satyen Desai: &quot;YUI 3: Design Goals and Architecture&quot;</a> @ <a href="http://video.yahoo.com" >Yahoo! Video</a></div>
<ul>
<li><a href="http://developer.yahoo.com/yui/theater/desai-yui3.html">Watch a larger resolution version and read the transcripts</a></li>
<li><a href="http://yuiblog.com/assets/desai-yui3.zip">download the slides</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/a-peek-under-the-hood-of-yui3-satyen-desai-on-library-architecture/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>YQL execute now allows you to convert scraped data with server side JavaScript</title>
		<link>http://ajaxian.com/archives/yql-execute-now-allows-you-to-convert-scraped-data-with-server-side-javascript</link>
		<comments>http://ajaxian.com/archives/yql-execute-now-allows-you-to-convert-scraped-data-with-server-side-javascript#comments</comments>
		<pubDate>Thu, 30 Apr 2009 14:28:37 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Yahoo!]]></category>
		<category><![CDATA[e4x]]></category>
		<category><![CDATA[execute]]></category>
		<category><![CDATA[serverside]]></category>
		<category><![CDATA[yql]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6735</guid>
		<description><![CDATA[I am a big fan of YQL, a terribly easy and fuss-free way to access APIs and mix data retrieved from them in a simple, SQL style language. Say for example you want photos of Paris,France from Flickr that are licensed with Creative Commons attribution, you can do this with a single command: PLAIN TEXT <a href="http://ajaxian.com/archives/yql-execute-now-allows-you-to-convert-scraped-data-with-server-side-javascript">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>I am a big fan of <a href="http://developer.yahoo.com/yql">YQL</a>, a terribly easy and fuss-free way to access APIs and mix data retrieved from them in a simple, SQL style language. Say for example you want photos of Paris,France from Flickr that are licensed with Creative Commons attribution, you can do this with a single command:</p>
<div class="igBar"><a href="javascript:showCodeTxt('code-36');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">CODE:</span>
<div id="code-36">
<div class="code">
<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;">select * from flickr.<span style="">photos</span>.<span style="">info</span> where photo_id in <span style="color:#006600; font-weight:bold;">&#40;</span>select id from flickr.<span style="">photos</span>.<span style="">search</span> where woe_id in <span style="color:#006600; font-weight:bold;">&#40;</span>select woeid from geo.<span style="">places</span> where text=<span style="color:#CC0000;">'paris,france'</span><span style="color:#006600; font-weight:bold;">&#41;</span> and license=<span style="color:#800000;">4</span><span style="color:#006600; font-weight:bold;">&#41;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p><a href="https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20flickr.photos.info%20where%20photo_id%20in%20(select%20id%20from%20flickr.photos.search%20where%20woe_id%20in%20(select%20woeid%20from%20geo.places%20where%20text%3D'paris%2Cfrance')%20and%20license%3D4)&#038;format=xml">Try it out here</a> and you see what I mean.</p>
<p>The next step of this interface was to open it out to the public. You can define an "Open Table" as a <a href="http://developer.yahoo.com/yql/guide/yql-opentables-chapter.html">simple XML schema and bring your own API into this interface with that</a>.</p>
<p>One thing that's been burning on my tongue to tell the world about has been finally released now: YQL execute. Instead of making the YQL language itself much more complex (and thus running in circles) we now allow you to embed JavaScript in the Open Table XML that will run on the YQL server and allow you to access other web services, authenticate and scrape HTML with JavaScript and E4X. As <a href="http://simonwillison.net/2009/Apr/29/yql/">Simon Willison put it:</a></p>
<blockquote><p>This is nuts (in a good way). Yahoo!’s intriguing universal SQL-style XML/JSONP web service interface now supports JavaScript as a kind of stored procedure language, meaning you can use JavaScript and E4X to screen-scrape web pages, then query the results with YQL.</p></blockquote>
<p>Using this, you can augment the original functionality of YQL to whatever you need. For example, you can scrape HTML with YQL using XPATH, but there was no way to use CSS selectors. Using an open table that invokes <a href="http://james.padolsey.com/scripts/javascript/css2xpath.js/view">James Padolsey's css2xpath</a> JavaScript on the server side, this is now possible.</p>
<div class="igBar"><a href="javascript:showCodeTxt('code-37');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">CODE:</span>
<div id="code-37">
<div class="code">
<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;">use <span style="color:#CC0000;">'http://yqlblog.net/samples/data.html.cssselect.xml'</span> as data.<span style="">html</span>.<span style="">cssselect</span>; select * from data.<span style="">html</span>.<span style="">cssselect</span> where url=<span style="color:#CC0000;">"www.yahoo.com"</span> and css=<span style="color:#CC0000;">"#news a"</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p><a href="http://query.yahooapis.com/v1/public/yql?q=use%20%27http%3A%2F%2Fyqlblog.net%2Fsamples%2Fdata.html.cssselect.xml%27%20as%20data.html.cssselect%3B%20select%20*%20from%20data.html.cssselect%20where%20url%3D%22www.yahoo.com%22%20and%20css%3D%22%23news%20a%22&#038;format=xml">Run this query in YQL</a></p>
<p>The data table is pretty easy:</p>
<div class="igBar"><a href="javascript:showCodeTxt('xml-38');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">XML:</span>
<div id="xml-38">
<div class="xml">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;</span>?xml <span style="color: #000066;">version</span>=<span style="color: #ff0000;">"1.0"</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">"UTF-8"</span> ?<span style="font-weight: bold; color: black;">&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="font-weight: bold; color: black;">&lt;table</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">"http://query.yahooapis.com/v1/schema/table.xsd"</span><span style="font-weight: bold; color: black;">&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; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;meta<span style="font-weight: bold; color: black;">&gt;</span></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; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;samplequery<span style="font-weight: bold; color: black;">&gt;</span></span></span>select * from {table} where url=&quot;www.yahoo.com&quot; and css=&quot;#news a&quot;<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/samplequery<span style="font-weight: bold; color: black;">&gt;</span></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; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/meta<span style="font-weight: bold; color: black;">&gt;</span></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; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;bindings<span style="font-weight: bold; color: black;">&gt;</span></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; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;select</span> <span style="color: #000066;">itemPath</span>=<span style="color: #ff0000;">""</span> <span style="color: #000066;">produces</span>=<span style="color: #ff0000;">"XML"</span><span style="font-weight: bold; color: black;">&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; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;urls<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;url<span style="font-weight: bold; color: black;">&gt;</span></span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/url<span style="font-weight: bold; color: black;">&gt;</span></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>
<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: #009900;"><span style="font-weight: bold; color: black;">&lt;/urls<span style="font-weight: bold; color: black;">&gt;</span></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; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;inputs<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;key</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"url"</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"xs:string"</span> <span style="color: #000066;">paramType</span>=<span style="color: #ff0000;">"variable"</span> <span style="color: #000066;">required</span>=<span style="color: #ff0000;">"true"</span> <span style="font-weight: bold; color: black;">/&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; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;key</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"css"</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"xs:string"</span> <span style="color: #000066;">paramType</span>=<span style="color: #ff0000;">"variable"</span> <span style="font-weight: bold; color: black;">/&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; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/inputs<span style="font-weight: bold; color: black;">&gt;</span></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; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;execute<span style="font-weight: bold; color: black;">&gt;</span></span></span><span style="color: #339933;">&lt;![CDATA[</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;//include css to xpath convert function</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;y.include(&quot;http://james.padolsey.com/scripts/javascript/css2xpath.js&quot;);</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;var query = null;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;if (css) {</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; var xpath = CSS2XPATH(css);</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; y.log(&quot;xpath &quot;+xpath);</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; query = y.query(&quot;select * from html where url=@url and xpath=\&quot;&quot;+xpath+&quot;\&quot;&quot;,{url:url});</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;} else {</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; query = y.query(&quot;select * from html where url=@url&quot;,{url:url});</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&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;response.object = query.results;</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; ]]&gt;</span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/execute<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/select<span style="font-weight: bold; color: black;">&gt;</span></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; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/bindings<span style="font-weight: bold; color: black;">&gt;</span></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;"><span style="font-weight: bold; color: black;">&lt;/table<span style="font-weight: bold; color: black;">&gt;</span></span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>Check the official <a href="http://developer.yahoo.net/blog/archives/2009/04/yql_execute.html">Yahoo Developer Network blog post on YQL execute</a> for more examples, including authentication examples for flickr and netflix.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/yql-execute-now-allows-you-to-convert-scraped-data-with-server-side-javascript/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Poller: YUI3 Small Polling Component</title>
		<link>http://ajaxian.com/archives/poller-yui3-small-polling-component</link>
		<comments>http://ajaxian.com/archives/poller-yui3-small-polling-component#comments</comments>
		<pubDate>Fri, 03 Apr 2009 11:05:43 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6485</guid>
		<description><![CDATA[Eric Ferraiuolo has created a YUI3 component for smart polling which means: Use conditional GET requests Retain the most recent Etag and Last-Modified date of the polled resource Disable polling when the browser window is inactive Implementing a smart polling process in our application’s rich UI gives us some desired benefits: Removal of the refresh <a href="http://ajaxian.com/archives/poller-yui3-small-polling-component">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Eric Ferraiuolo has created a YUI3 component for <a href="http://925html.com/code/smart-polling/">smart polling</a> which means:</p>
<blockquote>
<ul>
<li>Use <strong>conditional GET requests</strong></li>
<li><strong>Retain</strong> the most recent <strong>Etag</strong> and <strong>Last-Modified date</strong> of the polled resource</li>
<li><strong>Disable</strong> polling when the <strong>browser window is inactive</strong></li>
</ul>
<p>Implementing a <em>smart</em> polling process in our application’s rich UI gives us some desired benefits:</p>
<ul>
<li>Removal of the refresh button</li>
<li>Automatic updating of the UI when the resource on the server has changed</li>
<li>Less repainting of the page since the DOM is touched only when the data has changed</li>
<li>Changes to the UI only happen when the window is active (the user sees them) as polling is paused while the user is doing something else</li>
</ul>
</blockquote>
<p>The component that Eric wrote means that you can set of a poller like this:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-40');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-40">
<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> poller = <span style="color: #003366; font-weight: bold;">new</span> Y.<span style="color: #006600;">Poller</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span> </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; url : <span style="color: #3366CC;">'data.json'</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; headers : <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #3366CC;">"foo"</span>:<span style="color: #3366CC;">"bar"</span><span style="color:#006600; font-weight:bold;">&#125;</span>, </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; interval : <span style="color:#800000;">7000</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; pauseInactive : <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;"><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;">poller.<span style="color: #006600;">on</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color: #3366CC;">'request'</span>, logRequestData <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;">poller.<span style="color: #006600;">on</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color: #3366CC;">'response'</span>, logResponseData <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;">poller.<span style="color: #006600;">on</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color: #3366CC;">'modified'</span>, updateUI <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;">poller.<span style="color: #006600;">start</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>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/poller-yui3-small-polling-component/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Super fast client side searches &#8211; the Flickr way</title>
		<link>http://ajaxian.com/archives/super-fast-client-side-searches-the-flickr-way</link>
		<comments>http://ajaxian.com/archives/super-fast-client-side-searches-the-flickr-way#comments</comments>
		<pubDate>Wed, 18 Mar 2009 19:38:42 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[XmlHttpRequest]]></category>
		<category><![CDATA[Yahoo!]]></category>
		<category><![CDATA[clientside]]></category>
		<category><![CDATA[parsing]]></category>
		<category><![CDATA[search]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6371</guid>
		<description><![CDATA[Over at the Flickr development blog, Ross Harmes, one of those lesser sung JavaScript heroes explains in detail how Flickr creates really fast client side searches and one of the implementations of these findings is the newly released find people faster feature: The main findings of the team were that eval() is not only evil <a href="http://ajaxian.com/archives/super-fast-client-side-searches-the-flickr-way">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Over at the Flickr development blog, <a href="http://rossharmes.net/">Ross Harmes</a>, one of those lesser sung JavaScript heroes explains in detail how <a href="http://code.flickr.com/blog/2009/03/18/building-fast-client-side-searches/">Flickr creates really fast client side searches</a> and one of the implementations of these findings is the newly released <a href="http://blog.flickr.net/en/2009/03/17/find-people-faster/">find people faster</a> feature: </p>
<p><img src="http://farm4.static.flickr.com/3374/3328315531_fed5f49a70_o.png" alt="find people faster feature on flickr"/></p>
<p>The main findings of the team were that <code>eval()</code> is not only evil but also very slow whereas dynamic script nodes are fast but insecure. The solution was to do a custom evaluation of string data rather than using JSON:</p>
<blockquote><p>Having set the performance bar pretty high with the last approach, we dove into custom data formats. The challenge would be to create a format that we could parse ourselves, using JavaScript’s String and RegExp methods, that would also match the speed of JSON executed natively. This would allow us to use Ajax again, but keep the data restricted to our domain.</p>
<p>Since we had already discovered that some methods of string manipulation didn’t perform well on large strings, we restricted ourselves to a method that we knew to be fast: split(). We used control characters to delimit each contact, and a different control character to delimit the fields within each contact. This allowed us to parse the string into contact objects with one split, then loop through that array and split again on each string. </p></blockquote>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-42');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-42">
<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;">that.<span style="color: #006600;">contacts</span> = o.<span style="color: #006600;">responseText</span>.<span style="color: #006600;">split</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"<span style="color: #000099; font-weight: bold;">\\</span>c"</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>
<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; font-weight: bold;">for</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> n = <span style="color:#800000;">0</span>, len = that.<span style="color: #006600;">contacts</span>.<span style="color: #006600;">length</span>, contactSplit; n &amp;lt;len; n++<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;</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; contactSplit = that.<span style="color: #006600;">contacts</span><span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color: #006600;">split</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"<span style="color: #000099; font-weight: bold;">\\</span>a"</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>
<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; that.<span style="color: #006600;">contacts</span><span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#006600; font-weight:bold;">&#123;</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;">&nbsp; &nbsp; &nbsp; &nbsp; that.<span style="color: #006600;">contacts</span><span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color: #006600;">n</span> = contactSplit<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; that.<span style="color: #006600;">contacts</span><span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color: #006600;">e</span> = contactSplit<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; that.<span style="color: #006600;">contacts</span><span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color: #006600;">u</span> = contactSplit<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">2</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; that.<span style="color: #006600;">contacts</span><span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color: #006600;">r</span> = contactSplit<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">3</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; that.<span style="color: #006600;">contacts</span><span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color: #006600;">s</span> = contactSplit<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">4</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; that.<span style="color: #006600;">contacts</span><span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color: #006600;">f</span> = contactSplit<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">5</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; that.<span style="color: #006600;">contacts</span><span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color: #006600;">a</span> = contactSplit<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">6</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; that.<span style="color: #006600;">contacts</span><span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color: #006600;">d</span> = contactSplit<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">7</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; that.<span style="color: #006600;">contacts</span><span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color: #006600;">y</span> = contactSplit<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">8</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>Once this had been speeded up, all they needed to use was the <a href="http://developer.yahoo.com/yui/autocomplete/">YUI AutoComplete control</a> and voil&agrave; - fast client side searches even with massive datasets. </p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/super-fast-client-side-searches-the-flickr-way/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Sizzlin&#8217; YUI</title>
		<link>http://ajaxian.com/archives/sizzlin-yui</link>
		<comments>http://ajaxian.com/archives/sizzlin-yui#comments</comments>
		<pubDate>Wed, 18 Mar 2009 10:52:40 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Yahoo!]]></category>
		<category><![CDATA[sizzle]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6363</guid>
		<description><![CDATA[Eric Ferraiuolo has picked up on the work that Matt Sweeney has done integrating Sizzle with YUI3: Great news for YUI3: Matt Sweeney, a YUI Developer, has integrated the Sizzle JavaScript Selector Library in a branch of the YUI3 code-base on GitHub. There has been interest from the community about this integration for quite some <a href="http://ajaxian.com/archives/sizzlin-yui">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Eric Ferraiuolo has picked up on the work that Matt Sweeney has done <a href="http://925html.com/code/yui3-is-sizzling-hot/">integrating Sizzle with YUI3</a>:</p>
<blockquote>
<p>Great news for YUI3: <a href="http://twitter.com/msweeney/status/1340476421">Matt Sweeney</a>, a YUI Developer, <a href="http://github.com/msweeney/yui3/blob/3292f4196cecd4076b5652d07da2bf3ec361d722/build/dom/selector-debug.js">has integrated</a> the <a href="http://sizzlejs.com/">Sizzle JavaScript Selector Library</a> <a href="http://github.com/msweeney/yui3/tree/sizzle">in a branch</a> of the <a href="http://github.com/yui/yui3/tree">YUI3 code-base on GitHub</a>. There has been <a href="http://yuiblog.com/blog/2008/12/09/yui3pr2-2/#comment-528773">interest from the community</a> about this integration for quite some time. I personally was hoping for Sizzle adoption into YUI3; this now appears to be the case.</p>
<p>Using the <a href="http://developer.yahoo.com/yui/selector/">Selector utility</a> in YUI2 I would find myself hitting bugs and roadblocks where my expectations weren’t matching the outcomes. I’ve felt since first using the selector engine in YUI that it didn’t compare in speed, robustness, or completeness to jQuery’s. With the Sizzle project, there’s a narrow focus and distinct vision: <em>To make the best damn selector engine</em>. Since a selector engine is an essential component to any modern JavaScript library, why not make one <em>really good</em> one for all libraries to use? That’s the route the Sizzle project has taken.</p>
<p>Once Sweeney’s branch is merged into the YUI3 Master Head, I’ll be doing a <code>git pull</code> and give it some exercise.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/sizzlin-yui/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI Turns 3 and We Get a New Release as a Gift!</title>
		<link>http://ajaxian.com/archives/yui-turns-3-and-we-get-a-new-release-as-a-gift</link>
		<comments>http://ajaxian.com/archives/yui-turns-3-and-we-get-a-new-release-as-a-gift#comments</comments>
		<pubDate>Thu, 19 Feb 2009 18:51:42 +0000</pubDate>
		<dc:creator>Rey Bango</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6037</guid>
		<description><![CDATA[Some very cool news out of the YUI project as their namesake library turned 3 years old yesterday (That's like 25 in internet years, right?). The framework has really grown-up to provide a solid foundation on which to build upon and developers are certainly benefiting from it's excellent documentation and QA. To celebrate YUI's birthday, <a href="http://ajaxian.com/archives/yui-turns-3-and-we-get-a-new-release-as-a-gift">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Some very cool news out of the YUI project as their namesake library <a href="http://yuiblog.com/blog/2009/02/18/yui-3rd-birthday/">turned 3 years old yesterday</a> (That's like 25 in internet years, right?). The framework has really grown-up to provide a solid foundation on which to build upon and developers are certainly benefiting from it's excellent documentation and QA. To celebrate YUI's birthday, the team will be hosting a happy hour:</p>
<blockquote><p>The YUI Library turned three years old this month and we’d like to invite you — our community of developers and implementers — to come out and celebrate! To celebrate our third birthday (and our 2.7.0 release), we’ll be hosting a recession-chic happy hour at the Blue Chalk Cafe in downtown Palo Alto, Thursday, February 26 from 6:00 to 8:00 pm. Nothing too fancy, but we’ll have fun goodies to give away and the first few rounds of drinks are on us (until the tab runs out). Details and signups are at Upcoming. Hope to see you there!</p></blockquote>
<p>Should prove to be lots of fun. </p>
<p>But that's not all! You'll have plenty to talk about at the happy hour as the team <a href="http://yuiblog.com/blog/2009/02/18/yui-270/">just released YUI 2.7.0</a>:</p>
<blockquote><p>Version 2.7.0 introduces a new StyleSheet component, graduates three components out of “beta”, improves support for the upcoming release of IE8, includes over 180 bug fixes and enhancements, and ships with more than 300 functional examples.</p></blockquote>
<p>New features include:</p>
<ul>
<li>The <a href="http://developer.yahoo.com/yui/stylesheet/">YUI StyleSheet Utility</a></li>
<li>Enhancements to the <a href="http://developer.yahoo.com/yui/charts/">Charts control</a></li>
<li>Updates to both the Container &#038; Treeview components</li>
<li>Internet Explorer 8 Support</li>
<li>New components promoted out of &#8220;beta&#8221; status:
<ul>
<li><a href="http://developer.yahoo.com/yui/element/">Element</a></li>
<li><a href="http://developer.yahoo.com/yui/profilerviewer/">ProfilerViewer</a></li>
<li><a href="http://developer.yahoo.com/yui/selector/">Selector</a></li>
</ul>
</li>
</ul>
<p>In addition, they produced over 180 Enhancements and Bug Fixes. </p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/yui-turns-3-and-we-get-a-new-release-as-a-gift/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prefilling forms with Microformats and YQL</title>
		<link>http://ajaxian.com/archives/prefilling-forms-with-microformats-and-yql</link>
		<comments>http://ajaxian.com/archives/prefilling-forms-with-microformats-and-yql#comments</comments>
		<pubDate>Tue, 17 Feb 2009 06:24:40 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Microformat]]></category>
		<category><![CDATA[Yahoo!]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[yql]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5976</guid>
		<description><![CDATA[Ever since YQL started supporting microformats scanning (the outcome of having a coffee with the team last time I visited the main office) I tried to find good examples of how you can use this. Microformats rock, we all know that but so far I am still waiting for the killer application or implementation for <a href="http://ajaxian.com/archives/prefilling-forms-with-microformats-and-yql">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Ever since <a href="http://developer.yahoo.com/yql">YQL</a> started supporting microformats scanning (the outcome of having a coffee with the team last time I visited the main office) I tried to find good examples of how you can use this. Microformats rock, we all know that but so far I am still waiting for the killer application or implementation for it. The <a href="http://microformats.org/wiki/examples-in-the-wild">wiki examples of microformats</a> are getting stale indeed and in general I start to wonder what it needs to make the main market understand the benefits and implement them.</p>
<p>One nice example of the power of Microformats and YQL is <a href="http://shapeshed.com/journal/populating_forms_with_yql_jquery_and_microformats">George Ornbo's jQuery script</a> that allows you to pre-fill forms with data retrieved from hcards:</p>
<p><a href="http://shapeshed.com/journal/populating_forms_with_yql_jquery_and_microformats/"><img src="http://ajaxian.com/wp-content/uploads/yqlmf.jpg" alt="Prefilling forms with microformats and YQL" width="460" height="286" class="alignnone size-full wp-image-5977" /></a></p>
<p>I've written similar tests before but soon gave up on trying to parse microformats by hand. With YQL doing that job for us the practical application of microformatted data became a lot easier, so let's go wild.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/prefilling-forms-with-microformats-and-yql/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

