<?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>PhilFreo.com &#187; JavaScript</title>
	<atom:link href="http://philfreo.com/blog/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://philfreo.com/blog</link>
	<description>The portfolio and blog of Phil Freo, on web design, development, and entrepreneurship.</description>
	<lastBuildDate>Tue, 13 Mar 2012 17:21:18 +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>Two Years at Quizlet</title>
		<link>http://philfreo.com/blog/two-years-at-quizlet/</link>
		<comments>http://philfreo.com/blog/two-years-at-quizlet/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 05:44:33 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[California]]></category>
		<category><![CDATA[Collectors Weekly]]></category>
		<category><![CDATA[Entrepreneurship]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Quizlet]]></category>
		<category><![CDATA[Startups]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=285</guid>
		<description><![CDATA[The last two years (2010-2011) I spent working at Quizlet were an incredible learning experience. Like I did in Jan 2010, I wanted to reflect on some of the technologies I learned and things I did over the last 2 years&#8230; Backend: Learned tons about scalability! Scaled Quizlet to serve 11 million visits per months (60 million [...]]]></description>
			<content:encoded><![CDATA[<p>The last two years (2010-2011) I spent working at Quizlet were an incredible learning experience.</p>
<p>Like I did <a href="/blog/technologies-ive-worked-with-in-2009/">in Jan 2010</a>, I wanted to reflect on some of the technologies I learned and things I did over the last 2 years&#8230;</p>
<p><span id="more-285"></span></p>
<p style="text-align: center;"><img class="aligncenter  wp-image-386" src="http://philfreo.com/blog/wp-content/uploads/2012/03/quizlet_2011-2012.png" alt="" width="560" height="231" /></p>
<p>Backend:</p>
<ul>
<li><strong>Learned tons about scalability!</strong> Scaled Quizlet to serve 11 million visits per months (60 million pageviews, 5 million uniques), serving mostly UGC content with an average page response time of &lt; 50ms.</li>
<li>Got very comfortable with understanding and <strong>tweaking advanced configuration options of Apache, PHP, &amp; MySQL</strong> for desired functionality and scalability requirements</li>
<li>Went from a command line beginner to feeling very comfortable in Linux and Solaris, frequently <strong>writing bash/shell scripts for common sysadmin tasks</strong>, and trying to automate as much as possible.</li>
<li><strong>Worked with large data sets</strong>: our database had several hundred million rows and was in the dozens of gigabytes in size.</li>
<li>Played a dev-ops role and helped transition all production servers to use <strong>Puppet for configuration management</strong>. Focused on having a process for all server related changes and created the ability to have over a dozen different servers recreate-able in very little time.</li>
<li><strong>Learned how to make MySQL fast on a high-trafficked and large database</strong>, do replication and have a quick recovery plan. Dealt with configuring databases, designing schemas, and optimizing SQL statements. Also managed our relationship with Percona&#8217;s consultants (leading MySQL experts) and learned from them.</li>
<li><strong>Automated backups</strong> and ensured we had quick access to them in the right places plus securely storing them off-site to <strong>Amazon S3 </strong>for safety. We had people relying on their data being accessible for studying and thankfully were able to recover quickly from incidents without losing any data.</li>
<li><strong>Sphinx Search</strong> is a very powerful open source search server good for indexing and quickly searching over MySQL. I learned how to configure it for our purposes and use its various features to power search on millions of rows of Quizlet content in a couple hundred milliseconds.</li>
<li>Implemented and used several <strong>performance monitoring tools </strong>to keep tabs on a heavily trafficked website: Nagios, Munin, New Relic, etc.</li>
<li>Learned all about (and implemented) <strong>email deliverability best practices</strong>: SPF records, DKIM, rDNS, Feedback Loops, IP address reputation, etc.</li>
<li>Used several<strong> cloud service providers</strong> (Joyent, Slicehost, Amazon AWS). Setup <strong>reverse proxy CDNs</strong> for optimal performance of static files.</li>
</ul>
<p>Frontend:</p>
<ul>
<li>Major focus on<strong> serious performance optimizations across entire stack. </strong>Spent time obsessing over how to get an extra 20ms out of a page load from our backend while keeping code clean. Resulted in an average page load of &lt; 50ms across Quizlet.</li>
<li>Also became <strong>extremely good at front-end performance; </strong>Did JavaScript profiling, proper handling of static files, caching headers, etc. Attended Velocity Conferences; Kept tabs on PageSpeed and WebpageTest waterfall results.</li>
<li><strong>Used Google Analytics Event Tracking </strong>for tracking client-side user events via JavaScript. Good for error detection and user behavior analysis.</li>
<li>I already knew PHP well, but I&#8217;d say now I&#8217;m more of an expert at properly structuring <strong>object-oriented PHP5</strong> on a large codebase.</li>
<li>Learned all about and then <strong>implemented website localization &amp; internationalization</strong> (i18n) for Quizlet, helping create a framework for user-generated translation submissions that launched in 7 languages.</li>
<li>Got deep into Unicode and character encodings and <strong>implemented a language detection system</strong> in PHP based on n-grams and character encodings.</li>
<li>Spent time <strong>optimizing with AdSense </strong>- A/B tested with different ad placement, targeting, and IAB ad sizes for better inventory.</li>
<li><strong>Wrote a very fast A/B testing framework and used it to optimize</strong> our upgrade page for better monetization</li>
<li>Went very deep on the <strong>MooTools JavaScript library</strong> using it to <a href="/blog/behind-the-scenes-look-at-my-work-at-quizlet/">build complex study games</a>. In the past, jQuery has been my JS library of choice, but MooTools is very nice at being object-oriented and not afraid to extend native objects.</li>
<li>Used <strong>Google Maps &amp; Geocoding  API </strong>heavily (JavaScript and PHP) to build an events directory on CollectorsWeekly.</li>
<li><strong>Used the Stripe API</strong> to accept credit card payments (replacing our previous PayPal solution).</li>
<li><strong>Lots of cross-browser CSS &#8211; </strong>making things look good in browsers both old and new.</li>
</ul>
<p>Dev Processes:</p>
<ul>
<li><strong>Helped lead the development team </strong>with best practices and good processes for coding and communication.</li>
<li>Became<strong> really good at Git </strong>and <strong>transitioned our team from SVN/Trac to Git/GitHub</strong>. Used git submodules to manage many of our dependancies and became a better open source citizen by submitting pull requests and bug reports in more projects.</li>
<li>Did a lot of <strong>code reviewing</strong> on trac and GitHub with peers and new hires / interns.</li>
<li><strong>Introduced unit testing</strong> in both PHP (via PHPUnit) and JavaScript (via Jasmine); did some test-driven-development (TDD).</li>
<li><strong>Created a safer deployment process</strong> which first runs unit tests, PHP Lint, and other sanity checks before deploying.</li>
<li>Started <strong>daily standups</strong> with the eng team to keep everyone up-to-date and on track.</li>
</ul>
<p>Product:</p>
<ul>
<li>Along with development work, I was doing a lot of <strong>Product Management</strong>: feature triage and prioritization, tracking roadmaps, deciding among tradeoffs, etc.</li>
<li><strong>Huge focus on the user interface</strong>: tried to make every new feature high quality and easy to use. Spent a lot of time redoing the user flow of features that already existed to improve their ease of use. <strong>Removed clutter </strong>and made features that &#8220;just work&#8221;.</li>
<li>Used Photoshop to work on <strong>visual improvements &#8212; designing or redesigning</strong> almost all the main pages and many shared UI components on Quizlet.</li>
<li>Brainstormed and implemented game mechanics and other ways to make studying on Quizlet more fun and social.</li>
</ul>
<p>Business+Management</p>
<ul>
<li><strong>Focused heavily on recruiting</strong> other developers, helped create a process<strong> </strong>for finding potential candidates and putting them through a funnel. Did a lot of <strong>technical interviewing </strong>by phone/Skype and in-person. Helped build a great team of full-time people and interns.</li>
<li><strong>Team building.</strong> Helped manage and guide new employees, getting them up to speed and supporting their projects.</li>
<li>Did a fair amount of <strong>biz dev</strong> as well. <strong>Negotiated deals</strong> for licensing software, worked out details of contracts. Talked with potential partners.</li>
<li><strong>Managed projects</strong> that other developers were working on, pushing for both code quality, fast completion, and a high quality user experience.</li>
<li>Wrote a bunch of Quizlet blog posts about product announcements.</li>
</ul>
<p>I&#8217;m sure I&#8217;m missing lots of stuff, and I should probably take even more time to write down some higher level lessons learned about startups. But for now this will do: startups are awesome and the best way to learn a lot of stuff really quickly by doing it. And if you&#8217;re lucky like I&#8217;ve been, it will be with an awesome team working on a great product used by tons of people.</p>
<p>I&#8217;ve recently moved onto a new opportunity that I&#8217;m very excited about. But I&#8217;m really glad to have been at Quizlet the last two years and I look forward to seeing it continuing to succeed widely!</p>
<p>(P.S., they&#8217;re <a href="http://quizlet.com/jobs/">hiring</a>&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/two-years-at-quizlet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Behind the scenes look at my work at Quizlet</title>
		<link>http://philfreo.com/blog/behind-the-scenes-look-at-my-work-at-quizlet/</link>
		<comments>http://philfreo.com/blog/behind-the-scenes-look-at-my-work-at-quizlet/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 07:36:18 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Quizlet]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=332</guid>
		<description><![CDATA[I just wrote a pretty in-depth article on the Quizlet Blog: &#8220;How We Do Product Development at Quizlet: An Inside Look at the Making of Speller&#8221; which describes the process of how Andrew and I created &#8220;Speller&#8221;, the latest study mode on Quizlet. &#8230;a behind the scenes look at how we created Speller, our engineering [...]]]></description>
			<content:encoded><![CDATA[<p>I just wrote a pretty in-depth article on the Quizlet Blog: &#8220;<a href="http://quizlet.com/blog/the-making-of-speller/">How We Do Product Development at Quizlet: An Inside Look at the Making of Speller</a>&#8221; which describes the process of how Andrew and I created &#8220;Speller&#8221;, the latest study mode on Quizlet.</p>
<blockquote><p><em>&#8230;a behind the scenes look at how we created Speller, our engineering challenges and processes, and how we obsessed over the user experience and the educational experience.</em></p></blockquote>
<p>Includes some technical details of how we programmed it (mostly JavaScript), the text-to-speech, development process and usability testing, and lots of screenshots of the different iterations we did in order to get the UI right.</p>
<p>It&#8217;s a little long, but hopefully worth the read!</p>
<p><img class="size-full border wp-image-3595 aligncenter" style="display:block;margin: 10px auto;border: solid 1px #eee; padding: 4px;" src="https://quizlet.com/blog/wp-content/uploads/2011/09/los_animales.png" alt="" width="484" height="147" /></p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/behind-the-scenes-look-at-my-work-at-quizlet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: &#8220;jQuery 1.3 with PHP&#8221;</title>
		<link>http://philfreo.com/blog/book-review-jquery-1-3-with-php/</link>
		<comments>http://philfreo.com/blog/book-review-jquery-1-3-with-php/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 07:30:59 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=255</guid>
		<description><![CDATA[I was given another book to review, called &#8220;jQuery 1.3 with PHP&#8221;, so here it is.  The book is aimed at beginners or intermediate developers wanting to learn how to &#8220;enhance your PHP applications by increasing their responsiveness through jQuery and its plugins&#8220;. Chapter 1: Introduction &#38; Overview, Chapter 2: Quick Tricks &#8211; Good chapter to [...]]]></description>
			<content:encoded><![CDATA[<p>I was given another book to review, called &#8220;jQuery 1.3 with PHP&#8221;, so here it is.  The book is aimed at beginners or intermediate developers wanting to learn how to &#8220;<em>enhance your PHP applications by increasing their responsiveness through jQuery and its plugins</em>&#8220;.</p>
<p><span id="more-255"></span></p>
<p><strong>Chapter 1: Introduction &amp; Overview, Chapter 2: Quick Tricks</strong> &#8211; Good chapter to teach beginners to both JavaScript, jQuery, and PHP the differences between client-side and server-side code, and how the jQuery framework fits into it all.</p>
<p><strong>Chapter 3: Tabs and Accordions</strong> &#8211; At first this chapter looks to be nothing more than glorified examples of <a href="http://docs.jquery.com/UI">jQuery UI</a> Widgets, but later it actually does a nice job showing how PHP can be used with these widgets to do server-side management of the tabs.</p>
<p><strong>Chapter 4: Forms and Form Validation</strong> &#8211; Interesting and insightful way of validating forms (both on the client and server side, which is necessary) without having to duplicate all the validation rules.</p>
<p><strong>Chapter 5: File Management</strong>, <strong>Chapter 6: Calendars</strong> &#8211; Very specific examples, but Ch. 6 uses the very nice <a href="http://www.redredred.com.au/projects/jquery-week-calendar/">jquery-week-calendar</a> plugin to create an interface very similar to Google Calendar and shows how to link it up with PHP managing the events server-side.</p>
<p><strong>Chapter 7: Image Manipulation</strong> &#8211; Another nice example of bringing using both PHP and jQuery plugins (<a href="http://plugins.jquery.com/project/treeview">treeview</a> and <a href="http://deepliquid.com/content/Jcrop.html">jcrop</a>) to create something really useful.  In this case an image browser, resizer, rotator, and cropper.</p>
<p><strong>Chapter 8: Drag and Drop</strong> &#8211; Standard sorting/dragging examples + persisting data.</p>
<p><strong>Chapter 9: Data Tables</strong> &#8211; Using the <a href="http://datatables.net/">DataTables</a> jQuery plugin with PHP on very large data sets.</p>
<p><strong>Chapter 10: Optimization</strong> &#8211; A few helpful tips regarding caching, automatically merging .js source files, JavaScript code optimization, perceived user load times, etc.</p>
<p>Overall, if you&#8217;re a programmer not super familiar with PHP or JavaScript, this book does have some very helpful explanations with good examples.</p>
<p>One small gripe about the book: while I do know that black and white books are much cheaper to produce, reading code without syntax coloring makes it unnecessarily harder to understand.</p>
<p>To learn more or purchase: <a href="http://www.packtpub.com/jquery-1-3-with-php?utm_source=philfreo.com&#038;utm_medium=bookrev&#038;utm_content=blog&#038;utm_campaign=mdb_001650">&#8220;jQuery 1.3 with PHP&#8221; by Kae Verens</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/book-review-jquery-1-3-with-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Greasemonkey script: Facebook Reorder Sidebar</title>
		<link>http://philfreo.com/blog/greasemonkey-script-facebook-reorder-sidebar/</link>
		<comments>http://philfreo.com/blog/greasemonkey-script-facebook-reorder-sidebar/#comments</comments>
		<pubDate>Fri, 29 May 2009 06:29:34 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=90</guid>
		<description><![CDATA[Hate scrolling down to see birthdays on Facebook? I just wrote a quick user script to reorder the parts in the sidebar on Facebook&#8217;s homepage. Before: Requests, Suggestions, Sponsored, Highlights, Events/Birthdays, Connect After: Requests, Events/Birthdays, Suggestions, Highlights, Sponsored, Connect Step 1: install Greasemonkey (Firefox) or GreaseKit (Safari), and restart your browser Step 2: install my [...]]]></description>
			<content:encoded><![CDATA[<p>Hate scrolling down to see birthdays on Facebook? I just wrote a quick user script to reorder the parts in the sidebar on Facebook&#8217;s homepage.</p>
<p><strong>Before:</strong> Requests, Suggestions, Sponsored, Highlights, Events/Birthdays, Connect<br />
<strong>After</strong>: Requests, Events/Birthdays, Suggestions, Highlights, Sponsored, Connect</p>
<p><span id="more-90"></span>Step 1: install <a href="http://www.greasespot.net/">Greasemonkey</a> (Firefox) or <a href="http://8-p.info/greasekit/">GreaseKit</a> (Safari), and restart your browser<br />
Step 2: install my <a href="http://userscripts.org/scripts/show/50396">Facebook Reorder Sidebar</a> userscript<br />
Step 3: visit Facebook and enjoy <img src='http://philfreo.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/greasemonkey-script-facebook-reorder-sidebar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notes from Google I/O Keynote 2009, day 1</title>
		<link>http://philfreo.com/blog/notes-from-google-io-keynote-2009-day-1/</link>
		<comments>http://philfreo.com/blog/notes-from-google-io-keynote-2009-day-1/#comments</comments>
		<pubDate>Thu, 28 May 2009 14:51:19 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[California]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[io2009]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=81</guid>
		<description><![CDATA[Google I/O Keynote Wednesday 5/27/2009 San Francisco, CA #io2009 Better liveblogging here: http://www.techcrunch.com/2009/05/27/live-from-google-io-2009/ 100x improvement in JavaScript speed in the last decade Firefox, Chrome, Safari, &#38; Opera &#8211; all supporting HTML5 with Canvas, Video, Geolocation, App cache / database, Web workers Canvas tag &#8211; supported in all but IE Bespin &#8211; web IDE Chrome profiler [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Google I/O Keynote </strong></p>
<p><em>Wednesday 5/27/2009</em></p>
<p>San Francisco, CA #io2009</p>
<p><span id="more-81"></span></p>
<p>Better liveblogging here: <a href="http://www.techcrunch.com/2009/05/27/live-from-google-io-2009/">http://www.techcrunch.com/2009/05/27/live-from-google-io-2009/</a></p>
<p>100x improvement in JavaScript speed in the last decade</p>
<p>Firefox, Chrome, Safari, &amp; Opera &#8211; all supporting HTML5 with Canvas, Video, Geolocation, App cache / database, Web workers</p>
<p><strong></strong></p>
<p><strong>Canvas</strong> tag &#8211; supported in all but IE</p>
<p>Bespin &#8211; web IDE</p>
<p>Chrome profiler is built completely in HTML5</p>
<p>O3D &#8211; OpenSource 3d in JavaScript</p>
<p><strong>Video</strong> tag &#8211; get video out of &#8220;plugin prison&#8221;</p>
<p>YouTube demo with &lt;video&gt; tag</p>
<p><strong>Geolocation</strong> &#8211; supported in all browsers but IE</p>
<p>Mozillia VP &#8211; &#8220;A good API in 4 browsers is better than a perfect API in 0 or 1 browsers&#8221;</p>
<p>Google Maps will soon be adding a geolocation button</p>
<p>Announcement: Google Latitude on the iPhone in the browser using geolocation (WOW)</p>
<p><strong></strong></p>
<p><strong>App cache / database</strong> &#8211; supported in all browsers but IE</p>
<p>Demo: with Safari &#8211; manifest file names cached application/graphics files</p>
<p>Demo: web app on Android with GMail in airplane mode &#8211; extremely fast</p>
<p><strong></strong></p>
<p><strong>Web workers</strong> &#8211; threads in the browser &#8211; so JavaScript doesn&#8217;t completely freeze the browser</p>
<p>Demo: motion detection from the video tag all in JavaScript</p>
<p>===</p>
<p><strong>Google App Engine</strong></p>
<p>200,000+ developers, 80,000 + applications</p>
<p>Whitehouse app had 700 requests/second with no problem</p>
<p>Announcement: Java open on App Engine</p>
<p>Demo: develop an Ajax app in Eclipse (with Google plugin) in Java on both serverside (app engine) and client side (GWT) extremely quickly.  Just hit deploy (no FTP) in Eclipse.</p>
<p><strong>Google Web Toolkit</strong></p>
<p>Upcoming: Debug directly in any browser</p>
<p>Upcoming: runAsync() lets the compiler split up JavaScript files.  Example: 1.4MB to 200KB, compiler handled dependencies itself.</p>
<p>===</p>
<p><strong>Google Web Elements </strong>(announcement)</p>
<p>Copy and paste website content:</p>
<p>Calendar, Conversation, Custom Search, Maps, News, Presentations, etc.</p>
<p>===</p>
<p><strong>Android </strong>- coming soon new features</p>
<p>FREE ANDROID for everyone!</p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/notes-from-google-io-keynote-2009-day-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yahoo! User Interface (YUI) JS Libraries updates released</title>
		<link>http://philfreo.com/blog/yahoo-user-interface-yui-js-libraries-updates-released/</link>
		<comments>http://philfreo.com/blog/yahoo-user-interface-yui-js-libraries-updates-released/#comments</comments>
		<pubDate>Tue, 11 Jul 2006 01:35:10 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://www.philfreo.com/blog/?p=8</guid>
		<description><![CDATA[Some exciting news for front-end developers today: The Yahoo! Developer Network has released the newest version of it&#8217;s YUI JavaScript libraries today. With extensive documentation, great support for cross-browser coding, and a couple new components, these tools are becoming an even better solution for JavaScript developers. Check out more at the official YUI blog. Here [...]]]></description>
			<content:encoded><![CDATA[<p>Some exciting news for front-end developers today: The <a href="http://developer.yahoo.com/">Yahoo! Developer Network</a> has released the newest version of it&#8217;s <a href="http://developer.yahoo.com/yui/">YUI JavaScript libraries</a> today.  With extensive documentation, great support for cross-browser coding, and a couple new components, these tools are becoming an even better solution for JavaScript developers.  Check out more at the <a href="http://yuiblog.com/blog/2006/07/10/yui-library-release-011-a-host-of-enhancements-and-a-new-logger-control/">official YUI blog</a>. Here is what&#8217;s new:</p>
<p><span id="more-8"></span></p>
<p>Updates to the previously beta versions of:</p>
<ol>
<li>An event utility</li>
<li>DOM collection manager</li>
<li>Connection manager (for AJAX / XHR calls to the server, now with file upload)</li>
<li>Drag &#038; Drop utility</li>
<li>Animation Library (now includes color animation support!)</li>
</ol>
<p>Additionally, the release of improves upon:</p>
<ol>
<li>AutoComplete</li>
<li>Calendar</li>
<li>Container (including Module, Overlay, Panel, Tooltip, Dialog, SimpleDialog)</li>
<li>Menu</li>
<li>Slider</li>
<li>TreeView</li>
</ol>
<p>And adds a new control: the <a href="http://developer.yahoo.com/yui/logger">Logger</a> (beta).</p>
<div>What&#8217;s so great about these <a href="http://developer.yahoo.com/yui">YUI Libraries</a>?  What about <a href="http://prototype.conio.net/">Prototype</a>, <a href="http://dojotoolkit.org/">Dojo</a>, and <a href="http://mochikit.com/">Mochikit</a>?  As a former Prototype enthusiast before coming to Yahoo!, I noticed a couple things beneath the surface that I began to really appreciate when I made the switch:</div>
<div>
<ul>
<li>I like knowing that a company of 12,000 people is backing, using, and continually supporting/improving my JavaScript library.  They have a full time staff of people that are incredibly at handling all the annoying cross browser concerns and repetitive JavaScript tasks, so I don&#8217;t have to.</li>
<li>I have grown to love the heavily name-spaced nature of the YUI libraries.  Sure, at first glance it may seem annoying to have to type YAHOO.util.Event.addListener, but it makes code highly independent and guarantees that it won&#8217;t interfere with other functions of the same name.  One trick: add YUE = YAHOO.util.Event at the top of your page and you&#8217;re golden.  I&#8217;ll admit, I do miss the $ function, but that can always been added individually.</li>
<li>The ability to extend the YUI classes is great.  Say you need an extremely customized version of the Drag &#038; Drop library.  Easy, just take what they give you, and overwrite through inheritance in your own file the individual functions you need to modify.</li>
<li>Unlike Prototype (and others), there is not one massive JavaScript file.  Instead, if you only want Event Handling, you only include a small global yahoo.js, as well as event.js.  Then if you later want to add animation, you just include animation.js.  The point is, you only add what you need.</li>
</ul>
<p>My absolutely favorite part of developing with the YUI libraries is getting to use these <a href="http://developer.yahoo.com/yui/docs/assets/yui-0.11-cheatsheets.zip">cheat sheets</a>.  Go print them now!</div>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/yahoo-user-interface-yui-js-libraries-updates-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

