<?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>Perplexed Labs &#187; framework</title>
	<atom:link href="http://blog.perplexedlabs.com/tag/framework/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.perplexedlabs.com</link>
	<description>web development war stories from the frontlines to the backend</description>
	<lastBuildDate>Sat, 24 Jul 2010 16:27:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>jQuery 1.4 Released</title>
		<link>http://blog.perplexedlabs.com/2010/01/14/jquery-1-4-released/</link>
		<comments>http://blog.perplexedlabs.com/2010/01/14/jquery-1-4-released/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 20:57:24 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.perplexedlabs.com/?p=405</guid>
		<description><![CDATA[Many (awesome) changes http://blog.jquery.com/2010/01/14/jquery-14-released/. View the release notes here: http://jquery14.com/day-01/jquery-14 Related posts:jQuery 1.4.2 Released jQuery 1.4 Alpha 1 Released jQuery 1.4a2 (Alpha 2) Released


Related posts:<ol><li><a href='http://blog.perplexedlabs.com/2010/02/20/jquery-1-4-2-released/' rel='bookmark' title='Permanent Link: jQuery 1.4.2 Released'>jQuery 1.4.2 Released</a></li>
<li><a href='http://blog.perplexedlabs.com/2009/12/05/jquery-1-4-alpha-1-released/' rel='bookmark' title='Permanent Link: jQuery 1.4 Alpha 1 Released'>jQuery 1.4 Alpha 1 Released</a></li>
<li><a href='http://blog.perplexedlabs.com/2009/12/19/jquery-1-4a2-alpha-2-released/' rel='bookmark' title='Permanent Link: jQuery 1.4a2 (Alpha 2) Released'>jQuery 1.4a2 (Alpha 2) Released</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Many (awesome) changes <a href="http://blog.jquery.com/2010/01/14/jquery-14-released/">http://blog.jquery.com/2010/01/14/jquery-14-released/</a>.</p>
<p>View the release notes here: <a href="http://jquery14.com/day-01/jquery-14">http://jquery14.com/day-01/jquery-14</a></p>


<p>Related posts:<ol><li><a href='http://blog.perplexedlabs.com/2010/02/20/jquery-1-4-2-released/' rel='bookmark' title='Permanent Link: jQuery 1.4.2 Released'>jQuery 1.4.2 Released</a></li>
<li><a href='http://blog.perplexedlabs.com/2009/12/05/jquery-1-4-alpha-1-released/' rel='bookmark' title='Permanent Link: jQuery 1.4 Alpha 1 Released'>jQuery 1.4 Alpha 1 Released</a></li>
<li><a href='http://blog.perplexedlabs.com/2009/12/19/jquery-1-4a2-alpha-2-released/' rel='bookmark' title='Permanent Link: jQuery 1.4a2 (Alpha 2) Released'>jQuery 1.4a2 (Alpha 2) Released</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.perplexedlabs.com/2010/01/14/jquery-1-4-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Converting from Prototype to jQuery</title>
		<link>http://blog.perplexedlabs.com/2008/11/16/converting-from-prototype-to-jquery/</link>
		<comments>http://blog.perplexedlabs.com/2008/11/16/converting-from-prototype-to-jquery/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 02:52:47 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[prototype]]></category>

		<guid isPermaLink="false">http://www.perplexedlabs.com/?p=68</guid>
		<description><![CDATA[Let me start off by saying I absolutely love Prototype. When a friend showed me how much it helped with writing cross-browser compatible code, I was an instant fan. Over the years of being a Prototype user I paid close attention to the many posts about why X is a better framework than Y. I [...]


Related posts:<ol><li><a href='http://blog.perplexedlabs.com/2008/12/22/jquery-13-beta-testing/' rel='bookmark' title='Permanent Link: jQuery 1.3 Beta Testing'>jQuery 1.3 Beta Testing</a></li>
<li><a href='http://blog.perplexedlabs.com/2008/11/12/javascript-event-handler/' rel='bookmark' title='Permanent Link: JavaScript Event Handler'>JavaScript Event Handler</a></li>
<li><a href='http://blog.perplexedlabs.com/2010/01/14/jquery-1-4-released/' rel='bookmark' title='Permanent Link: jQuery 1.4 Released'>jQuery 1.4 Released</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Let me start off by saying I absolutely love Prototype.  When a friend showed me how much it helped with writing cross-browser compatible code, I was an instant fan.</p>
<p>Over the years of being a Prototype user I paid close attention to the many posts about why X is a better framework than Y.  I had always planned on at least TRYING another framework at some point to see what all the fuss was about.</p>
<p>Initially what attracted me to jQuery was it's compactness.  It doesn't have separately defined classes for each component, like Prototype.  There's one point of entry and most everything revolves around DOM elements.  There's no distinction between selecting a single or multiple DOM element(s) and, because jQuery only uses a selector syntax, you don't get confused whether the parameter passed is an ID, class, etc.</p>
<p>Furthermore, I never really liked having to use $ for single selection and $$ for multiple selections in Prototype.  Relatively speaking, with jQuery I find that performing actions on multiple DOM elements is easier.  </p>
<p>Chaining is really where jQuery shines.  It reminds me of using the 'with' construct in Visual Basic back in the day.  "This is the object that I want to perform actions on... do this, that, and this... thanks!".  </p>
<p>However, unlike Prototype where one could test for the existence of an object by:</p>
<pre class="brush: jscript;">
if($('objectID')) {
// do something
}
</pre>
<p>In jQuery it isn't quite so intuitive.  Since all jQuery instances are collections of elements, you test for the existence of an element by checking its length property:</p>
<pre class="brush: jscript;">
if(jQuery('#objectId').length == 1) {
// do something
}
</pre>
<p>In jQuery, binding to events is also very intuitive.  Combined with the power of chaining adding event handling to multiple objects is ridiculously simple.  And, because the code executed in your event callback has the context of the object that triggered the event, you can (more easily than bindAsEventListener in Prototype) just access the object within the callback via 'this'.</p>
<p>This brings me to one issue that did initially cause some conversion conflict.  Prototype does a good job of automatically extending standard objects, objects returned, and parameters passed.  With jQuery, you have to get used to 'get()'ing the root DOM element if you need to manipulate it and likewise, extending a root DOM element to a full fledged jQuery instance (such as 'jQuery(this)') if you want to manipulate it via jQuery.</p>
<p>Another primary reason why I switched to jQuery is because it has built in support for basic animations.  Transitional animations give that extra something to a web app.  Having to hand-code them isn't pleasant.  Obviously Prototype has scriptaculous, but thats a huge size (and therefor performance) commitment to make for just a simple fade, no?</p>
<p>jQuery was built to be extensible.  It seems to me that Prototype intended to be the "be all, end all" solution to your JavaScript woes.  jQuery takes a more sensible approach - it provides the fundamental structure and handles the most-desired scenarios.  If there's something it doesn't do out of the box there's probably a plugin available that does.  Most likely someone has come across the same shortcoming already and written a plugin to fulfill the need.</p>
<p>Some plugins I ended up needing immediately were:</p>
<ul>
<li>Date picker</li>
<li>CSS Extraction from Ajax responses (IE issue)</li>
<li>Ancestry (to mimic Prototype's descendantOf())</li>
<li>DOM element creation (to mimic the functionality of Prototype's Element class)</li>
</ul>
<p>I prefer to create DOM elements in JavaScript programatically without using HTML.  jQuery doesn't have a built in solution for creating DOM elements like Prototype does with its Element class.  Fortunately, Lukasz Rajchel has written the DOMEC (DOM Element Creation) plugin.  It's lightweight and is a drop-in replacement for those familiar with the syntax of Prototype's Element.</p>
<p>During the conversion process I found it to be most helpful to load jQuery side by side with Prototype using jQuery's no-conflict functionality.  As I slowly combed through my JavaScript removing Prototype dependencies I would periodically remove Prototype to see if and where I missed any outliers.  This also requires you to use the jQuery() syntax as opposed to the traditional $() syntax.  In doing so this helps easily identify where Prototype code remains.</p>
<p>How have your conversions to jQuery gone?  Have you converted and never looked back?  Your thoughts are appreciated...</p>


<p>Related posts:<ol><li><a href='http://blog.perplexedlabs.com/2008/12/22/jquery-13-beta-testing/' rel='bookmark' title='Permanent Link: jQuery 1.3 Beta Testing'>jQuery 1.3 Beta Testing</a></li>
<li><a href='http://blog.perplexedlabs.com/2008/11/12/javascript-event-handler/' rel='bookmark' title='Permanent Link: JavaScript Event Handler'>JavaScript Event Handler</a></li>
<li><a href='http://blog.perplexedlabs.com/2010/01/14/jquery-1-4-released/' rel='bookmark' title='Permanent Link: jQuery 1.4 Released'>jQuery 1.4 Released</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.perplexedlabs.com/2008/11/16/converting-from-prototype-to-jquery/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Get It Done</title>
		<link>http://blog.perplexedlabs.com/2008/02/01/get-it-done/</link>
		<comments>http://blog.perplexedlabs.com/2008/02/01/get-it-done/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 19:06:54 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://perplexedlabs.com/2008/02/01/get-it-done/</guid>
		<description><![CDATA[Today's comic at xkcd was entitled "Real Programmers", which was hysterical. It got me thinking about a lot of blogs where flame wars erupt because fanboys think their current way of doing things is best, and yours is crap. Everyone has an opinion about which language/framework/web server/OS is The Best. It's fine to have such [...]


Related posts:<ol><li><a href='http://blog.perplexedlabs.com/2009/05/18/php-drinks-java/' rel='bookmark' title='Permanent Link: PHP Drinks Java'>PHP Drinks Java</a></li>
<li><a href='http://blog.perplexedlabs.com/2010/07/01/pythons-tornado-has-swept-me-off-my-feet/' rel='bookmark' title='Permanent Link: Python&#8217;s Tornado has swept me off my feet'>Python&#8217;s Tornado has swept me off my feet</a></li>
<li><a href='http://blog.perplexedlabs.com/2010/02/08/deployment-using-capistrano-and-webistrano-via-rails-and-phusion-passenger/' rel='bookmark' title='Permanent Link: Deployment Using Capistrano / Webistrano via Rails / Phusion Passenger'>Deployment Using Capistrano / Webistrano via Rails / Phusion Passenger</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Today's comic at <a href="http://xkcd.com/378/">xkcd</a> was entitled "Real Programmers", which was hysterical.  It got me thinking about a lot of blogs where flame wars erupt because fanboys think their current way of doing things is best, and yours is crap.  Everyone has an opinion about which language/framework/web server/OS is The Best.   It's fine to have such opinions, and to be able to explain and defend them.  But please don't tell me I am somehow less of a programmer because I use That Other [language/framework/web server/OS].  In a professional capacity I use Ruby on Rails everyday, and I love it.  But I have no problem writing applications in PHP, Java, C/C++...even VB.  Because at the end of the day, users, be they business or otherwise, only care about one thing: the end product.  As programmer, I use whatever tool is best to get the job done.  Of course I have my preferences but I will never try and force a solution to fit within those preferences.</p>
<h3></h3>


<p>Related posts:<ol><li><a href='http://blog.perplexedlabs.com/2009/05/18/php-drinks-java/' rel='bookmark' title='Permanent Link: PHP Drinks Java'>PHP Drinks Java</a></li>
<li><a href='http://blog.perplexedlabs.com/2010/07/01/pythons-tornado-has-swept-me-off-my-feet/' rel='bookmark' title='Permanent Link: Python&#8217;s Tornado has swept me off my feet'>Python&#8217;s Tornado has swept me off my feet</a></li>
<li><a href='http://blog.perplexedlabs.com/2010/02/08/deployment-using-capistrano-and-webistrano-via-rails-and-phusion-passenger/' rel='bookmark' title='Permanent Link: Deployment Using Capistrano / Webistrano via Rails / Phusion Passenger'>Deployment Using Capistrano / Webistrano via Rails / Phusion Passenger</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.perplexedlabs.com/2008/02/01/get-it-done/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
