<?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>BorkWeb &#187; ajax</title>
	<atom:link href="http://borkweb.com/story/tag/ajax/feed" rel="self" type="application/rss+xml" />
	<link>http://borkweb.com</link>
	<description>Some People Are Squirrel Handed.</description>
	<lastBuildDate>Tue, 17 Jan 2012 22:00:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>jQuery 1.1.3: Speed Improvements and Bug Fixes</title>
		<link>http://borkweb.com/story/jquery-113-speed-improvements-and-bug-fixes</link>
		<comments>http://borkweb.com/story/jquery-113-speed-improvements-and-bug-fixes#comments</comments>
		<pubDate>Mon, 02 Jul 2007 11:44:35 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://borkweb.com/story/jquery-113-speed-improvements-and-bug-fixes</guid>
		<description><![CDATA[After a long wait, jQuery 1.1.3 has been released! (Download it at the jQuery site) When I first adopted jQuery a year ago, the library boasted both faster speeds and smaller size than any other JavaScript Ajax/DOM tool. With the release of jQuery&#8217;s version 1.1.2, a number of jQuery&#8217;s operations became very slow and inefficiencient, [...]]]></description>
			<content:encoded><![CDATA[<p>After a long wait, jQuery 1.1.3 has been released! (Download it at the <a href="http://jquery.com">jQuery site</a>)  When I first adopted jQuery a year ago, the library boasted both faster speeds and smaller size than any other JavaScript Ajax/DOM tool.  With the release of jQuery&#8217;s version 1.1.2, a number of jQuery&#8217;s operations became very slow and inefficiencient, as evidenced by MooTool&#8217;s <a href="http://mootools.net/slickspeed/">SlickSpeed CSS Selector Test</a> (found via <a href="http://ajaxian.com/archives/slickspeed-css-selector-testsuite">Ajaxian</a>) which crept up a few weeks ago.</p>
<p>This new release boasts an 800% speed improvement with a number of its selectors along with various enhancements across the board!  The selector speed boost makes me one happy camper.  Check out the enhancements as it compares to 1.1.2:</p>
<table>
<thead>
<tr>
<th>Browser</th>
<th>jQuery 1.1.2</th>
<th>jQuery 1.1.3</th>
<th>% Improvement</th>
</tr>
</thead>
<tbody>
<tr>
<th>IE 6</th>
<td>4890ms</td>
<td>661ms</td>
<th>740%</th>
</tr>
<tr>
<th>Firefox 2</th>
<td>5629ms</td>
<td>567ms</td>
<th>993%</th>
</tr>
<tr>
<th>Safari 2</th>
<td>3575ms</td>
<td>475ms</td>
<th>753%</th>
</tr>
<tr>
<th>Opera 9.1</th>
<td>3196ms</td>
<td>326ms</td>
<th>980%</th>
</tr>
<tr>
<td colspan="3" style="text-align: right;">Average improvement:</td>
<th>867%</th>
</tr>
</tbody>
</table>
<p>And here&#8217;s how it now stacks up against the SlickSpeed test:</p>
<table>
<thead>
<tr>
<th>Browser</th>
<th>Prototype</th>
<th>jQuery</th>
<th>Mootools</th>
<th>Ext</th>
<th>Dojo</th>
</tr>
</thead>
<tbody>
<tr>
<th>IE 6</th>
<td>1476ms</td>
<th>661ms</th>
<td>1238ms</td>
<td>672ms</td>
<td>738ms</td>
</tr>
<tr>
<th>Firefox 2</th>
<td>219ms</td>
<td>567ms</td>
<td>220ms</td>
<td>951ms</td>
<td>440ms</td>
</tr>
<tr>
<th>Safari 2</th>
<td>1568ms</td>
<td>475ms</td>
<td>909ms</td>
<td>417ms</td>
<td>527ms</td>
</tr>
<tr>
<th>Opera 9.1</th>
<td>220ms</td>
<td>326ms</td>
<td>217ms</td>
<td>296ms</td>
<td>220ms</td>
</tr>
</tbody>
</table>
<p>In addition to the speed enhancements, there were several other notable things:</p>
<ul>
<li><strong>Unicode Selectors</strong>: Yup&#8230;now you can use fancy non-english characters.</li>
<li><strong>Escape Selectors</strong>:  This is awesome.  Now, if you use weird characters (i.e. punctuation) in a class/id name, you can now escape those characters within the selector syntax.  E.g. <em>$(&#8220;div#foo\.bar&#8221;)</em></li>
<li><strong>Inequality Selector</strong>: You can now select elements where their attributes do not match a specific string of characters.  E.g. <em>$(&#8220;div[@id!=test]&#8220;)</em></li>
<li><strong>:nth-child() improvements</strong>: jQuery has supported selectors like :nth-child(1) and :nth-child(odd) since the beginning of jQuery, now they’ve added advanced :nth-child selectors, such as:
<ul>
<li>$(&#8220;div:nth-child(2n)&#8221;)</li>
<li>$(&#8220;div:nth-child(2n+1)&#8221;)</li>
<li>$(&#8220;div:nth-child(n)&#8221;)</li>
</ul>
</li>
<li><strong>Space-separated attributes</strong>: After being removed in jQuery 1.0, this selector has now been brought back by popular demand. It allows you to locate individual items in a space-separated attribute (such as a class or rel attribute).  E.g. <em>$(&#8220;a[@rel~=test]&#8220;)</em></li>
<li><strong>Animation Improvements</strong>: Animations are now significantly faster and smoother. Additionally, you can run more simultaneous animations without incurring any speed hits.</li>
<li><strong>DOM Event Listeners</strong>: Internally, the jQuery Event system has been overhauled to use the DOM Event system, rather than the classical “onclick” style of binding event handlers. This improvement allows you to be more unobtrusive in your use of the library (not affecting the flow of other libraries around it). Additionally, it helped to resolve some of the outstanding issues that existed with binding event listeners to IFrames.</li>
<li><strong>Event Normalization</strong>: Some great steps have been taken to normalize keyboard and mouse events. You can now access the event.which property to get most details about the specific key or button that was pressed.</li>
<li><strong>Multiple .is()</strong>: The .is() method can now take multiple selectors, separated by a comma. This allows you to test your jQuery set against multiple selectors. E.g. <em>$(&#8220;div&#8221;).is(&#8220;:visible, :first&#8221;)</em></li>
<li><strong>Browser Version</strong>: A commonly requested feature, by plugin authors, was a way to determine what browser version their users were using. We now expose an extra property through which this information can be accessed. E.g. <em>jQuery.browser.version</em></li>
</ul>
<p>Additionally, the jQuery team has addressed 80+ bugs and has roadmapped out the next two releases (v1.1.4 and v1.2).  To check out the full jQuery 1.2 roadmap, <a href="http://docs.jquery.com/JQuery_1.2_Roadmap">go here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://borkweb.com/story/jquery-113-speed-improvements-and-bug-fixes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ultimate Web 2.0 Collaborative Game: Eat Poop U Cat</title>
		<link>http://borkweb.com/story/ultimate-web-20-collaborative-game-eat-poop-u-cat</link>
		<comments>http://borkweb.com/story/ultimate-web-20-collaborative-game-eat-poop-u-cat#comments</comments>
		<pubDate>Tue, 20 Mar 2007 02:26:35 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Art, Gaming, & Fun]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[amazon ec2]]></category>
		<category><![CDATA[amazon s3]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[eat poop u cat]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[google web toolkit]]></category>
		<category><![CDATA[paper telephone]]></category>
		<category><![CDATA[party game]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://borkweb.com/story/ultimate-web-20-collaborative-game-eat-poop-u-cat</guid>
		<description><![CDATA[Via Ajaxian a few days ago, I was re-introduced to a great party game that I have played with pen and paper a couple times in my life. The game results in off the wall drawing and serious laughs and it has found it&#8217;s way to the web in a collaborative game of sweet humorous [...]]]></description>
			<content:encoded><![CDATA[<p>Via <a href="http://ajaxian.com/archives/ajax-version-of-telephone-game">Ajaxian</a> a few days ago, I was re-introduced to a great party game that I have played with pen and paper a couple times in my life.  The game results in off the wall drawing and serious laughs and it has found it&#8217;s way to the web in a collaborative game of sweet humorous action.  </p>
<p><a href="http://www.eatpoopucat.com/">EatPoopUCat</a> is the name of the game.  Funny name?  Yeah, well this game goes by many.  You may know this game as: Fax Machine; The Paper Game; Pictophone; The Picture Sentence Game; The Sentence Game; Paper Telephone; Sentence Picture; Telephone Pictionary; Descriptionary; Writesy Drawsy; Cricket Cricket I&#8217;m On Fire; or Moneyduck.</p>
<p>The game works like so: Someone comes up with a sentence or phrase.  That phrase goes to another person who draws a picture of the phrase.  That picture goes to the next person who writes a phrase to the picture (without seeing the first phrase).  Rinse and repeat.  The web-based game works the same, you type a phrase in a box and hit submit, or you draw right on the site or upload a picture from your compy.  Easy as that!  Here&#8217;s <a href="http://www.eatpoopucat.com/EPUC/#stripDetail-875">an example</a> result of a game I participated in:</p>
<h2 id="_phrase-1for-your-chi_1" ><strong>Phrase 1:</strong>For your children, go straight to the wall and jump it like a gazelle</h2>
<p><a href="http://www.flickr.com/photos/borkweb/427578157/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/168/427578157_23e654c577_o.jpg" width="480" height="320" alt="epuc1" style="float:none;margin:10px 0;"/></a></p>
<h2 id="_phrase-2-it-was-a-br_1" ><strong>Phrase 2:</strong> It was a bright sunny day and kids were playing in the frontyard</h2>
<p><a href="http://www.flickr.com/photos/borkweb/427578172/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/161/427578172_9f16b18df9_o.jpg" width="480" height="320" alt="epuc2" style="float:none;margin:10px 0;"/></a></p>
<h2 id="_phrase-3-outside-the_1" ><strong>Phrase 3:</strong> Outside the bar, Phil was roughed up by some plug-uglies who beaned him in the head with a volleyball.</h2>
<p><a href="http://www.flickr.com/photos/borkweb/427578181/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/182/427578181_e4314d8f43_o.jpg" width="480" height="320" alt="epuc3" style="float:none;margin:10px 0;"/></a></p>
<h2 id="_phrase-4-if-the-beer_1" ><strong>Phrase 4:</strong> If the beer and power cords don&#8217;t get you, the low flying soccer balls surely will.</h2>
<p><a href="http://www.flickr.com/photos/borkweb/427578186/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/158/427578186_cdecb86468_o.jpg" width="480" height="320" alt="epuc4" style="float:none;margin:10px 0;"/></a></p>
<h2 id="_final-phrasehe-has-3_1" style="margin-bottom:10px;"><strong>Final Phrase:</strong>He has 3 choises: Drink 2 Beers, throw Frisbee-pizzas or be a human bridge for the electricity.</h2>
<p>It&#8217;s pretty cool how the phrases/pictures change as it gets passed from person to person.  In addition to the ability to do the above, each &#8216;story&#8217; can be commented on and rated.  Plus, for pictures or interpretations you can give &#8220;kudos&#8221; to the author/artist.  Oh!  And as you participate in different threads, you can keep tabs on the statuses of those strips that you have done.</p>
<p>Lastly, for those of you that are Web 2.0 geeks, the site is Ajaxified with a combination of Google Web Toolkit, Amazon S3, and Amazon EC2, along with an in browser drawing utility that uses the Canvas element.  Pretty snazzy.  I&#8217;ve already wasted a great deal of time in the evenings on this site and many more to come!</p>
]]></content:encoded>
			<wfw:commentRss>http://borkweb.com/story/ultimate-web-20-collaborative-game-eat-poop-u-cat/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>jQuery 1.1a Released</title>
		<link>http://borkweb.com/story/jquery-11a-released</link>
		<comments>http://borkweb.com/story/jquery-11a-released#comments</comments>
		<pubDate>Mon, 08 Jan 2007 13:50:10 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[functions]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://borkweb.com/story/jquery-11a-released</guid>
		<description><![CDATA[The jQuery 1.1a has been released today by the jQuery team! Its important to note that this is an alpha version before you go out and install it in a production environment, but the jQuery team asks that people give it a round of testing prior to the release this weekend. The &#8220;Quick and Dirty&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://jquery.com/blog/2007/01/08/jquery-11a/">jQuery 1.1a has been released</a> today by the jQuery team!  Its important to note that this is an alpha version before you go out and install it in a production environment, but the jQuery team asks that people give it a round of testing prior to the release this weekend.</p>
<p>The &#8220;Quick and Dirty&#8221; on v1.1:</p>
<ul>
<li>Its selectors are 10-20x faster than those in jQuery 1.0.4.</li>
<li>The documentation has been completely revamped.</li>
<li>The complexity of the API has dropped by 47%.</li>
<li>It has a ton of bug fixes.</li>
<li>It has a bunch of great new features.</li>
<li>… and it’s still the small 19KB that you’ve come to expect.</li>
</ul>
<p>With this release come a <em>lot</em> of API changes:</p>
<p>Firstly, <strong>:nth-child()</strong> now starts at 1, instead of 0.</p>
<p>A number of methods have been re-organized/re-named.  Here&#8217;s the translation of old to new functions:</p>
<table style="width:100%">
<tr>
<th>Old Way (1.0.x)</th>
<th>New Way (1.1)</th>
</tr>
<tr>
<td>.ancestors()</td>
<td>.parents()</td>
</tr>
<tr>
<td>.width()</td>
<td>.css(&#8221;width&#8221;)</td>
</tr>
<tr>
<td>.height()</td>
<td>.css(&#8221;height&#8221;)</td>
</tr>
<tr>
<td>.top()</td>
<td>.css(&#8221;top&#8221;)</td>
</tr>
<tr>
<td>.left()</td>
<td>.css(&#8221;left&#8221;)</td>
</tr>
<tr>
<td>.position()</td>
<td>.css(&#8221;position&#8221;)</td>
</tr>
<tr>
<td>.float()</td>
<td>.css(&#8221;float&#8221;)</td>
</tr>
<tr>
<td>.overflow()</td>
<td>.css(&#8221;overflow&#8221;)</td>
</tr>
<tr>
<td>.color()</td>
<td>.css(&#8221;color&#8221;)</td>
</tr>
<tr>
<td>.background()</td>
<td>.css(&#8221;background&#8221;)</td>
</tr>
<tr>
<td>.id()</td>
<td>.attr(&#8221;id&#8221;)</td>
</tr>
<tr>
<td>.title()</td>
<td>.attr(&#8221;title&#8221;)</td>
</tr>
<tr>
<td>.name()</td>
<td>.attr(&#8221;name&#8221;)</td>
</tr>
<tr>
<td>.href()</td>
<td>.attr(&#8221;href&#8221;)</td>
</tr>
<tr>
<td>.src()</td>
<td>.attr(&#8221;src&#8221;)</td>
</tr>
<tr>
<td>.rel()</td>
<td>.attr(&#8221;rel&#8221;)</td>
</tr>
<tr>
<td>.oneblur(fn)</td>
<td>.one(&#8221;blur&#8221;,fn)</td>
</tr>
<tr>
<td>.onefocus(fn)</td>
<td>.one(&#8221;focus&#8221;,fn)</td>
</tr>
<tr>
<td>.oneload(fn)</td>
<td>.one(&#8221;load&#8221;,fn)</td>
</tr>
<tr>
<td>.oneresize(fn)</td>
<td>.one(&#8221;resize&#8221;,fn)</td>
</tr>
<tr>
<td>.onescroll(fn)</td>
<td>.one(&#8221;scroll&#8221;,fn)</td>
</tr>
<tr>
<td>.oneunload(fn)</td>
<td>.one(&#8221;unload&#8221;,fn)</td>
</tr>
<tr>
<td>.oneclick(fn)</td>
<td>.one(&#8221;click&#8221;,fn)</td>
</tr>
<tr>
<td>.onedblclick(fn)</td>
<td>.one(&#8221;dblclick&#8221;,fn)</td>
</tr>
<tr>
<td>.onemousedown(fn)</td>
<td>.one(&#8221;mousedown&#8221;,fn)</td>
</tr>
<tr>
<td>.onemouseup(fn)</td>
<td>.one(&#8221;mouseup&#8221;,fn)</td>
</tr>
<tr>
<td>.onemousemove(fn)</td>
<td>.one(&#8221;mousemove&#8221;,fn)</td>
</tr>
<tr>
<td>.onemouseover(fn)</td>
<td>.one(&#8221;mouseover&#8221;,fn)</td>
</tr>
<tr>
<td>.onemouseout(fn)</td>
<td>.one(&#8221;mouseout&#8221;,fn)</td>
</tr>
<tr>
<td>.onechange(fn)</td>
<td>.one(&#8221;change&#8221;,fn)</td>
</tr>
<tr>
<td>.onereset(fn)</td>
<td>.one(&#8221;reset&#8221;,fn)</td>
</tr>
<tr>
<td>.oneselect(fn)</td>
<td>.one(&#8221;select&#8221;,fn)</td>
</tr>
<tr>
<td>.onesubmit(fn)</td>
<td>.one(&#8221;submit&#8221;,fn)</td>
</tr>
<tr>
<td>.onekeydown(fn)</td>
<td>.one(&#8221;keydown&#8221;,fn)</td>
</tr>
<tr>
<td>.onekeypress(fn)</td>
<td>.one(&#8221;keypress&#8221;,fn)</td>
</tr>
<tr>
<td>.onekeyup(fn)</td>
<td>.one(&#8221;keyup&#8221;,fn)</td>
</tr>
<tr>
<td>.oneerror(fn)</td>
<td>.one(&#8221;error&#8221;,fn)</td>
</tr>
<tr>
<td>.unblur(fn)</td>
<td>.unbind(&#8221;blur&#8221;,fn)</td>
</tr>
<tr>
<td>.unfocus(fn)</td>
<td>.unbind(&#8221;focus&#8221;,fn)</td>
</tr>
<tr>
<td>.unload(fn)</td>
<td>.unbind(&#8221;load&#8221;,fn)</td>
</tr>
<tr>
<td>.unresize(fn)</td>
<td>.unbind(&#8221;resize&#8221;,fn)</td>
</tr>
<tr>
<td>.unscroll(fn)</td>
<td>.unbind(&#8221;scroll&#8221;,fn)</td>
</tr>
<tr>
<td>.ununload(fn)</td>
<td>.unbind(&#8221;unload&#8221;,fn)</td>
</tr>
<tr>
<td>.unclick(fn)</td>
<td>.unbind(&#8221;click&#8221;,fn)</td>
</tr>
<tr>
<td>.undblclick(fn)</td>
<td>.unbind(&#8221;dblclick&#8221;,fn)</td>
</tr>
<tr>
<td>.unmousedown(fn)</td>
<td>.unbind(&#8221;mousedown&#8221;,fn)</td>
</tr>
<tr>
<td>.unmouseup(fn)</td>
<td>.unbind(&#8221;mouseup&#8221;,fn)</td>
</tr>
<tr>
<td>.unmousemove(fn)</td>
<td>.unbind(&#8221;mousemove&#8221;,fn)</td>
</tr>
<tr>
<td>.unmouseover(fn)</td>
<td>.unbind(&#8221;mouseover&#8221;,fn)</td>
</tr>
<tr>
<td>.unmouseout(fn)</td>
<td>.unbind(&#8221;mouseout&#8221;,fn)</td>
</tr>
<tr>
<td>.unchange(fn)</td>
<td>.unbind(&#8221;change&#8221;,fn)</td>
</tr>
<tr>
<td>.unreset(fn)</td>
<td>.unbind(&#8221;reset&#8221;,fn)</td>
</tr>
<tr>
<td>.unselect(fn)</td>
<td>.unbind(&#8221;select&#8221;,fn)</td>
</tr>
<tr>
<td>.unsubmit(fn)</td>
<td>.unbind(&#8221;submit&#8221;,fn)</td>
</tr>
<tr>
<td>.unkeydown(fn)</td>
<td>.unbind(&#8221;keydown&#8221;,fn)</td>
</tr>
<tr>
<td>.unkeypress(fn)</td>
<td>.unbind(&#8221;keypress&#8221;,fn)</td>
</tr>
<tr>
<td>.unkeyup(fn)</td>
<td>.unbind(&#8221;keyup&#8221;,fn)</td>
</tr>
<tr>
<td>.unerror(fn)</td>
<td>.unbind(&#8221;error&#8221;,fn)</td>
</tr>
</table>
<p>What&#8217;s more?  Well, the jQuery team will be posting throughout the week on all the cool new things you can do with jQuery 1.1.  I&#8217;m looking forward to seeing the changes!  Oh, with regards to changes, its important to note with that list of functions above&#8230;the old method will no longer work come v1.1.  To keep those functions in use, a &#8216;helper&#8217; library will need to be used&#8230;chances are that won&#8217;t be available until the 1.1 final.</p>
]]></content:encoded>
			<wfw:commentRss>http://borkweb.com/story/jquery-11a-released/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery 1.0.4 Released</title>
		<link>http://borkweb.com/story/jquery-104-released</link>
		<comments>http://borkweb.com/story/jquery-104-released#comments</comments>
		<pubDate>Wed, 13 Dec 2006 15:56:46 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[version]]></category>

		<guid isPermaLink="false">http://borkweb.com/story/jquery-104-released</guid>
		<description><![CDATA[John Resig over at jQuery has announced the release of jQuery 1.0.4 to the public! As usual, there are bug fixes&#8230;plus a bit more. His focus for this patch was adding improvements to jQuery&#8217;s Ajax functionality. Below is a list of all the updates: Tons of bug fixes (Full List) Extensions to $.ajax(): $.ajax accepts [...]]]></description>
			<content:encoded><![CDATA[<p>John Resig over at <a href="http://jquery.com">jQuery</a> has announced the <a href="http://jquery.com/blog/2006/12/12/jquery-104/">release of jQuery 1.0.4</a> to the public!  As usual, there are bug fixes&#8230;plus a bit more.  His focus for this patch was adding improvements to jQuery&#8217;s Ajax functionality.  Below is a list of all the updates:</p>
<ul>
<li>Tons of bug fixes (<a href="http://jquery.com/dev/bugs/10/?sort=ticket&#038;asc=0">Full List</a>)</li>
<li><strong>Extensions to $.ajax()</strong>: $.ajax accepts additional options: beforeSend, async and processData; returns XMLHttpRequest to allow manual aborting of requests, see docs for details.
<p><strong>Example: Add extra headers to an Ajax request using beforeSend</strong></p>
<pre class="brush: jscript; title: ; notranslate">$.ajax({
  type: &quot;POST&quot;,
  url: &quot;/files/add/&quot;,
  beforeSend: function(xhr) {
    xhr.setRequestHeader( &quot;Content-type&quot;, &quot;text/plain&quot; );
  },
  data: &quot;This is the contents of my text file.&quot;
});</pre>
<p><strong>Example: Perform a synchronous Ajax request.</strong></p>
<pre class="brush: jscript; title: ; notranslate">// Get the HTML of a web page and save it
// to a variable (the browser will freeze until the
// entire request is completed).
var html = $.ajax({
  type: &quot;GET&quot;,
  url: &quot;test.html&quot;,
  async: false
}).responseText;

// Add the HTML into the page
$(&quot;#list&quot;).html( html );</pre>
<p><strong>Example: Sending a JavaScript object using processData.</strong></p>
<pre class="brush: jscript; title: ; notranslate">// The data to send to the server
var params = {
  name: &quot;John&quot;,
  city: &quot;Boston&quot;
};

$.ajax({
  type: &quot;POST&quot;,
  url: &quot;/user/add/&quot;,
  processData: params
});</pre>
<p><strong>Example: Aborting an Ajax request after a specific delay in time.</strong></p>
<pre class="brush: jscript; title: ; notranslate">// Perform a simple Ajax request
var req = $.ajax({
  type: &quot;GET&quot;,
  url: &quot;/user/list/&quot;,
  success: function(data) {
    // Do something with the data...
    // Then remove the request.
    req = null;
  }
});

// Wait for 5 seconds
setTimeout(function(){
  // If the request is still running, abort it.
  if ( req ) req.abort();
}, 5000);</pre>
</li>
<li><strong>AJAX module</strong>: The public $.ajax API is now used internally (for $.get/$.post etc.); loading scripts works now much more reliably in all browsers (with the exception of Safari, which is a work in progress).</li>
<li><strong>New global Ajax handler</strong>: ajaxSend &#8211; called before an Ajax request is sent.
<p><strong>Example: Add extra headers to all Ajax requests using the ajaxSend event.</strong></p>
<pre class="brush: jscript; title: ; notranslate">$(document).ajaxSend(function(xhr){
  xhr.setRequestHeader(&quot;X-Web-Request&quot;, &quot;MySite.com&quot;);
});</pre>
</li>
<li><strong>Extensions to global Ajax handlers</strong>: ajaxSend, ajaxSuccess, ajaxError and ajaxComplete get XMLHttpRequest and settings passed as arguments.
<p><strong>Example: Prevent any POST requests that are sending too much data.</strong></p>
<pre class="brush: jscript; title: ; notranslate">$(document).ajaxSend(function(xhr,options){
  if ( options.type == &quot;POST&quot; &amp;#038;&amp;#038; options.data.length &gt; 1024 )
    xhr.abort();
});</pre>
<p><strong>Example: Show a special message for requests submitted using an Ajax POST.</strong></p>
<pre class="brush: jscript; title: ; notranslate">$(&quot;#dataSent&quot;).ajaxSend(function(xhr,options){
  if ( options.type == &quot;POST&quot; )
    $(this).show();
});</pre>
</li>
<li><strong>Extensions to event handling</strong>: pageX and pageY are available in all browsers now. (IE does not provide native pageX/Y).
<p><strong>Example: Have a tooltip follow a user&#8217;s mouse around the page.</strong></p>
<pre class="brush: jscript; title: ; notranslate">$(document).mousemove(function(e){
  $(&quot;#mousetip&quot;).css({
    top: e.pageY + &quot;px&quot;,
    left: e.pageX + &quot;px&quot;
  });
});</pre>
</li>
<li><strong>Improved docs</strong>: $(String) method has now two separate descriptions, one for selecting elements, one for creating html on-the-fly.</li>
<li><strong>FX module</strong>: Most inline styles added by animations are now removed when the animation is complete, eg. height style when animating height (exception: display styles).</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://borkweb.com/story/jquery-104-released/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual JQuery</title>
		<link>http://borkweb.com/story/visual-jquery</link>
		<comments>http://borkweb.com/story/visual-jquery#comments</comments>
		<pubDate>Wed, 01 Nov 2006 15:07:36 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[magazine]]></category>
		<category><![CDATA[visual jquery]]></category>

		<guid isPermaLink="false">http://borkweb.com/story/visual-jquery</guid>
		<description><![CDATA[After my excitement about jQuery since The Ajax Experience, one of my fellow developers at PSU has been checking the toolkit out. In her searches for documentation found Visual jQuery, a nice graphical/textual categorized API for the jQuery toolkit! Its a pretty snazzy learning tool if you aren&#8217;t already familiar with all the functions jQuery [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/borkweb/285731517/" title="Photo Sharing"><img src="http://static.flickr.com/105/285731517_8d4097a342_o.gif" width="383" height="120" alt="jquery" class="post_image" align="left"/></a> After my excitement about <a href="http://borkweb.com/story/the-ajax-experience-jquery-toolkit">jQuery</a> since <a href="http://borkweb.com/story/the-ajax-experience-plan-of-attack">The Ajax Experience</a>, one of <a href="http://max.blogs.plymouth.edu/">my fellow developers</a> at PSU has been checking the toolkit out.  In her searches for documentation found <a href="http://www.visualjquery.com/">Visual jQuery</a>, a nice graphical/textual categorized API for the jQuery toolkit!  Its a pretty snazzy learning tool if you aren&#8217;t already familiar with all the functions jQuery has to offer (found in the <a href="http://jquery.com/api">jQuery API</a>).</p>
<p>I&#8217;ll be using Visual jQuery to explore to toolkit and see what it has to offer and using the JQuery API for quick syntax lookup.</p>
<p>Oh, and on a side note, the people over at Visual jQuery have begun a <a href="http://www.visualjquery.com/magazine/">jQuery magazine</a> in pdf format&#8230;pretty neat-o.</p>
]]></content:encoded>
			<wfw:commentRss>http://borkweb.com/story/visual-jquery/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Ajax Experience: jQuery Toolkit</title>
		<link>http://borkweb.com/story/the-ajax-experience-jquery-toolkit</link>
		<comments>http://borkweb.com/story/the-ajax-experience-jquery-toolkit#comments</comments>
		<pubDate>Wed, 01 Nov 2006 14:56:59 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[ajaxexperience]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[john resig]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[toolkit]]></category>

		<guid isPermaLink="false">http://borkweb.com/story/the-ajax-experience-jquery-toolkit</guid>
		<description><![CDATA[I went to The Ajax Experience with high expectations of catching some great tips regarding development in an Ajax environment. At the same time, I was sure of my previous decision with the use of Prototype and Script.aculo.us was as good as it gets (without diving into the widgetized world&#8230;e.g. Dojo). I attended John Resig&#8216;s [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/borkweb/285731517/" title="Photo Sharing"><img src="http://static.flickr.com/105/285731517_8d4097a342_o.gif" width="383" height="120" alt="jquery" class="post_image" align="left"/></a> I went to <a href="http://theajaxexperience.com">The Ajax Experience</a> with high expectations of catching some great tips regarding development in an Ajax environment.  At the same time, I was sure of my previous decision with the use of <a href="http://borkweb.com/story/prototype-makes-javascript-painless">Prototype</a> and <a href="http://borkweb.com/story/scriptaculous-is-my-new-best-friend">Script.aculo.us</a> was as good as it gets (without diving into the widgetized world&#8230;e.g. <a href="http://dojotoolkit.org">Dojo</a>).  I attended <a href="http://ejohn.org">John Resig</a>&#8216;s presentation on <a href="http://jquery.org">jQuery</a> and I became a convert.</p>
<p>John&#8217;s presentation was less of a presentation and more of a Q&#038;A Demonstration, which suited me fine.  As soon as I knew where to download the code, I popped open my laptop and started fiddling around with the toolkit &#8211; passively paying attention to the questions and answers, as they tended to be extremely basic questions&#8230;you see, jQuery is pretty darn intuitive.</p>
<p>jQuery&#8217;s mantra is <strong>&#8220;Find stuff and do stuff to it&#8221;</strong></p>
<p>Yeah, I wasn&#8217;t converted because jQuery was the first toolkit to support chaining and that it executes it nicely.  Nor was I converted because of its extensive <a href="http://jquery.com/plugins">plugin library</a>.  Nope.  My conversion was the <strong><em>effecient</em> findability of elements within the DOM</strong>!  This is what really makes jQuery ballsy.  The toolkit was built with findability in mind using already established standards!  jQuery fully supports <a href="http://www.w3.org/TR/REC-CSS1#basic-concepts">CSS1</a>, <a href="http://www.w3.org/TR/REC-CSS2/selector.html">CSS2</a>, <a href="http://www.w3.org/TR/2005/WD-css3-selectors-20051215/">CSS3</a>, and basic <a href="http://www.w3.org/TR/xpath">XPath</a> when hunting for elements.  For example:</p>
<p>Lets start with something simple:<br />
Say I wanted to find all elements within the page that had the class: <strong>bork</strong> and hide them, I&#8217;d do:</p>
<pre class="brush: jscript; title: ; notranslate">
$('.bork').hide();
</pre>
<p>Alright, say I wanted to find all anchor tags with the target set to _blank and add the class <strong>whee</strong> to it:</p>
<pre class="brush: jscript; title: ; notranslate">
$('a[@target=_blank]').addClass('whee');
</pre>
<p>Now, lets say I want to find all anchor tags with the target set to _blank and add the class whee to them AND append <strong>(opens in a new window)</strong> as a sibling to the link itself.</p>
<pre class="brush: jscript; title: ; notranslate">
$('a[@target=_blank]').each(
  function(){
    $(this).addClass('whee');
    $(this).after('(Opens in a new window)');
  }
);
</pre>
<p>Now, if I knew I was going to use the above a whole lot all over hell&#8217;s half acre, I could create a jQuery plugin that can be chained!  Here&#8217;s how I&#8217;d create that feature and allow for the passing of class name:</p>
<pre class="brush: jscript; title: ; notranslate">
jQuery.fn.opensInNewWindow = function(classname){
	return this.each(
		function(){
                        $(this).addClass(classname);
                        $(this).after('(Opens in a new window)');
		}
	);
};
</pre>
<p>Now, when I want to put <strong>Opens in a new window</strong> on a series of elements, I can do so with my newly created plugin:</p>
<pre class="brush: jscript; title: ; notranslate">
$('a[@target=_blank]').opensInNewWindow('whee');

//I can do this for ANY element I want even if it isn't a link
$('span.bork').opensInNewWindow('zomg');
$('div#w00t ul.nav').opensInNewWindow('roflcopter');
</pre>
<p>Now, to make use of the chainability, you can write the plugin more simply than what I did up above.  You can do this: (thanks to <em>malsup</em>, a commenter on this article)</p>
<pre class="brush: jscript; title: ; notranslate">
jQuery.fn.opensInNewWindow = function(classname){
	return this.each(
		function(){
      $(this).addClass(classname).after('(Opens in a new window)');
		}
	);
};
</pre>
<p>Cake walk.  As your proficiency in finding objects within a page increases, your code will become shorter.  </p>
<p>jQuery currently has a very active community and mailing list (averaging at about 90 posts per day) so if you have questions regarding the toolkit, you can become a member and ask away&#8230;  In addition, there&#8217;s a <a href="http://jquery.com/blog">jQuery blog</a> where John posts comparison code showing the difference between jQuery and other available toolkits.  (here&#8217;s a <a href="http://jquery.com/blog/2006/10/18/zebra-table-showdown/">Zebra striping example</a>)</p>
<p>If you are still on the hunt for a JavaScript toolkit for Ajax, DOM manipulation, etc <strong>or</strong> you find your toolkit of choice too clunky, give jQuery a shot.  You&#8217;ll be pleased with the results.</p>
]]></content:encoded>
			<wfw:commentRss>http://borkweb.com/story/the-ajax-experience-jquery-toolkit/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The Ajax Experience: Leveraging Ajax for Enterprise Application Development</title>
		<link>http://borkweb.com/story/the-ajax-experience-leveraging-ajax-for-enterprise-application-development</link>
		<comments>http://borkweb.com/story/the-ajax-experience-leveraging-ajax-for-enterprise-application-development#comments</comments>
		<pubDate>Mon, 30 Oct 2006 15:11:24 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[ajaxexperience]]></category>
		<category><![CDATA[Conrad Damon]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[zimbra]]></category>

		<guid isPermaLink="false">http://borkweb.com/story/the-ajax-experience-leveraging-ajax-for-enterprise-application-development</guid>
		<description><![CDATA[[[innerindex]] Despite the fact that AJAX is making significant inroads within the Web 2.0 community, many enterprise applications still remain either traditional web or desktop applications. However, by effectively using AJAX, enterprises can develop compelling, innovative, and useful web based applications that increase employee productivity while retaining the manageability enjoyed by traditional web applications. This [...]]]></description>
			<content:encoded><![CDATA[<p>[[innerindex]]<br />
<blockquote>
Despite the fact that AJAX is making significant inroads within the Web 2.0 community, many enterprise applications still remain either traditional web or desktop applications. However, by effectively using AJAX, enterprises can develop compelling, innovative, and useful web based applications that increase employee productivity while retaining the manageability enjoyed by traditional web applications. This session will focus on the challenges of developing enterprise AJAX applications with an emphasis on overcoming the common hurdles and problems encountered along the way.</p>
<p>Presenter: Conrad Damon &#8211; <a href="http://zimbra.com">Zimbra</a>
</p></blockquote>
<p>Conrad&#8217;s discussion began with an re-iteration of what Web 2.0 is and how things have changed since Web 1.0.  Old news, but the re-iteration was brief. </p>
<h1 id="_choosing-an-ria-solu_1" >Choosing an RIA solution</h1>
<p>Next Conrad explained his team&#8217;s decision process on choosing Ajax as the solution for creating their <a href="http://en.wikipedia.org/wiki/Rich_Internet_application">Rich Internet Application</a>, Zimbra.</p>
<p><strong>Flash?</strong><br />
The Zimbra team turned this down early on as they didn&#8217;t want to be tied to a proprietary solution&#8230; A decision I can respect :)  I&#8217;m not too keen on the use of Flash as a front end for full-blown RIAs in most cases.</p>
<p><strong>Ajax Worries</strong><br />
There were some hesitations regarding the use of Ajax as a solution:</p>
<ul>
<li>Complexity &#8211; Lets face it, adding Ajax into the mix causes the applications complexity to increase.</li>
<li>Performance &#8211; there&#8217;s a lot going on with an Ajax app client-side that <em>can</em> cause client performance to degrade.  (mixed with the chattiness server-side)</li>
<li>Some cross-browser issues.</li>
</ul>
<p><strong>Ajax: The Chosen One</strong><br />
Overall, Zimbra&#8217;s team decided on Ajax as the pros outweighed the cons:</p>
<ul>
<li>Enhanced User Experience</li>
<li>Desktop application-like feel.</li>
<li>Deployment is trivial. &#8211; No installation&#8230;the application is accessible via the web.</li>
<li>The power of mashups is where its at.  Its all about SOA (<a href="http://en.wikipedia.org/wiki/Service-oriented_architecture">Service Oriented Architecture</a>).</li>
</ul>
<h1 id="_ajax-points_1" >Ajax Points</h1>
<p>Conrad noted a few <strong>key points regarding Ajax</strong>, however:</p>
<ul>
<li>Ajax is cheaper on the server/network</li>
<li>Ajax applications <em>are</em> more memory expensive client-side</li>
<li>Ajax applications are not a business model</li>
<li>Ajax applications are the means not an end</li>
</ul>
<h1 id="_ajax-tips_1" >Ajax Tips</h1>
<p>Based on the Zimbra team&#8217;s experience, Conrad gave some tips:</p>
<ul>
<li><strong>Use an Ajax Toolkit</strong> &#8211; They simplify things.  What you choose is up to you, but the time saved by toolkit use is well worth it.</li>
<li><strong>CSS is your friend</strong> &#8211; bend it to your will</li>
<li><strong>Use <a href="http://borkweb.com/story/the-case-for-json-what-is-it-and-why-use-it">JSON</a>, not XML</strong> &#8211; Zimbra has almost fully converted all passing of XML to JSON
<ul>
<li>JSON is easy</li>
<li>JSON is fast.  Eval&#8217;ing JSON is <em>faster</em> than parsing XML by a magnitude of 10!</li>
</ul>
</li>
<li><strong>Use Asynchronous XHR</strong> (XMLHttpRequest) calls</li>
<li><strong>Combine, Compress, and Cache</strong></li>
<li><strong>Automate Testing</strong> &#8211; Zimbra uses <a href="http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/">QuickTest Pro</a> from mercury to test the Zimbra client.</li>
<li><strong><a href="http://en.wikipedia.org/wiki/Object-oriented_programming">OO</a>, <a href="http://en.wikipedia.org/wiki/Model-view-controller">MVC</a></strong></li>
<li><strong>TLS</strong> (Transport Layer Security&#8230;SSL) &#8211; Make sure you use it!</li>
<li><strong>KISS</strong> (Keep it simple, stupid) &#8211; this applies to both code and the UI!</li>
<li><strong>No browser lock-in</strong> &#8211; don&#8217;t program for a specific browser&#8230;keep it open to at least the A-Grade browsers</li>
<li><strong>Test, test, test</strong></li>
</ul>
<h1 id="_browser-gotchas-tips_1" >Browser Gotchas &#038; Tips</h1>
<p>Next came some helpful browser-specific tips and gotchas:</p>
<ul>
<li>Firefox
<ul>
<li>  Missing Cursor &#8211; workarounds exist (surrounding the input with a div&#8230;yadda yadda)</li>
<li>  Event capture &#8211; effects DnD effects</li>
<li>  design mode &#8211; lets you turn the Browser into an editor&#8230;buggy</li>
<li>  xmlHttpRequest &#8211; bug that pained the CPU when making synchronous calls</li>
<li>  opacity (linux) &#8211; hangs browser (relationship between X11 and opacity)!!!!!!!!!!!!!!</li>
<li>  scrollbar bleed (mac) &#8211; scrollbar does not respect z-index</li>
</ul>
</li>
<li>  IE 6
<ul>
<li>  string concat with +&#8230; &#8211; SLOW, use Array joins instead</li>
<li>  image caching is poor &#8211; hard to convince to cache image in browser&#8230;workaround: have a hidden div and load the images there first</li>
<li>  JS engine can be slow</li>
<li>  Memory leaks &#8211; circular reference issue.  workaround: give things numeric ids and a lookup table</li>
<li>  XHR ActiveX object &#8211; some memory leaking issues</li>
<li>  DOM attribute access is slow</li>
</ul>
</li>
<li>  IE 7
<ul>
<li>  ActiveX opt-in</li>
<li>  CSS fixes</li>
<li>  Native XHR</li>
<li>  memory leaks appear to be fixed</li>
</ul>
</li>
<li>  Safari
<ul>
<li>  No design mode</li>
<li>  DOM API not fully implemented</li>
<li>  Debugging difficult (<a href="http://nosheep.net/story/secret-to-debugging-javascript-in-safari/">not entirely true</a>)</li>
</ul>
</li>
</ul>
<h1 id="_the-3-cs_1" >The 3 C&#8217;s</h1>
<p>By far the most useful section of Conrad&#8217;s presentation was on Zimbra&#8217;s 3 C&#8217;s; Combine, Compress, and Cache.</p>
<p><strong>Combine</strong><br />
Zimbra uses this technique to minimize the sheer amount of files downloaded by the client which speeds up load time!  Conrad suggests:</p>
<ul>
<li><strong>Concatenate your JS files and CSS files</strong> &#8211; Order matters (remember)!  Zimbra uses the &#8220;Jammer&#8221; ANT task to do this dirty work.</li>
<li><strong>Merge Images</strong> &#8211; Images are expensive!  If your application uses a large number of icons, try merging them into a single image and use background-positioning on elements for the display of icons.  For disabled icons, use opacity at 20-50% rather than creating a whole new icon.</li>
</ul>
<p><strong>Compress</strong><br />
Compression makes things smaller in size&#8230;smaller &#8220;things&#8221; are quicker to download!</p>
<ul>
<li>Strip comments and whitespace &#8211; use <a href="http://www.crockford.com/javascript/jsmin.html">JSMin</a> or <a href="http://alex.dojotoolkit.org/shrinksafe/">ShrinkSafe</a></li>
<li>GZIP your Javascript!  &#8211; All of the A-Grade browsers support gzipping which reduces file size!</li>
</ul>
<p><strong>Caching</strong><br />
Set proper headers for appropriate browser caching.  Avoid redundant downloads.  Period.</p>
<h1 id="_conclusion_1" >Conclusion</h1>
<p>I respect the Zimbra team and their decisions; their application is solid, functional, and quite sexy. All in all, this was a pretty solid presentation with a nice amount of data.  As I mentioned earlier, the 3C&#8217;s were the most valuable tid-bits of information for me&#8230;although there were a few browser gotchas that I wasn&#8217;t aware of.  </p>
]]></content:encoded>
			<wfw:commentRss>http://borkweb.com/story/the-ajax-experience-leveraging-ajax-for-enterprise-application-development/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Ajax Experience: Plan of Attack</title>
		<link>http://borkweb.com/story/the-ajax-experience-plan-of-attack</link>
		<comments>http://borkweb.com/story/the-ajax-experience-plan-of-attack#comments</comments>
		<pubDate>Fri, 20 Oct 2006 12:21:46 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Aaron Gustafson]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[ajaxian]]></category>
		<category><![CDATA[Alex Russell]]></category>
		<category><![CDATA[apache XAP]]></category>
		<category><![CDATA[bill scott]]></category>
		<category><![CDATA[Bob Buffone]]></category>
		<category><![CDATA[Chris Wilson]]></category>
		<category><![CDATA[Conrad Damon]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[dustin machi]]></category>
		<category><![CDATA[Dustin Whittle]]></category>
		<category><![CDATA[enterprise application]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[Matt Quinn]]></category>
		<category><![CDATA[Michael Mahemoff]]></category>
		<category><![CDATA[Molly Holzschlag]]></category>
		<category><![CDATA[Nate Koechley]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[RAD]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[the ajax experience]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[Vic Patterson]]></category>
		<category><![CDATA[William Morris]]></category>
		<category><![CDATA[XAP]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://borkweb.com/story/the-ajax-experience-plan-of-attack</guid>
		<description><![CDATA[The Ajax Experience is next Monday (although I arrive Sunday afternoon) through Wednesday and I&#8217;ve prepared my plan of attack: Monday 10:00am-11:30am: Leveraging Ajax for Enterprise Application Development &#8211; Conrad Damon 12:30pm-1:15pm: Keynote: Towards a Service-Oriented Applications Stack &#8211; Matt Quinn 1:30pm-3:00pm: Simplify Ajax development with Apache XAP &#8211; Bob Buffone 3:30pm-5:00pm: Ruining the User [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://borkweb.com/story/the-ajax-experience">The Ajax Experience</a> is next Monday (although I arrive Sunday afternoon) through Wednesday and I&#8217;ve prepared my plan of attack:</p>
<h2 id="_monday_1" >Monday</h2>
<p><strong>10:00am-11:30am</strong>: Leveraging Ajax for Enterprise Application Development &#8211; Conrad Damon<br />
<strong>12:30pm-1:15pm</strong>: Keynote: Towards a Service-Oriented Applications Stack &#8211; Matt Quinn<br />
<strong>1:30pm-3:00pm</strong>: Simplify Ajax development with Apache XAP &#8211; Bob Buffone<br />
<strong>3:30pm-5:00pm</strong>: Ruining the User Experience &#8211; Aaron Gustafson<br />
<strong>5:15pm-6:45pm</strong>: Scriptaculous &#8211; Justin Gehtland<br />
<strong>8:00pm-9:30pm</strong>: Expert Panel Discussion</p>
<h2 id="_tuesday_1" >Tuesday</h2>
<p><strong>8:30am-10:00am</strong>: Intro to Dojo &#8211; Alex Russell<br />
<strong>10:30am-12:00pm</strong>: Yahoo! Experiences with Accessibility, DHTML, and Ajax in Rich (Dunno what Rich is&#8230;probably the start of &#8220;Rich Internet Applications&#8221; [RIA], probably) &#8211; Nate Koechley<br />
<strong>1:00pm-1:45pm</strong>: Keynote: Ajax from AOL&#8217;s Perspective &#8211; William Morris<br />
<strong>2:00pm-3:30pm</strong>: RAD 2.0: Working with symfony (PHP) &#8211; Dustin Whittle<br />
<strong>4:00pm-5:30pm</strong>: Markup &#038; CSS for Developers: Empowering the Application Developer with Front End Magic &#8211; Molly Holzschlag<br />
<strong>7:00pm-7:45pm</strong>: Keynote: The Once &#038; Future Web &#8211; Chris Wilson<br />
<strong>9:00pm-10:30pm</strong>: Expert Panel Discussion</p>
<h2 id="_wednesday_1" >Wednesday</h2>
<p><strong>9:30am-10:30am</strong>: Designing for Ajax &#8211; Bill Scott<br />
<strong>11:00am-12:30pm</strong>: Dojo Cookbook &#8211; Dustin Machi</p>
<p>My schedule is subject to change based on buzz or sudden interest in other presentations.  I look forward to seeing what they have to offer and will be blogging along the way!</p>
]]></content:encoded>
			<wfw:commentRss>http://borkweb.com/story/the-ajax-experience-plan-of-attack/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Ajax Experience</title>
		<link>http://borkweb.com/story/the-ajax-experience</link>
		<comments>http://borkweb.com/story/the-ajax-experience#comments</comments>
		<pubDate>Tue, 10 Oct 2006 16:59:43 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[ajaxian]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[matt batchelder]]></category>
		<category><![CDATA[professional development]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[scholarship]]></category>
		<category><![CDATA[the ajax experience]]></category>

		<guid isPermaLink="false">http://borkweb.com/story/the-ajax-experience</guid>
		<description><![CDATA[Well, it seems my application for one of the 5 scholarships to The Ajax Experience has gotten through! w00t! The Ajax Experience is: Ajaxian and NoFluffJustStuff Java Symposiums (NFJS) are pleased to announce The Ajax Experience 2006 Fall Edition &#8211; Boston. We had a great time at the spring event in San Francisco, so we [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:center;">
<a href="http://theajaxexperience.com"><img src="http://theajaxexperience.com/images/TAE-20061023.jpg" style="float:none;"/></a>
</div>
<p>Well, it seems my application for one of the 5 scholarships to <a href="http://theajaxexperience.com">The Ajax Experience</a> has <a href="http://ajaxian.com/archives/ajax-experience-scholarship-winners-announced">gotten through</a>!  w00t!  </p>
<p><strong>The Ajax Experience</strong> is:</p>
<blockquote><p>
<a href="http://ajaxian.com">Ajaxian</a> and <a href="http://www.nofluffjuststuff.com/">NoFluffJustStuff</a> Java Symposiums (NFJS) are pleased to announce The Ajax Experience 2006 Fall Edition &#8211; Boston. We had a great time at the spring event in San Francisco, so we decided to do another show on the east coast. This international event will take place October 23 &#8211; 25, 2006 at the brand new Westin Boston Waterfront in Boston, Massachusetts.</p>
<p>The Ajax Experience 2006: Boston show will feature sixty (60) technically focused ninety (90) minute sessions across three (3) full days spanning six (6) parallel tracks with over (40) forty speakers.</p>
<p>We encourage you to register as soon as possible because seating is limited and we anticipate a sold out show. Here is your opportunity to attend one event where you will find authors and industry notables in one place for the duration of The Ajax Experience Fall 2006 show. This is a unique event you should want to be a part of.
</p></blockquote>
<p>When I first heard about the conference last year, I was extremely excited&#8230;but had my hopes stomped when I brought the cost to my manager.  Ajax was <em>&#8220;too new&#8221;</em> and the University could not justify the expense of the trip.  I waited a year and once again had the eyebrow raised when I brought it up.  Not necessarily my manager&#8217;s fault&#8230;but convincing the University System that they should do something is like convincing a rock it should get up and walk around.</p>
<p>When I saw the <a href="http://ajaxian.com/archives/ajax-experience-update-more-sessions-keynote-and-scholarship-program">Scholarship Program</a> for The Ajax Experience, I got to typing and sent in my application with crossed fingers and high hopes.  My typing paid off.  Here&#8217;s what I wrote:</p>
<blockquote><p>
   My name is Matthew Batchelder, I run BorkWeb ( http://borkweb.com), am a co-founder of MasterWish (http://masterwish.com), and am a web application developer at Plymouth State University (PSU) in Plymouth, NH.  I&#8217;m close by yet so far away. </p>
<p>   A few PSU co-workers and I have been steering web development at the university to include Ajax techniques to enhance the speed and usability of our applications on campus.  Users have been pleased with the results and want more!  But&#8230;PSU &#8211; being a state-run university &#8211; lacks funds to send all of their employees to conferences, especially conferences where the higher-ups [don't know] what valuable information can be attained there &#8211; brains, networking, tips, etc.  When mentioning this conference both last year and this year, I&#8217;ve been met with a handfull of negative responses: &#8220;<em>No, we don&#8217;t have the resources</em>&#8221; to &#8220;<em>Ajax&#8230;isn&#8217;t that a cleaning product?</em>.&#8221;</p>
<p>   <a href="http://masterwish.com">MasterWish</a> &#8211; a one and a half year old brainchild of a couple of other developers and myself &#8211; has been my playground after work hours.  I began my experimentation with Ajax using that site, as PSU tended to slap my hand when looking into Ajax at work.  Through that experimentation, I began to understand the workings of Ajax and how it would work into the PHP/Templating environment I was so comfortable with.  Once I had dug down, I promptly posted my &#8220;<a href="http://borkweb.com/story/ajax-templating-and-the-separation-of-layout-and-logic">Ajax; Templating; and the Separation of Layout and Logic</a>&#8221; article that Ajaxian blogged about, along with the <a href="http://borkweb.com/story/a-simple-server-side-ajax-handler">follow-up article</a>.</p>
<p>   I am building.  I am reading.  I am experimenting.  I am writing.  There&#8217;s always more to learn and I&#8217;d love to see and hear what the Ajax leaders are doing to help guide my train of thought.  Re-creating the wheel sucks and conferences are a great way to have a lot of information slammed into your skull and an even better way to network. Sadly, the price of The Ajax Experience admission is too great great a cost for me to fund myself, and PSU [doesn't always] know what&#8217;s best for them and refuse to pay.  I look to you for help. </p>
<p>Thank you for your consideration.  If you need anything more from me, please let me know!<br />
-Matt
</p></blockquote>
<p>I look forward to picking brains, networking, sucking in as much information as I can get, and blogging it all :D  So: I owe a <strong>HUGE</strong> thanks to the guys over at <a href="http://ajaxian.com">Ajaxian</a>; and a big congrats to the other 4 that received a scholarship.  I&#8217;ll see you all there!</p>
<p>Oh&#8230;.and I look forward to the swag:</p>
<ul>
<li>All Access Pass &#8211; The Ajax Experience</li>
<li>Branded iPOD Shuffle &#8211; The Ajax Experience</li>
<li>Two free books &#8211; Ajax Design Patterns &#038; Java Script: The<br />
Definitive Guide, 5E</li>
<li>Free Access to Slides/Audio of The Ajax Experience 2006: San<br />
Francisco ($250 Value!!)</li>
<li>Custom Laptop Bags &#8211; The Ajax Experience</li>
<li>The Ajax Experience Shirt</li>
<li>The Ajax Experience Binder with handouts from sessions attended</li>
<li>CD with all presentations</li>
<li>Slides/audio/select videos of The Ajax Experience: Boston</li>
<li>Breakfast, Lunch, Dinner, Breaks</li>
<li>The Ajax Experience Party</li>
<li>Great Giveaways including iPOD Nanos, iPOD Videos and XBOX 360s</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://borkweb.com/story/the-ajax-experience/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Firebug 0.4 Released.  Can Web Development Be Any Sexier?</title>
		<link>http://borkweb.com/story/firbug-04-released-can-web-development-be-any-sexier</link>
		<comments>http://borkweb.com/story/firbug-04-released-can-web-development-be-any-sexier#comments</comments>
		<pubDate>Wed, 24 May 2006 11:53:07 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[troubleshoot]]></category>

		<guid isPermaLink="false">http://borkweb.com/story/firbug-04-released-can-web-development-be-any-sexier</guid>
		<description><![CDATA[One of my must have extensions for firefox has a new version out! Firebug, if you don&#8217;t already know, is an Ajax/layout/javascript troubleshooter and is extremely well developed. In version 0.4, Firebug steps beyond the bounds of being a troubleshooter and can now be considered a full fledged debugger. Its new features include: JavaScript Debugger [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://joehewitt.com/software/firebug/firebug.png" align="left" class="post_image" style="border:0px;margin-right:10px;"/> One of my <a href="http://borkweb.com/story/must-have-extensions-for-firefox">must have extensions for firefox</a> has a new version out!  Firebug, if you don&#8217;t already know, is an Ajax/layout/javascript troubleshooter and is extremely well developed.  In version 0.4, Firebug steps beyond the bounds of being a troubleshooter and can now be considered a full fledged <strong>debugger</strong>.  Its new features include:<br />
<br clear="all"/></p>
<ul>
<li>JavaScript Debugger</li>
<li>Stack Traces with JavaScript Errors</li>
<li>Debug JavaScript Errors</li>
<li>Logging levels and assertions</li>
<li>printf-like String formatting</li>
</ul>
<p>For more info, check out <a href="http://joehewitt.com/software/firebug/releases/0.4notes.php">the release notes</a>!</p>
<p>(note: I found out about this on <a href="http://ajaxian.com/archives/firebug-04-now-with-debugger">Ajaxian</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://borkweb.com/story/firbug-04-released-can-web-development-be-any-sexier/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

