<?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/"
	>

<channel>
	<title>JennyScript</title>
	<atom:link href="http://jennyscript.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jennyscript.com</link>
	<description></description>
	<pubDate>Sun, 24 Jan 2010 14:05:52 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Rail Baron payoff finder</title>
		<link>http://jennyscript.com/2010/01/24/rail-baron-payoff-finder/</link>
		<comments>http://jennyscript.com/2010/01/24/rail-baron-payoff-finder/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 14:05:52 +0000</pubDate>
		<dc:creator>Jenny</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[games]]></category>

		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://jennyscript.com/?p=33</guid>
		<description><![CDATA[I love playing board games, so I was really excited to receive a copy of Rail Baron as a gift. Rail Baron is a classic game that has been out of print a long time and thus is a bit hard to find. It&#8217;s a long game which isn&#8217;t helped by the fact that there&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>I love playing board games, so I was really excited to receive a copy of <a href="http://en.wikipedia.org/wiki/Rail_Baron">Rail Baron</a> as a gift. Rail Baron is a classic game that has been out of print a long time and thus is a bit hard to find. It&#8217;s a long game which isn&#8217;t helped by the fact that there&#8217;s a huge chart in tiny writing which you use to find out how much money you make for going between two cities. This is the most unenjoyable part of the game. So of course I had to write a little script to automate it. This was also a great opportunity to do something useful with jQuery as I learn it. If you&#8217;re a jQuery user, I&#8217;d love some feedback on any beginner mistakes I&#8217;ve made.</p>
<p><a href="http://jennyscript.com/rail_baron/">Rail Baron payout finder</a></p>
<p>I found the data in an excel file <a href="http://www.boardgamegeek.com/filepage/25099/rail-baron-payoff-chart-xls">here</a>. Then I had to save it as a csv. Then I converted that to json. Then I did some manual clean up. It was a lot faster than typing it all in by hand though!</p>
<p>What next? I&#8217;d like to dabble with writing iPhone apps and this seems like a fun first app for that. The second least enjoyable aspect of playing the game is rolling for destinations. It would be fun to just shake the iPhone and it&#8217;ll choose a city for you and tell you how much money the route is worth. The players can just concentrate on the more enjoyable strategic parts of the game.</p>
]]></content:encoded>
			<wfw:commentRss>http://jennyscript.com/2010/01/24/rail-baron-payoff-finder/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Learning jQuery - First impressions vs. Dojo</title>
		<link>http://jennyscript.com/2010/01/23/learning-jquery-vs-dojo/</link>
		<comments>http://jennyscript.com/2010/01/23/learning-jquery-vs-dojo/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 18:52:02 +0000</pubDate>
		<dc:creator>Jenny</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[dojo]]></category>

		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://jennyscript.com/?p=29</guid>
		<description><![CDATA[I spent yesterday playing around with jQuery. It&#8217;s quite different from Dojo and reminds me a lot of Prototype with a bigger community. I really like jQuery for doing DOM manipulation and find the terse syntax more appealing to write. I love the fact that it has a big community discussing, contributing, and helping each [...]]]></description>
			<content:encoded><![CDATA[<p>I spent yesterday playing around with jQuery. It&#8217;s quite different from Dojo and reminds me a lot of Prototype with a bigger community. I really like jQuery for doing DOM manipulation and find the terse syntax more appealing to write. I love the fact that it has a big community discussing, contributing, and helping each other learn. I do, however, have some concerns about how jQuery might scale up on a rich web application with a lot of functionality. The best way to find out for myself, of course, is to keep learning.</p>
<p><strong>Extending the base functionality: big difference</strong></p>
<p>Perhaps the biggest difference between Dojo and jQuery is the philosophy they took towards extending the base functionality. jQuery itself is best compared to Dojo base. If you want additional functionality, it&#8217;s available in user-created plugins which you download and include via script tag. In Dojo, you would find a module for this in dijit or dojox and include it with dojo.require.</p>
<p>Do you prefer extensions that have been planned out centrally to work together? Are you ok with having just one &#8220;official&#8221; way to do things with some configuration options? Would you rather just include the needed module and skip the process of searching for a plugin? Use Dojo.</p>
<p>Do you want to have the biggest number of options possible for the functionality you need? Don&#8217;t mind having to search around a little bit and compare plugins in exchange for finding one customized to exactly what you want? Use jQuery.</p>
<p><strong>Dependency management</strong></p>
<p>Dojo does really well here. There&#8217;s an &#8220;official way&#8221; to manage dependencies which is nicely supported by the library. You put your custom code in it&#8217;s own folder which becomes a namespace for your code. Create classes in separate files in the folder with dojo.declare and a dojo.provide statement. Just dojo.require them where you want to use them. The jQuery way is to&#8230; use the script tag? You can organize files containing the code however you want. I&#8217;ve only been using jQuery for a very short period of time, but I&#8217;d guess there are some &#8220;best practices&#8221; for organizing code that make this less of a problem when working with others.</p>
<p><strong>Conclusion</strong></p>
<p>The things that make Dojo great for writing complex applications are no help when trying to do simple enhancements. jQuery just makes these things incredibly easy. Just include the library, a plugin or two, and one file with your own code. I think in the future I may be using both depending on what sort of problem I need to solve.</p>
]]></content:encoded>
			<wfw:commentRss>http://jennyscript.com/2010/01/23/learning-jquery-vs-dojo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Happy new year!</title>
		<link>http://jennyscript.com/2010/01/14/happy-new-year/</link>
		<comments>http://jennyscript.com/2010/01/14/happy-new-year/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 02:05:30 +0000</pubDate>
		<dc:creator>Jenny</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jennyscript.com/?p=26</guid>
		<description><![CDATA[A rather belated Happy New Year! Perhaps I should make a belated resolution to update my blog more often? I took a long trip up north to visit the snow over the holidays. I came back to Atlanta for the coldest week we&#8217;ll probably have all year. I love cold weather, so I didn&#8217;t mind [...]]]></description>
			<content:encoded><![CDATA[<p>A rather belated Happy New Year! Perhaps I should make a belated resolution to update my blog more often? I took a long trip up north to visit the snow over the holidays. I came back to Atlanta for the coldest week we&#8217;ll probably have all year. I love cold weather, so I didn&#8217;t mind at all. Holiday recharge complete!</p>
<p>I&#8217;m looking forward to starting a new job at Geeknet working on <a href="http://sourceforge.net">Sourceforge</a> soon. I&#8217;ll be shifting my JavaScript writing to jQuery and getting back to working with TurboGears on the back end. I&#8217;m going to miss everyone at LogicBlox and hope them the best.</p>
]]></content:encoded>
			<wfw:commentRss>http://jennyscript.com/2010/01/14/happy-new-year/feed/</wfw:commentRss>
		</item>
		<item>
		<title>December JavaScript meetup</title>
		<link>http://jennyscript.com/2009/12/10/december-javascript-meetup/</link>
		<comments>http://jennyscript.com/2009/12/10/december-javascript-meetup/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 03:03:00 +0000</pubDate>
		<dc:creator>Jenny</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://jennyscript.com/?p=22</guid>
		<description><![CDATA[This evening was my first visit to the Atlanta JavaScript meetup. It was great meeting other web-dev folks with a lot of shared interests. Ignition Alley is the first co-working space I&#8217;ve visited. Seems like a pretty cool concept which I&#8217;d definitely look into if I didn&#8217;t already have an office to visit every day.
I [...]]]></description>
			<content:encoded><![CDATA[<p>This evening was my first visit to the Atlanta JavaScript meetup. It was great meeting other web-dev folks with a lot of shared interests. Ignition Alley is the first co-working space I&#8217;ve visited. Seems like a pretty cool concept which I&#8217;d definitely look into if I didn&#8217;t already have an office to visit every day.</p>
<p>I presented on JavaScript builds. My talk explained what a JavaScript build is, why you might want to make one, and how to implement a build process. I used Dojo&#8217;s build tools to describe how a build should work and also discussed the Closure compiler. Slides are at the bottom.</p>
<p>The other presentation was on Cappucino which looked great, though I&#8217;m not so sure I want to learn Objective-J if that&#8217;s all I can use it for. Sure it&#8217;s like Objective-C, but how well do the skills translate if I invest time in learning Objective-J and Cappucino disappears? Other than that concern, the demos look great. I was a little bummed that Atlas is still quite buggy and apparently no where near ready for prime time.</p>
<p><iframe src="http://show.zoho.com/embed?id=435815000000006015" height="335" width="450" name="JavaScript build process" scrolling=no frameBorder="0" style="border:1px solid #AABBCC"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://jennyscript.com/2009/12/10/december-javascript-meetup/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Convert your Python to JavaScript with Pyjamas</title>
		<link>http://jennyscript.com/2009/11/13/convert-your-python-to-javascript-with-pyjamas/</link>
		<comments>http://jennyscript.com/2009/11/13/convert-your-python-to-javascript-with-pyjamas/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 03:12:02 +0000</pubDate>
		<dc:creator>Jenny</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[pyjamas]]></category>

		<category><![CDATA[pyjampiler]]></category>

		<guid isPermaLink="false">http://jennyscript.com/?p=19</guid>
		<description><![CDATA[The problem
I faced an irritating situation last year in a project I was working on. I was creating a screen that pulled in a very large set of data from the database then did various calculations on the data based on input in a form. The results were shown in several grids and a flash [...]]]></description>
			<content:encoded><![CDATA[<h3>The problem</h3>
<p>I faced an irritating situation last year in a project I was working on. I was creating a screen that pulled in a very large set of data from the database then did various calculations on the data based on input in a form. The results were shown in several grids and a flash chart all on the same page. These exact same calculations also needed to be run to generate a PDF on the server. I didn&#8217;t want to go back to the server for the calculation because the amount of data that needed to go back and forth was very large. At the same time, I didn&#8217;t want to write and maintain a piece of code that involved 30+ math operations in both JavaScript and Python.</p>
<p><span style="font-weight: bold;">So I discovered </span><span style="font-weight: bold;">Pyjamas</span><span style="font-weight: bold;">!</span></p>
<p>A little background: the <a href="http://pyjs.org">Pyjamas</a> project was started to be the Python answer to GWT. It&#8217;s a framework that allows you to define an entire UI in Python which is then converted to JavaScript and HTML. What I found though was that it&#8217;s possible to use the Python to JavaScript converter in the project to compile your own Python to JavaScript even if you don&#8217;t need the UI framework Pyjamas provides. This was a perfect solution to my problem!</p>
<p>Unfortunately, Pyjamas was still in its infancy at that time, so I had to use a much stripped down subset of Python to get it to build JavaScript successfully. Once I figured out the tricks, it was a great way to avoid a painful round trip to the server and yet also avoid maintaining the same logic in two languages.</p>
<p>Fast forward to today. The Pyjamas project has a greatly improved Python to JavaScript compiler. You can now import multiple modules through the usual Python import functionality. The painful things I had to do before (like not use the dict constructor!) are no longer necessary. There&#8217;s even a way to include external JavaScript files from Python for use in your final generated script.</p>
<h3>How do I use this?</h3>
<p>It looks like at this very moment (mid-November 2009) the compiler inside of Pyjamas is in the process of being broken out into a module called <a href="http://www.smallbulb.net/pyjampiler">pyjampiler</a> that makes it a little easier to use it independently of the larger project<a href="http://www.smallbulb.net/pyjampiler"></a>. This is currently getting moved into the main code, so look for it inside of the next release. For now you can download it from the link above. Playing around with pyjampiler is this easy:</p>
<pre>pyjampiler.py --output=my_javascript.js --entry=my_python</pre>
<p>Really! Your python imports will be followed, converted, and linked together. You&#8217;ll get JavaScript that behaves like your Python.</p>
<h3>Tips for success</h3>
<p>As cool as this is, there are some limits. You can&#8217;t import whatever you like from the Python standard library. The JavaScript generated is going to be much more verbose than something you would have written yourself. You&#8217;ll need to include a helper .js file which is not one of the frameworks you&#8217;re already using (supposedly it&#8217;ll play nice).</p>
<p>I think this technique is best limited to functionality like I described in the beginning of this post. I implemented my logic as a function that took in two dicts and returned another dict of results. The only thing handled by the piece that was converted was the arithmetic required to drive the calculator. I wrote JavaScript to handle the DOM manipulations required to display the results on the client and Python to turn the results into a PDF on the server.</p>
<p>What do you think? Is this a reasonable way to avoid maintaining the same logic in two places? Have a better solution?</p>
]]></content:encoded>
			<wfw:commentRss>http://jennyscript.com/2009/11/13/convert-your-python-to-javascript-with-pyjamas/feed/</wfw:commentRss>
		</item>
		<item>
		<title>position: absolute inside position: relative</title>
		<link>http://jennyscript.com/2009/11/08/position-absolute-inside-position-relative/</link>
		<comments>http://jennyscript.com/2009/11/08/position-absolute-inside-position-relative/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 21:18:27 +0000</pubDate>
		<dc:creator>Jenny</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[position]]></category>

		<guid isPermaLink="false">http://jennyscript.com/?p=15</guid>
		<description><![CDATA[This is one of those CSS tricks I find myself using frequently that doesn't seem to be well documented. If you put an absolutely positioned element <em>inside</em> a relatively positioned one, it gets positioned relative to it. Wait, WHAT?! It's hard to explain, so let's see some code...]]></description>
			<content:encoded><![CDATA[<p>This is one of those CSS tricks I find myself using frequently that doesn&#8217;t seem to be well documented. If you put an absolutely positioned element <em>inside</em> a relatively positioned one, it gets positioned relative to it. Wait, WHAT?! It&#8217;s hard to explain, so let&#8217;s see some code:</p>
<pre>&lt;div style="position: relative; height: 100px; width: 100px; border: 1px solid #000"&gt;
    &lt;div style="position: absolute; right: 0; top: 0;"&gt;X&lt;/div&gt;
    &lt;div style="position: absolute; left: 20px; bottom: 20px;"&gt;Y&lt;/div&gt;
&lt;/div&gt;</pre>
<p>And here it is in action:</p>
<div style="border: 1px solid #000000; position: relative; height: 100px; width: 100px;">
<div style="position: absolute; right: 0pt; top: 0pt;">X</div>
<div style="position: absolute; left: 20px; bottom: 20px;">Y</div>
</div>
<p>This is incredibly useful. Try it out for things like positioning text in tabs or putting a close button in the corner of a div.</p>
]]></content:encoded>
			<wfw:commentRss>http://jennyscript.com/2009/11/08/position-absolute-inside-position-relative/feed/</wfw:commentRss>
		</item>
		<item>
		<title>dojo.dnd.Source fires onDndDrop before it has actually moved the node?</title>
		<link>http://jennyscript.com/2009/11/06/dojodndsource-fires-ondnddrop-before-it-has-actually-moved-the-node/</link>
		<comments>http://jennyscript.com/2009/11/06/dojodndsource-fires-ondnddrop-before-it-has-actually-moved-the-node/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 15:59:09 +0000</pubDate>
		<dc:creator>Jenny</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[dojo]]></category>

		<guid isPermaLink="false">http://jennyscript.com/2009/11/06/dojodndsource-fires-ondnddrop-before-it-has-actually-moved-the-node/</guid>
		<description><![CDATA[Lately I&#8217;ve been working with drag and drop on a project. I&#8217;m dragging controls between two containers that are set to be dojo.dnd.Source. When a control is dropped on a target, I need to get a list of all the controls in each Source involved. I would really like my onDndDrop handler to look something [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I&#8217;ve been working with drag and drop on a project. I&#8217;m dragging controls between two containers that are set to be dojo.dnd.Source. When a control is dropped on a target, I need to get a list of all the controls in each Source involved. I would really like my onDndDrop handler to look something like this:</p>
<pre>
function(source, nodes, copy, target){
        if(source.node==this.top_node || target.node==this.top_node){
            var childNodes = dojo.query('#' + this.top_node.id + ' > .custom-control');
            var newOrder = dojo.map(childNodes, function(childNode){
                return childNode.id;
            });
            console.debug(newOrder)
        }
    }
</pre>
<p>Unfortunately, I came across some annoying behavior. If the source node is located before the target node in the DOM, the onDndDrop event is firing on it before the move actually takes place! My function to calculate what controls are in each Source is therefore getting incorrect results and says the moved control exists in both the source and target Sources. The solution was to add an additional filter for the nodes:</p>
<pre>
function(source, nodes, copy, target){
        var isSource = source.node==this.top_node;
        var isTarget = target.node==this.top_node;
        if(isSource || isTarget){
            var childNodes = dojo.query('#' + this.top_node.id + ' > .custom-control');
            var newOrder = dojo.map(childNodes, function(childNode){
                return childNode.id;
            });
            // make sure that if the node should be moved out of the Source it really is gone
            // sometimes dojo calls this code for the Source before the node has ACTUALLY been moved
            if(isSource &#038;&#038; source.node != target.node){
                newOrder = dojo.filter(newOrder, function(childName){
                    return !dojo.filter(nodes, function(movedNode){
                        return movedNode.id == childName;
                    }).length;
                });
            }
            console.debug(newOrder)
        }
    }
</pre>
<p>As a side note, it works as expected if the target node is before the source in the DOM. I wouldn&#8217;t mind this behavior if it was at least consistent.</p>
]]></content:encoded>
			<wfw:commentRss>http://jennyscript.com/2009/11/06/dojodndsource-fires-ondnddrop-before-it-has-actually-moved-the-node/feed/</wfw:commentRss>
		</item>
		<item>
		<title>I wish JavaScript had named params too</title>
		<link>http://jennyscript.com/2009/04/20/i-wish-javascript-had-named-params-too/</link>
		<comments>http://jennyscript.com/2009/04/20/i-wish-javascript-had-named-params-too/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 19:01:31 +0000</pubDate>
		<dc:creator>Jenny</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://jennyscript.com/?p=10</guid>
		<description><![CDATA[Re: Chrome Extension API; How we wish we have named parameters
If only! Sure, you can use a hash to get a similar effect, but why not just add that in? JavaScript is getting more and more like Python every day anyway&#8230;
]]></description>
			<content:encoded><![CDATA[<p>Re: <a href="http://ajaxian.com/archives/chrome-extension-api-how-we-wish-we-have-named-parameters">Chrome Extension API; How we wish we have named parameters</a></p>
<p>If only! Sure, you <em>can</em> use a hash to get a similar effect, but why not just add that in? JavaScript is getting more and more like Python every day anyway&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://jennyscript.com/2009/04/20/i-wish-javascript-had-named-params-too/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mixed case event names in Dijits? Silly little annoyance&#8230;</title>
		<link>http://jennyscript.com/2009/04/06/mixed-case-event-names-in-dijits-silly-little-annoyance/</link>
		<comments>http://jennyscript.com/2009/04/06/mixed-case-event-names-in-dijits-silly-little-annoyance/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 01:52:10 +0000</pubDate>
		<dc:creator>Jenny</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[dijit]]></category>

		<category><![CDATA[dojo]]></category>

		<guid isPermaLink="false">http://jennyscript.com/2009/04/06/mixed-case-event-names-in-dijits-silly-little-annoyance/</guid>
		<description><![CDATA[So today I was hooking up some event handlers in Dojo. It looks like this for DOM elements:
dojo.connect(myElement, "onclick", myObj, "handler");
One would expect it to be similar for a dijit like:
dojo.connect(myDijit, "onclick", myObj, "handler");
But that didn&#8217;t work. Why not? Because the dijit event names are camel-case:
dojo.connect(myDijit, "onClick", myObj, "handler");
Why not standardize them to match the [...]]]></description>
			<content:encoded><![CDATA[<p>So today I was hooking up some event handlers in Dojo. It looks like this for DOM elements:</p>
<p><code>dojo.connect(myElement, "onclick", myObj, "handler");</code></p>
<p>One would expect it to be similar for a dijit like:</p>
<p><code>dojo.connect(myDijit, "onclick", myObj, "handler");</code></p>
<p>But that didn&#8217;t work. Why not? Because the dijit event names are camel-case:</p>
<p><code>dojo.connect(myDijit, "onClick", myObj, "handler");</code></p>
<p>Why not standardize them to match the equivalent DOM event names with lowercase spellings?</p>
]]></content:encoded>
			<wfw:commentRss>http://jennyscript.com/2009/04/06/mixed-case-event-names-in-dijits-silly-little-annoyance/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Why I&#8217;m leaving Prototype for Dojo</title>
		<link>http://jennyscript.com/2009/04/01/why-im-leaving-prototype-for-dojo/</link>
		<comments>http://jennyscript.com/2009/04/01/why-im-leaving-prototype-for-dojo/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 13:21:48 +0000</pubDate>
		<dc:creator>Jenny</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[dojo]]></category>

		<category><![CDATA[prototype]]></category>

		<guid isPermaLink="false">http://jennyscript.com/2009/04/01/why-im-leaving-prototype-for-dojo/</guid>
		<description><![CDATA[When I first decided to learn a JavaScript framework, I went with Prototype. It was 2006. Prototype was one of the most mature frameworks. When combined with scriptaculous, there were a good amount of things you could do. The big win for me, however, was the large community and decent documentation. It was a good [...]]]></description>
			<content:encoded><![CDATA[<p>When I first decided to learn a JavaScript framework, I went with Prototype. It was 2006. Prototype was one of the most mature frameworks. When combined with scriptaculous, there were a good amount of things you could do. The big win for me, however, was the large community and decent documentation. It was a good choice and we&#8217;ve had a very productive three years together.</p>
<p>Unfortunately, I feel like the Prototype world has not kept up with the times. Well, perhaps that&#8217;s a miss-statement. Prototype is still just what it started out as: a base to build upon. Scriptaculous still provides animation and a few widgets. Meanwhile, the other frameworks have become much more full-featured. The widgets provided by Dojo, YUI, or ext.js are far beyond the ones offered by Scriptaculous. Writing something complex? Package management would help a lot. What about some base CSS to get started on my project with (or even better, themes)?</p>
<p>I will still be using Prototype for smaller projects. I think it&#8217;s great if you just want to toss in a dash of JavaScript flare and would like to use some nice helpers. But, I&#8217;m done writing big applications with Prototype/scriptaculous. It&#8217;s time to learn something new!</p>
<p>I&#8217;ve done a quick review of the options out there, and I&#8217;ve decided to pick up Dojo next. Ext.js needs to be licensed for commercial projects. What if the cost is too much for a project I&#8217;m working on? YUI looks excellent, but somehow it feels less organized. In fact, I plan on playing around with YUI a bit too for comparison.</p>
]]></content:encoded>
			<wfw:commentRss>http://jennyscript.com/2009/04/01/why-im-leaving-prototype-for-dojo/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
