<?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>Fri, 23 Sep 2011 07:37:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<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[PHP]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[jQuery]]></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[JavaScript]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[io2009]]></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>

