INSERT INTO `wp_dyxkdh_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_category`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES
(558, 3, '2010-04-08 12:41:23', '2010-04-08 16:41:23', 'I was recently on a project where I needed a really flexible persistent data storage mechanism. Normally, this would be fairly easily handled via server-side data persistence code but in this case, each page of the app was basically a single-page XHR app in that to render the page required a JSONP call and lots of DOM rendering. What I was trying to accomplish was back-button support for these dynamically rendered pages and as most know, hitting the back-button on dynamically rendered DOM elements won''t set them back to their original state. To further complicate the problem, the pages were being built based on user input into search forms which included input fields, select boxes and even fly-out accordion style controls. Basically, I was dealing with storing a large amount of data across page views and cookies definitely were not the solution. Also considering that the browser requirements started at IE6, none of the current localstorage mechanisms were viable.\n\n<strong>Persistent Session Variables in JavaScript</strong>\n\nAfter searching quite a bit, I finally found a solution that worked like a charm. <a href="http://www.thomasfrank.se/">Thomas Frank</a> had created a library called <a href="http://www.thomasfrank.se/sessionvars.html">Sessvars.js</a> that leveraged the <em>window.name</em> attribute. The reason for using <em>window.name</em> is that values stored in it persist across page views making it ideal for my needs. The one caveat is that it can only store a string value which at first seemed to throw a wrench in my plans. I needed to store complex data, not just strings. Thankfully, Thomas had come up with a novel way of dealing with this by building a JSON stringifier which serializes and deserializes object data. This allowed me to create a complex data store that could then be converted to a string on the fly. Loved it!\n\nWhat I did was grab the file name and used that as a key value to identify the specific information for that page. So my object would look something like this:\n\n[sourcecode language="javascript"]\n{ &quot;page1.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#search-box&quot;, \n							  &quot;hash&quot; = &quot;field1=foo&amp;field2=21&amp;field3=Mike&quot; } },\n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },\n{ &quot;page2.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#adv-search-box&quot;, \n							  &quot;hash&quot; = &quot;field21=red&amp;field22=blue&amp;field56=February&quot; } } \n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },							  \n{...\n}\n[/sourcecode]\n\nThe benefit of this is that it allowed me total flexibility in storing not only the affected form fields for that specific page as well as allowing for unique form field names on a page by page basis. I could also nest the data as deep as I wanted (i.e.: object within object).\n\nActually storing that data was extremely easy. I simply defined Sessvars.js in my document:\n[sourcecode language="javascript"]\n&lt;script type=&quot;text/javascript&quot; src=&quot;sessionvars.js&quot;&gt;&lt;/script&gt;\n[/sourcecode]\n\nand then stored my data into a property that I created in the default sessvars object:\n\n[sourcecode language="javascript"]\nsessvars.myObj = { &quot;page1.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#search-box&quot;, \n							  &quot;hash&quot; = &quot;field1=foo&amp;field2=21&amp;field3=Mike&quot; } },\n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },\n{ &quot;page2.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#adv-search-box&quot;, \n							  &quot;hash&quot; = &quot;field21=red&amp;field22=blue&amp;field56=February&quot; } } \n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },							  \n{...\n};\n[/sourcecode]\n\nThe library attaches a method to the window''s unload event which automatically handles the stringification of the JSON data once you leave the page so basically assigning the value is all I needed to do to persist the data.\n\n<strong>Restoring the Page</strong>\n\nThe great thing about Sessvars.js is that when a page is loaded, it immediately restores the persistent data making it immediately accessible to your scripts. We were using jQuery on this project so I created a method that would determine the current page, search through my sessvars persistent data and if it found a key, reload the form with the user''s values as well as re-run any previous JSONP calls to ensure the results were populated. I added the method in $(document).ready() to ensure it got called on every page load:\n\n[sourcecode language="javascript"]\nmyApp.state = (function(){\n	return ({\n\n		resetForm : function( key ) {\n			if (sessvars.myApp.state[key]) {\n			    var o = {};\n			    var queryString = decodeURIComponent( sessvars.myApp.state[key].form.hash );\n			    var wrapperEle = &quot;&quot;, formEle= &quot;&quot;, vals = &quot;&quot;;\n			    \n			    queryString.replace(/([^=]+)\\=([^&amp;]+)&amp;?/ig, function(item, a, b){\n			    	a = a.replace( /\\&amp;/g, &quot; &quot;);\n			    	b = b.replace( /\\+/g, &quot; &quot;);\n			    	if (o[a] &amp;&amp; typeof o[a] !== &quot;object&quot;) {\n						o[a] = o[a] + &quot;,&quot; + b;\n					} else {\n						o[a] = b;\n					}\n				});	 		    \n	    \n	    		wrapperEle = $( sessvars.myApp.state[key].form.wrapper );\n	    \n		    	for (var index in o) { \n			   		vals = o[index].split( &quot;,&quot; );\n			   		\n			   		formEle = wrapperEle.find(&quot;input[name=&quot; + index + &quot;], select[name=&quot; + index + &quot;]&quot;);\n\n			   		if (formEle.length &gt; 0) {\n			   		\n				   		if (formEle[0].tagName == &quot;INPUT&quot; &amp;&amp; (formEle[0].type == &quot;checkbox&quot; || formEle[0].type == &quot;radio&quot;)){\n				   			formEle.attr( &quot;checked&quot;, &quot;&quot;);\n				   			for (var i=0; i &lt; vals.length; i++) {\n		   	   			\n				   	   			if (index == &quot;accordianSet&quot;) {\n					   	   			wrapperEle.find(&quot;input[name=&quot; + index + &quot;][value=&quot; + vals[i] + &quot;]&quot;).trigger( &quot;click&quot; );	\n				   	   			} else {\n									wrapperEle.find(&quot;input[name=&quot; + index + &quot;][value=&quot; + vals[i] + &quot;]&quot;).attr( &quot;checked&quot;, &quot;true&quot; );				   	   			\n				   	   			}\n				   	   			\n				   			}\n				   		} else {\n				   			formEle.val( o[index] );\n						}\n						\n					}\n				}\n    		}			\n		},\n		resetPage : function( key ) {\n\n			if (sessvars.myObj.state[key]) {\n				this.resetForm( key );\n			}\n			\n			.... call various other methods to reset the page ....\n			\n		});\n\n}());\n\n$(document).ready( function(){\n	myApp.state.resetPage( myApp.utils.getPageName() );\n});\n[/sourcecode]\n\nThe result is that the search forms would get repopulated with the previously entered values and and the JSONP call re-run based on these new values. It worked exactly like we needed it.\n\n<strong>Closing Thoughts</strong>\n\nUsing Sessvars.js definitely helped us out of a jam. After looking at a number of back-button solutions and even updating <em>window.location</em>, this turned out to be the best solution for our needs due to the dynamic nature of every page. The other takeaway is that using <em>window.name</em> safely affords you about 2mb of data storage. I say this because of the testing that Thomas did. In his research he found the following:\n\n<blockquote>\nIE7 gave up at 32 Mb with a "out of memory" error. Firefox gave up at 32-64 Mb -sometimes crashed there about - otherwise threw an "out of memory" error.Safari gave up at 64 Mb and crashed. Opera has a limit built in (wise) and gave up after 2 Mb, throwing the error "Object to large (implementation limit.)"</blockquote>\n\nI''ve not tested this out in newer versions of the browser \n\n', 'Alternative Client-Side Storage', 0, '', 'inherit', 'open', 'open', '', '538-revision-20', '', '', '2010-04-08 12:41:23', '2010-04-08 16:41:23', '', 538, 'http://blog.reybango.com/2010/04/08/538-revision-20/', 0, 'revision', '', 0),
(559, 3, '2010-04-08 12:49:19', '2010-04-08 16:49:19', 'I was recently on a project where I needed a really flexible persistent data storage mechanism. Normally, this would be fairly easily handled via server-side data persistence code but in this case, each page of the app was basically a single-page XHR app in that to render the page required a JSONP call and lots of DOM insertion and manipulation. What I was trying to accomplish was back-button support for these dynamically rendered pages and as most know, hitting the back-button on dynamically rendered DOM elements won''t set them back to their original state. To further complicate the problem, the pages were being built based on user input into search forms which included input fields, select boxes and even fly-out accordion style controls. Basically, I was dealing with storing a large amount of data across page views and cookies definitely were not the solution. Also considering that the browser requirements started at IE6, none of the current localstorage mechanisms were viable.\n\n<strong>Persistent Session Variables in JavaScript</strong>\n\nAfter searching quite a bit, I finally found a solution that worked like a charm. <a href="http://www.thomasfrank.se/">Thomas Frank</a> had created a library called <a href="http://www.thomasfrank.se/sessionvars.html">Sessvars.js</a> that leveraged the <em>window.name</em> attribute. The reason for using <em>window.name</em> is that values stored in it persist across page views making it ideal for my needs. The one caveat is that it can only store a string value which at first seemed to throw a wrench in my plans. I needed to store complex data, not just strings. Thankfully, Thomas had come up with a novel way of dealing with this by building a JSON stringifier which serializes and deserializes object data. This allowed me to create a complex data store that could then be converted to a string on the fly. Loved it!\n\nWhat I did was grab the file name and used that as a key value to identify the specific information for that page. So my object would look something like this:\n\n[sourcecode language="javascript"]\n{ &quot;page1.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#search-box&quot;, \n							  &quot;hash&quot; = &quot;field1=foo&amp;field2=21&amp;field3=Mike&quot; } },\n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },\n{ &quot;page2.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#adv-search-box&quot;, \n							  &quot;hash&quot; = &quot;field21=red&amp;field22=blue&amp;field56=February&quot; } } \n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },							  \n{...\n}\n[/sourcecode]\n\nThe benefit of this is that it allowed me total flexibility in storing not only the affected form fields for that specific page as well as allowing for unique form field names on a page by page basis. I could also nest the data as deep as I wanted (i.e.: object within object).\n\nActually storing that data was extremely easy. I simply defined Sessvars.js in my document:\n[sourcecode language="javascript"]\n&lt;script type=&quot;text/javascript&quot; src=&quot;sessionvars.js&quot;&gt;&lt;/script&gt;\n[/sourcecode]\n\nand then stored my data into a property that I created in the default sessvars object:\n\n[sourcecode language="javascript"]\nsessvars.myObj = { &quot;page1.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#search-box&quot;, \n							  &quot;hash&quot; = &quot;field1=foo&amp;field2=21&amp;field3=Mike&quot; } },\n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },\n{ &quot;page2.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#adv-search-box&quot;, \n							  &quot;hash&quot; = &quot;field21=red&amp;field22=blue&amp;field56=February&quot; } } \n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },							  \n{...\n};\n[/sourcecode]\n\nThe library attaches a method to the window''s unload event which automatically handles the stringification of the JSON data once you leave the page so basically assigning the value is all I needed to do to persist the data.\n\n<strong>Restoring the Page</strong>\n\nThe great thing about Sessvars.js is that when a page is loaded, it immediately restores the persistent data making it immediately accessible to your scripts. We were using jQuery on this project so I created a method that would determine the current page, search through my sessvars persistent data and if it found a key, reload the form with the user''s values as well as re-run any previous JSONP calls to ensure the results were populated. I added the method in $(document).ready() to ensure it got called on every page load:\n\n[sourcecode language="javascript"]\nmyApp.state = (function(){\n	return ({\n\n		resetForm : function( key ) {\n			if (sessvars.myApp.state[key]) {\n			    var o = {};\n			    var queryString = decodeURIComponent( sessvars.myApp.state[key].form.hash );\n			    var wrapperEle = &quot;&quot;, formEle= &quot;&quot;, vals = &quot;&quot;;\n			    \n			    queryString.replace(/([^=]+)\\=([^&amp;]+)&amp;?/ig, function(item, a, b){\n			    	a = a.replace( /\\&amp;/g, &quot; &quot;);\n			    	b = b.replace( /\\+/g, &quot; &quot;);\n			    	if (o[a] &amp;&amp; typeof o[a] !== &quot;object&quot;) {\n						o[a] = o[a] + &quot;,&quot; + b;\n					} else {\n						o[a] = b;\n					}\n				});	 		    \n	    \n	    		wrapperEle = $( sessvars.myApp.state[key].form.wrapper );\n	    \n		    	for (var index in o) { \n			   		vals = o[index].split( &quot;,&quot; );\n			   		\n			   		formEle = wrapperEle.find(&quot;input[name=&quot; + index + &quot;], select[name=&quot; + index + &quot;]&quot;);\n\n			   		if (formEle.length &gt; 0) {\n			   		\n				   		if (formEle[0].tagName == &quot;INPUT&quot; &amp;&amp; (formEle[0].type == &quot;checkbox&quot; || formEle[0].type == &quot;radio&quot;)){\n				   			formEle.attr( &quot;checked&quot;, &quot;&quot;);\n				   			for (var i=0; i &lt; vals.length; i++) {\n		   	   			\n				   	   			if (index == &quot;accordianSet&quot;) {\n					   	   			wrapperEle.find(&quot;input[name=&quot; + index + &quot;][value=&quot; + vals[i] + &quot;]&quot;).trigger( &quot;click&quot; );	\n				   	   			} else {\n									wrapperEle.find(&quot;input[name=&quot; + index + &quot;][value=&quot; + vals[i] + &quot;]&quot;).attr( &quot;checked&quot;, &quot;true&quot; );				   	   			\n				   	   			}\n				   	   			\n				   			}\n				   		} else {\n				   			formEle.val( o[index] );\n						}\n						\n					}\n				}\n    		}			\n		},\n		resetPage : function( key ) {\n\n			if (sessvars.myObj.state[key]) {\n				this.resetForm( key );\n			}\n			\n			.... call various other methods to reset the page ....\n			\n		});\n\n}());\n\n$(document).ready( function(){\n	myApp.state.resetPage( myApp.utils.getPageName() );\n});\n[/sourcecode]\n\nThe result is that the search forms would get repopulated with the previously entered values and and the JSONP call re-run based on these new values. It worked exactly like we needed it.\n\n<strong>Closing Thoughts</strong>\n\nUsing Sessvars.js definitely helped us out of a jam. After looking at a number of back-button solutions and even updating <em>window.location</em>, this turned out to be the best solution for our needs due to the dynamic nature of every page. The other takeaway is that using <em>window.name</em> safely affords you about 2mb of data storage. I say this because of the testing that Thomas did. In his research he found the following:\n\n<blockquote>\nIE7 gave up at 32 Mb with a "out of memory" error. Firefox gave up at 32-64 Mb -sometimes crashed there about - otherwise threw an "out of memory" error.Safari gave up at 64 Mb and crashed. Opera has a limit built in (wise) and gave up after 2 Mb, throwing the error "Object to large (implementation limit.)"</blockquote>\n\nI''ve not tested this out in newer versions of the browser so I can''t say if these limits are still set but for this project, 2mb was more than enough for our needs.\n\n', 'Alternative Client-Side Storage', 0, '', 'inherit', 'open', 'open', '', '538-revision-21', '', '', '2010-04-08 12:49:19', '2010-04-08 16:49:19', '', 538, 'http://blog.reybango.com/2010/04/08/538-revision-21/', 0, 'revision', '', 0),
(560, 3, '2010-04-08 13:03:31', '2010-04-08 17:03:31', 'I was recently on a project where I needed a really flexible persistent data storage mechanism. Normally, this would be fairly easily handled via server-side data persistence code but in this case, each page of the app was basically a single-page XHR app in that to render the page required a JSONP call and lots of DOM insertion and manipulation. What I was trying to accomplish was back-button support for these dynamically rendered pages and as most know, hitting the back-button on dynamically rendered DOM elements won''t set them back to their original state. To further complicate the problem, the pages were being built based on user input into search forms which included input fields, select boxes and even fly-out accordion style controls. Basically, I was dealing with storing a large amount of data across page views and cookies definitely were not the solution. Also considering that the browser requirements started at IE6, none of the current localstorage mechanisms were viable.\n\n<strong>Persistent Session Variables in JavaScript</strong>\n\nAfter searching quite a bit, I finally found a solution that worked like a charm. <a href="http://www.thomasfrank.se/">Thomas Frank</a> had created a library called <a href="http://www.thomasfrank.se/sessionvars.html">Sessvars.js</a> that leveraged the <em>window.name</em> attribute. The reason for using <em>window.name</em> is that values stored in it persist across page views making it ideal for my needs. The one caveat is that it can only store a string value which at first seemed to throw a wrench in my plans. I needed to store complex data, not just strings. Thankfully, Thomas had come up with a novel way of dealing with this by building a JSON stringifier which serializes and deserializes object data. This allowed me to create a complex data store that could then be converted to a string on the fly. Loved it!\n\nWhat I did was grab the file name and used that as a key value to identify the specific information for that page. So my object would look something like this:\n\n[sourcecode language="javascript"]\n{ &quot;page1.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#search-box&quot;, \n							  &quot;hash&quot; = &quot;field1=foo&amp;field2=21&amp;field3=Mike&quot; } },\n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },\n{ &quot;page2.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#adv-search-box&quot;, \n							  &quot;hash&quot; = &quot;field21=red&amp;field22=blue&amp;field56=February&quot; } } \n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },							  \n{...\n}\n[/sourcecode]\n\nThe benefit of this is that it allowed me total flexibility in storing not only the affected form fields for that specific page as well as allowing for unique form field names on a page by page basis. I could also nest the data as deep as I wanted (i.e.: object within object).\n\nActually storing that data was extremely easy. I simply defined Sessvars.js in my document:\n[sourcecode language="javascript"]\n&lt;script type=&quot;text/javascript&quot; src=&quot;sessionvars.js&quot;&gt;&lt;/script&gt;\n[/sourcecode]\n\nand then stored my data into a property that I created in the default sessvars object:\n\n[sourcecode language="javascript"]\nsessvars.myObj = { &quot;page1.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#search-box&quot;, \n							  &quot;hash&quot; = &quot;field1=foo&amp;field2=21&amp;field3=Mike&quot; } },\n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },\n{ &quot;page2.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#adv-search-box&quot;, \n							  &quot;hash&quot; = &quot;field21=red&amp;field22=blue&amp;field56=February&quot; } } \n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },							  \n{...\n};\n[/sourcecode]\n\nThe library attaches a method to the window''s unload event which automatically handles the stringification of the JSON data once you leave the page so basically assigning the value is all I needed to do to persist the data.\n\n<strong>Restoring the Page</strong>\n\nThe great thing about Sessvars.js is that when a page is loaded, it immediately restores the persistent data making it immediately accessible to your scripts. We were using jQuery on this project so I created a method that would determine the current page, search through my sessvars persistent data and if it found a key, reload the form with the user''s values as well as re-run any previous JSONP calls to ensure the results were populated. I added the method in $(document).ready() to ensure it got called on every page load:\n\n[sourcecode language="javascript"]\nmyApp.state = (function(){\n	return ({\n\n		resetForm : function( key ) {\n			if (sessvars.myApp.state[key]) {\n			    var o = {};\n			    var queryString = decodeURIComponent( sessvars.myApp.state[key].form.hash );\n			    var wrapperEle = &quot;&quot;, formEle= &quot;&quot;, vals = &quot;&quot;;\n			    \n			    queryString.replace(/([^=]+)\\=([^&amp;]+)&amp;?/ig, function(item, a, b){\n			    	a = a.replace( /\\&amp;/g, &quot; &quot;);\n			    	b = b.replace( /\\+/g, &quot; &quot;);\n			    	if (o[a] &amp;&amp; typeof o[a] !== &quot;object&quot;) {\n						o[a] = o[a] + &quot;,&quot; + b;\n					} else {\n						o[a] = b;\n					}\n				});	 		    \n	    \n	    		wrapperEle = $( sessvars.myApp.state[key].form.wrapper );\n	    \n		    	for (var index in o) { \n			   		vals = o[index].split( &quot;,&quot; );\n			   		\n			   		formEle = wrapperEle.find(&quot;input[name=&quot; + index + &quot;], select[name=&quot; + index + &quot;]&quot;);\n\n			   		if (formEle.length &gt; 0) {\n			   		\n				   		if (formEle[0].tagName == &quot;INPUT&quot; &amp;&amp; (formEle[0].type == &quot;checkbox&quot; || formEle[0].type == &quot;radio&quot;)){\n				   			formEle.attr( &quot;checked&quot;, &quot;&quot;);\n				   			for (var i=0; i &lt; vals.length; i++) {\n		   	   			\n				   	   			if (index == &quot;accordianSet&quot;) {\n					   	   			wrapperEle.find(&quot;input[name=&quot; + index + &quot;][value=&quot; + vals[i] + &quot;]&quot;).trigger( &quot;click&quot; );	\n				   	   			} else {\n									wrapperEle.find(&quot;input[name=&quot; + index + &quot;][value=&quot; + vals[i] + &quot;]&quot;).attr( &quot;checked&quot;, &quot;true&quot; );				   	   			\n				   	   			}\n				   	   			\n				   			}\n				   		} else {\n				   			formEle.val( o[index] );\n						}\n						\n					}\n				}\n    		}			\n		},\n		resetPage : function( key ) {\n\n			if (sessvars.myObj.state[key]) {\n				this.resetForm( key );\n			}\n			\n			.... call various other methods to reset the page ....\n			\n		});\n\n}());\n\n$(document).ready( function(){\n	myApp.state.resetPage( myApp.utils.getPageName() );\n});\n[/sourcecode]\n\nThe result is that the search forms would get repopulated with the previously entered values and and the JSONP call re-run based on these new values. It worked exactly like we needed it.\n\n<strong>Closing Thoughts</strong>\n\nUsing Sessvars.js definitely helped us out of a jam. After looking at a number of back-button solutions and even updating <em>window.location</em>, this turned out to be the best solution for our needs due to the dynamic nature of every page. The other takeaway is that using <em>window.name</em> safely affords you about 2mb of data storage. I say this because of the testing that Thomas did. In his research he found the following:\n\n<blockquote>\nIE7 gave up at 32 Mb with a "out of memory" error. Firefox gave up at 32-64 Mb -sometimes crashed there about - otherwise threw an "out of memory" error.Safari gave up at 64 Mb and crashed. Opera has a limit built in (wise) and gave up after 2 Mb, throwing the error "Object to large (implementation limit.)"</blockquote>\n\nI''ve not tested this out in newer versions of the browser so I can''t say if these limits are still set but for this project, 2mb was more than enough for our needs.\n\n<em>Update:</em>\n\nSince posting this I''ve been sent two other JS-based storage solutions which are definitely worth looking at:\n\n<a href="http://gist.github.com/350433">Storage Pollyfiller</a> by insanely talented developer Remy Sharp\n<a href="http://github.com/brianleroux/lawnchair">LawnChair</a> by uber-JS ninja Brian Leroux\n \n\n', 'Alternative Client-Side Storage using Sessvars.js', 0, '', 'inherit', 'open', 'open', '', '538-autosave', '', '', '2010-04-08 13:03:31', '2010-04-08 17:03:31', '', 538, 'http://blog.reybango.com/2010/04/08/538-autosave/', 0, 'revision', '', 0),
(561, 3, '2010-04-08 12:51:38', '2010-04-08 16:51:38', 'I was recently on a project where I needed a really flexible persistent data storage mechanism. Normally, this would be fairly easily handled via server-side data persistence code but in this case, each page of the app was basically a single-page XHR app in that to render the page required a JSONP call and lots of DOM insertion and manipulation. What I was trying to accomplish was back-button support for these dynamically rendered pages and as most know, hitting the back-button on dynamically rendered DOM elements won''t set them back to their original state. To further complicate the problem, the pages were being built based on user input into search forms which included input fields, select boxes and even fly-out accordion style controls. Basically, I was dealing with storing a large amount of data across page views and cookies definitely were not the solution. Also considering that the browser requirements started at IE6, none of the current localstorage mechanisms were viable.\r\n\r\n<strong>Persistent Session Variables in JavaScript</strong>\r\n\r\nAfter searching quite a bit, I finally found a solution that worked like a charm. <a href="http://www.thomasfrank.se/">Thomas Frank</a> had created a library called <a href="http://www.thomasfrank.se/sessionvars.html">Sessvars.js</a> that leveraged the <em>window.name</em> attribute. The reason for using <em>window.name</em> is that values stored in it persist across page views making it ideal for my needs. The one caveat is that it can only store a string value which at first seemed to throw a wrench in my plans. I needed to store complex data, not just strings. Thankfully, Thomas had come up with a novel way of dealing with this by building a JSON stringifier which serializes and deserializes object data. This allowed me to create a complex data store that could then be converted to a string on the fly. Loved it!\r\n\r\nWhat I did was grab the file name and used that as a key value to identify the specific information for that page. So my object would look something like this:\r\n\r\n[sourcecode language="javascript"]\r\n{ &quot;page1.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#search-box&quot;, \r\n							  &quot;hash&quot; = &quot;field1=foo&amp;field2=21&amp;field3=Mike&quot; } },\r\n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },\r\n{ &quot;page2.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#adv-search-box&quot;, \r\n							  &quot;hash&quot; = &quot;field21=red&amp;field22=blue&amp;field56=February&quot; } } \r\n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },							  \r\n{...\r\n}\r\n[/sourcecode]\r\n\r\nThe benefit of this is that it allowed me total flexibility in storing not only the affected form fields for that specific page as well as allowing for unique form field names on a page by page basis. I could also nest the data as deep as I wanted (i.e.: object within object).\r\n\r\nActually storing that data was extremely easy. I simply defined Sessvars.js in my document:\r\n[sourcecode language="javascript"]\r\n&lt;script type=&quot;text/javascript&quot; src=&quot;sessionvars.js&quot;&gt;&lt;/script&gt;\r\n[/sourcecode]\r\n\r\nand then stored my data into a property that I created in the default sessvars object:\r\n\r\n[sourcecode language="javascript"]\r\nsessvars.myObj = { &quot;page1.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#search-box&quot;, \r\n							  &quot;hash&quot; = &quot;field1=foo&amp;field2=21&amp;field3=Mike&quot; } },\r\n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },\r\n{ &quot;page2.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#adv-search-box&quot;, \r\n							  &quot;hash&quot; = &quot;field21=red&amp;field22=blue&amp;field56=February&quot; } } \r\n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },							  \r\n{...\r\n};\r\n[/sourcecode]\r\n\r\nThe library attaches a method to the window''s unload event which automatically handles the stringification of the JSON data once you leave the page so basically assigning the value is all I needed to do to persist the data.\r\n\r\n<strong>Restoring the Page</strong>\r\n\r\nThe great thing about Sessvars.js is that when a page is loaded, it immediately restores the persistent data making it immediately accessible to your scripts. We were using jQuery on this project so I created a method that would determine the current page, search through my sessvars persistent data and if it found a key, reload the form with the user''s values as well as re-run any previous JSONP calls to ensure the results were populated. I added the method in $(document).ready() to ensure it got called on every page load:\r\n\r\n[sourcecode language="javascript"]\r\nmyApp.state = (function(){\r\n	return ({\r\n\r\n		resetForm : function( key ) {\r\n			if (sessvars.myApp.state[key]) {\r\n			    var o = {};\r\n			    var queryString = decodeURIComponent( sessvars.myApp.state[key].form.hash );\r\n			    var wrapperEle = &quot;&quot;, formEle= &quot;&quot;, vals = &quot;&quot;;\r\n			    \r\n			    queryString.replace(/([^=]+)\\=([^&amp;]+)&amp;?/ig, function(item, a, b){\r\n			    	a = a.replace( /\\&amp;/g, &quot; &quot;);\r\n			    	b = b.replace( /\\+/g, &quot; &quot;);\r\n			    	if (o[a] &amp;&amp; typeof o[a] !== &quot;object&quot;) {\r\n						o[a] = o[a] + &quot;,&quot; + b;\r\n					} else {\r\n						o[a] = b;\r\n					}\r\n				});	 		    \r\n	    \r\n	    		wrapperEle = $( sessvars.myApp.state[key].form.wrapper );\r\n	    \r\n		    	for (var index in o) { \r\n			   		vals = o[index].split( &quot;,&quot; );\r\n			   		\r\n			   		formEle = wrapperEle.find(&quot;input[name=&quot; + index + &quot;], select[name=&quot; + index + &quot;]&quot;);\r\n\r\n			   		if (formEle.length &gt; 0) {\r\n			   		\r\n				   		if (formEle[0].tagName == &quot;INPUT&quot; &amp;&amp; (formEle[0].type == &quot;checkbox&quot; || formEle[0].type == &quot;radio&quot;)){\r\n				   			formEle.attr( &quot;checked&quot;, &quot;&quot;);\r\n				   			for (var i=0; i &lt; vals.length; i++) {\r\n		   	   			\r\n				   	   			if (index == &quot;accordianSet&quot;) {\r\n					   	   			wrapperEle.find(&quot;input[name=&quot; + index + &quot;][value=&quot; + vals[i] + &quot;]&quot;).trigger( &quot;click&quot; );	\r\n				   	   			} else {\r\n									wrapperEle.find(&quot;input[name=&quot; + index + &quot;][value=&quot; + vals[i] + &quot;]&quot;).attr( &quot;checked&quot;, &quot;true&quot; );				   	   			\r\n				   	   			}\r\n				   	   			\r\n				   			}\r\n				   		} else {\r\n				   			formEle.val( o[index] );\r\n						}\r\n						\r\n					}\r\n				}\r\n    		}			\r\n		},\r\n		resetPage : function( key ) {\r\n\r\n			if (sessvars.myObj.state[key]) {\r\n				this.resetForm( key );\r\n			}\r\n			\r\n			.... call various other methods to reset the page ....\r\n			\r\n		});\r\n\r\n}());\r\n\r\n$(document).ready( function(){\r\n	myApp.state.resetPage( myApp.utils.getPageName() );\r\n});\r\n[/sourcecode]\r\n\r\nThe result is that the search forms would get repopulated with the previously entered values and and the JSONP call re-run based on these new values. It worked exactly like we needed it.\r\n\r\n<strong>Closing Thoughts</strong>\r\n\r\nUsing Sessvars.js definitely helped us out of a jam. After looking at a number of back-button solutions and even updating <em>window.location</em>, this turned out to be the best solution for our needs due to the dynamic nature of every page. The other takeaway is that using <em>window.name</em> safely affords you about 2mb of data storage. I say this because of the testing that Thomas did. In his research he found the following:\r\n\r\n<blockquote>\r\nIE7 gave up at 32 Mb with a "out of memory" error. Firefox gave up at 32-64 Mb -sometimes crashed there about - otherwise threw an "out of memory" error.Safari gave up at 64 Mb and crashed. Opera has a limit built in (wise) and gave up after 2 Mb, throwing the error "Object to large (implementation limit.)"</blockquote>\r\n\r\nI''ve not tested this out in newer versions of the browser so I can''t say if these limits are still set but for this project, 2mb was more than enough for our needs.\r\n\r\n', 'Alternative Client-Side Storage using Sessvars.js', 0, '', 'inherit', 'open', 'open', '', '538-revision-22', '', '', '2010-04-08 12:51:38', '2010-04-08 16:51:38', '', 538, 'http://blog.reybango.com/2010/04/08/538-revision-22/', 0, 'revision', '', 0),
(562, 3, '2010-04-08 13:03:35', '2010-04-08 17:03:35', 'I was recently on a project where I needed a really flexible persistent data storage mechanism. Normally, this would be fairly easily handled via server-side data persistence code but in this case, each page of the app was basically a single-page XHR app in that to render the page required a JSONP call and lots of DOM insertion and manipulation. What I was trying to accomplish was back-button support for these dynamically rendered pages and as most know, hitting the back-button on dynamically rendered DOM elements won''t set them back to their original state. To further complicate the problem, the pages were being built based on user input into search forms which included input fields, select boxes and even fly-out accordion style controls. Basically, I was dealing with storing a large amount of data across page views and cookies definitely were not the solution. Also considering that the browser requirements started at IE6, none of the current localstorage mechanisms were viable.\r\n\r\n<strong>Persistent Session Variables in JavaScript</strong>\r\n\r\nAfter searching quite a bit, I finally found a solution that worked like a charm. <a href="http://www.thomasfrank.se/">Thomas Frank</a> had created a library called <a href="http://www.thomasfrank.se/sessionvars.html">Sessvars.js</a> that leveraged the <em>window.name</em> attribute. The reason for using <em>window.name</em> is that values stored in it persist across page views making it ideal for my needs. The one caveat is that it can only store a string value which at first seemed to throw a wrench in my plans. I needed to store complex data, not just strings. Thankfully, Thomas had come up with a novel way of dealing with this by building a JSON stringifier which serializes and deserializes object data. This allowed me to create a complex data store that could then be converted to a string on the fly. Loved it!\r\n\r\nWhat I did was grab the file name and used that as a key value to identify the specific information for that page. So my object would look something like this:\r\n\r\n[sourcecode language="javascript"]\r\n{ &quot;page1.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#search-box&quot;, \r\n							  &quot;hash&quot; = &quot;field1=foo&amp;field2=21&amp;field3=Mike&quot; } },\r\n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },\r\n{ &quot;page2.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#adv-search-box&quot;, \r\n							  &quot;hash&quot; = &quot;field21=red&amp;field22=blue&amp;field56=February&quot; } } \r\n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },							  \r\n{...\r\n}\r\n[/sourcecode]\r\n\r\nThe benefit of this is that it allowed me total flexibility in storing not only the affected form fields for that specific page as well as allowing for unique form field names on a page by page basis. I could also nest the data as deep as I wanted (i.e.: object within object).\r\n\r\nActually storing that data was extremely easy. I simply defined Sessvars.js in my document:\r\n[sourcecode language="javascript"]\r\n&lt;script type=&quot;text/javascript&quot; src=&quot;sessionvars.js&quot;&gt;&lt;/script&gt;\r\n[/sourcecode]\r\n\r\nand then stored my data into a property that I created in the default sessvars object:\r\n\r\n[sourcecode language="javascript"]\r\nsessvars.myObj = { &quot;page1.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#search-box&quot;, \r\n							  &quot;hash&quot; = &quot;field1=foo&amp;field2=21&amp;field3=Mike&quot; } },\r\n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },\r\n{ &quot;page2.html&quot; : { &quot;form&quot; : { &quot;wrapper&quot; : &quot;#adv-search-box&quot;, \r\n							  &quot;hash&quot; = &quot;field21=red&amp;field22=blue&amp;field56=February&quot; } } \r\n	  		     &quot;callback&quot; : &quot;resetWrapper&quot; },							  \r\n{...\r\n};\r\n[/sourcecode]\r\n\r\nThe library attaches a method to the window''s unload event which automatically handles the stringification of the JSON data once you leave the page so basically assigning the value is all I needed to do to persist the data.\r\n\r\n<strong>Restoring the Page</strong>\r\n\r\nThe great thing about Sessvars.js is that when a page is loaded, it immediately restores the persistent data making it immediately accessible to your scripts. We were using jQuery on this project so I created a method that would determine the current page, search through my sessvars persistent data and if it found a key, reload the form with the user''s values as well as re-run any previous JSONP calls to ensure the results were populated. I added the method in $(document).ready() to ensure it got called on every page load:\r\n\r\n[sourcecode language="javascript"]\r\nmyApp.state = (function(){\r\n	return ({\r\n\r\n		resetForm : function( key ) {\r\n			if (sessvars.myApp.state[key]) {\r\n			    var o = {};\r\n			    var queryString = decodeURIComponent( sessvars.myApp.state[key].form.hash );\r\n			    var wrapperEle = &quot;&quot;, formEle= &quot;&quot;, vals = &quot;&quot;;\r\n			    \r\n			    queryString.replace(/([^=]+)\\=([^&amp;]+)&amp;?/ig, function(item, a, b){\r\n			    	a = a.replace( /\\&amp;/g, &quot; &quot;);\r\n			    	b = b.replace( /\\+/g, &quot; &quot;);\r\n			    	if (o[a] &amp;&amp; typeof o[a] !== &quot;object&quot;) {\r\n						o[a] = o[a] + &quot;,&quot; + b;\r\n					} else {\r\n						o[a] = b;\r\n					}\r\n				});	 		    \r\n	    \r\n	    		wrapperEle = $( sessvars.myApp.state[key].form.wrapper );\r\n	    \r\n		    	for (var index in o) { \r\n			   		vals = o[index].split( &quot;,&quot; );\r\n			   		\r\n			   		formEle = wrapperEle.find(&quot;input[name=&quot; + index + &quot;], select[name=&quot; + index + &quot;]&quot;);\r\n\r\n			   		if (formEle.length &gt; 0) {\r\n			   		\r\n				   		if (formEle[0].tagName == &quot;INPUT&quot; &amp;&amp; (formEle[0].type == &quot;checkbox&quot; || formEle[0].type == &quot;radio&quot;)){\r\n				   			formEle.attr( &quot;checked&quot;, &quot;&quot;);\r\n				   			for (var i=0; i &lt; vals.length; i++) {\r\n		   	   			\r\n				   	   			if (index == &quot;accordianSet&quot;) {\r\n					   	   			wrapperEle.find(&quot;input[name=&quot; + index + &quot;][value=&quot; + vals[i] + &quot;]&quot;).trigger( &quot;click&quot; );	\r\n				   	   			} else {\r\n									wrapperEle.find(&quot;input[name=&quot; + index + &quot;][value=&quot; + vals[i] + &quot;]&quot;).attr( &quot;checked&quot;, &quot;true&quot; );				   	   			\r\n				   	   			}\r\n				   	   			\r\n				   			}\r\n				   		} else {\r\n				   			formEle.val( o[index] );\r\n						}\r\n						\r\n					}\r\n				}\r\n    		}			\r\n		},\r\n		resetPage : function( key ) {\r\n\r\n			if (sessvars.myObj.state[key]) {\r\n				this.resetForm( key );\r\n			}\r\n			\r\n			.... call various other methods to reset the page ....\r\n			\r\n		});\r\n\r\n}());\r\n\r\n$(document).ready( function(){\r\n	myApp.state.resetPage( myApp.utils.getPageName() );\r\n});\r\n[/sourcecode]\r\n\r\nThe result is that the search forms would get repopulated with the previously entered values and and the JSONP call re-run based on these new values. It worked exactly like we needed it.\r\n\r\n<strong>Closing Thoughts</strong>\r\n\r\nUsing Sessvars.js definitely helped us out of a jam. After looking at a number of back-button solutions and even updating <em>window.location</em>, this turned out to be the best solution for our needs due to the dynamic nature of every page. The other takeaway is that using <em>window.name</em> safely affords you about 2mb of data storage. I say this because of the testing that Thomas did. In his research he found the following:\r\n\r\n<blockquote>\r\nIE7 gave up at 32 Mb with a "out of memory" error. Firefox gave up at 32-64 Mb -sometimes crashed there about - otherwise threw an "out of memory" error.Safari gave up at 64 Mb and crashed. Opera has a limit built in (wise) and gave up after 2 Mb, throwing the error "Object to large (implementation limit.)"</blockquote>\r\n\r\nI''ve not tested this out in newer versions of the browser so I can''t say if these limits are still set but for this project, 2mb was more than enough for our needs.\r\n\r\n<em>Update:</em>\r\n\r\nSince posting this I''ve been sent two other JS-based storage solutions which are definitely worth looking at:\r\n\r\n<a href="http://gist.github.com/350433">Storage Pollyfiller</a> by insanely talented developer Remy Sharp\r\n<a href="http://github.com/brianleroux/lawnchair">LawnChair</a> by uber-JS ninja Brian Leroux\r\n \r\n\r\n', 'Alternative Client-Side Storage using Sessvars.js', 0, '', 'inherit', 'open', 'open', '', '538-revision-23', '', '', '2010-04-08 13:03:35', '2010-04-08 17:03:35', '', 538, 'http://blog.reybango.com/2010/04/08/538-revision-23/', 0, 'revision', '', 0),
(564, 3, '2010-04-08 15:07:55', '2010-04-08 19:07:55', '', 'rey2-polaroid', 0, '', 'inherit', 'open', 'open', '', 'rey2-polaroid', '', '', '2010-04-08 15:07:55', '2010-04-08 19:07:55', '', 0, 'http://blog.reybango.com/wp-content/uploads/2010/04/rey2-polaroid.jpg', 0, 'attachment', 'image/jpeg', 0),
(565, 3, '2010-04-09 12:28:51', '2010-04-09 16:28:51', '<a href="http://blog.reybango.com/wp-content/uploads/2010/04/browsers.jpg"><img src="http://blog.reybango.com/wp-content/uploads/2010/04/browsers.jpg" alt="" title="browsers" width="580" height="126" class="aligncenter size-full wp-image-569" border="0" /></a>\r\n\r\nI just <a href="http://ajaxian.com/archives/getting-users-to-upgrade-their-browsers">did a post over on Ajaxian</a> about <a href="http://royal.pingdom.com/2010/04/08/the-modern-browser-wars-how-well-firefox-ie-and-chrome-succeed-in-getting-their-users-to-upgrade/">Pingdom''s recent analysis</a> of how frequently users upgrade their browsers. It''s a very conflicting topic for me which is why I chose to discuss it here.\r\n\r\nFrom the report, it shows that Google''s Chrome has by far the fastest upgrade time of all the browsers, generally converting users within a month of a new release. This is primarily due to the browser''s use of automatic updating which has won accolades from many people in the development community who tend to cite IE6 still breathing as a great reason for having automatic updates.\r\n\r\nThis approach has both its merits and drawbacks. The obvious positive is that a user will receive important updates immediately ensuring that they will theoretically have a safer and more stable experience. The downside is that an update could actually mess up the browser (or computer) altogether as has happened on many occasions with antivirus programs. In addition, users no longer control the experience. Having worked at Mozilla, I know that they feel strongly that the user should have the ultimate choice of what goes on their computer. And I see the same thing now at Microsoft (where I''m now employed) and even Apple, where force-fed updates aren''t part of the process. They give users and companies the flexibility to decide when upgrading is right for them which I feel is <strong>extremely</strong> important. Obviously, the downside of the latter approach is that users are less inclined to actually upgrade, thus placing us into a situation where the 10-year old IE6 is still haunting us.\r\n\r\nThis is a tough situation because while users should have control, when they don''t upgrade it stifles developer abilities to push the web forward and can put these users at risk. I''m sure that the browser makers would be interested in your thoughts. What''s your take on this?\r\n\r\n<em><strong>Full Disclosure</strong>: I previously worked at Mozilla and I am now employed at Microsoft.</em>\r\n\r\n', 'Should a User Have a Choice When to Upgrade Their Browser?', 0, '', 'publish', 'open', 'open', '', 'should-a-user-have-a-choice-when-to-upgrade-their-browser', '', '\nhttp://royal.pingdom.com/2010/04/08/the-modern-browser-wars-how-well-firefox-ie-and-chrome-succeed-in-getting-their-users-to-upgrade/', '2010-04-09 12:30:44', '2010-04-09 16:30:44', '', 0, 'http://blog.reybango.com/?p=565', 0, 'post', '', 19),
(566, 3, '2010-04-09 12:22:33', '2010-04-09 16:22:33', 'I just did a post over on Ajaxian about <a href="http://royal.pingdom.com/2010/04/08/the-modern-browser-wars-how-well-firefox-ie-and-chrome-succeed-in-getting-their-users-to-upgrade/">Pingdom''s recent analysis</a> of how frequently users upgrade their browsers. It''s a very conflicting topic for me which is why I chose to discuss it here.\n\nFrom the report, it shows that Google''s Chrome has by far the fastest upgrade time of all the browsers, generally converting users within a month of a new release. This is primarily due to the browser''s use of automatic updating which has won accolades from many people in the development community who tend to cite IE6 still breathing as a reason for having automatic updates.\n\nThis approach has both its merits and drawbacks. The obvious positive is that a user will receive important updates immediately ensuring that they will theoretically have a safer and more stable experience. The downside is that an update could actually mess up the browser (or computer) altogether as has happened on many occasions with antivirus programs. In addition, users no longer control the experience. Having worked at Mozilla, I know that they feel that the user should have the ultimate choice of what goes on their computer. And I see the same thing now at Microsoft (where I''m now employed) and even Apple, where force-fed updates aren''t part of the process. They give users and companies the flexibility to decide when upgrading is right for them which I feel is extremely important. Obviously, the downside of the latter approach is that users are less inclined to actually upgrade, thus placing us into a situation where the 10-year old IE6 is still haunting us.\n\nThis is a tough situation because while users should have control, when they don''t upgrade it stifles developer abilities to push the web forward and can put them at risk. I''m sure that the browser makers would be interested in your thoughts. What''s your take on this?\n\n\n\n', '', 0, '', 'inherit', 'open', 'open', '', '565-revision', '', '', '2010-04-09 12:22:33', '2010-04-09 16:22:33', '', 565, 'http://blog.reybango.com/2010/04/09/565-revision/', 0, 'revision', '', 0);
INSERT INTO `wp_dyxkdh_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_category`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES
(567, 3, '2010-04-09 12:22:57', '2010-04-09 16:22:57', 'I just <a href="http://ajaxian.com/archives/getting-users-to-upgrade-their-browsers">did a post over on Ajaxian</a> about <a href="http://royal.pingdom.com/2010/04/08/the-modern-browser-wars-how-well-firefox-ie-and-chrome-succeed-in-getting-their-users-to-upgrade/">Pingdom''s recent analysis</a> of how frequently users upgrade their browsers. It''s a very conflicting topic for me which is why I chose to discuss it here.\r\n\r\nFrom the report, it shows that Google''s Chrome has by far the fastest upgrade time of all the browsers, generally converting users within a month of a new release. This is primarily due to the browser''s use of automatic updating which has won accolades from many people in the development community who tend to cite IE6 still breathing as a reason for having automatic updates.\r\n\r\nThis approach has both its merits and drawbacks. The obvious positive is that a user will receive important updates immediately ensuring that they will theoretically have a safer and more stable experience. The downside is that an update could actually mess up the browser (or computer) altogether as has happened on many occasions with antivirus programs. In addition, users no longer control the experience. Having worked at Mozilla, I know that they feel that the user should have the ultimate choice of what goes on their computer. And I see the same thing now at Microsoft (where I''m now employed) and even Apple, where force-fed updates aren''t part of the process. They give users and companies the flexibility to decide when upgrading is right for them which I feel is extremely important. Obviously, the downside of the latter approach is that users are less inclined to actually upgrade, thus placing us into a situation where the 10-year old IE6 is still haunting us.\r\n\r\nThis is a tough situation because while users should have control, when they don''t upgrade it stifles developer abilities to push the web forward and can put them at risk. I''m sure that the browser makers would be interested in your thoughts. What''s your take on this?\r\n\r\n\r\n\r\n', '', 0, '', 'inherit', 'open', 'open', '', '565-revision-2', '', '', '2010-04-09 12:22:57', '2010-04-09 16:22:57', '', 565, 'http://blog.reybango.com/2010/04/09/565-revision-2/', 0, 'revision', '', 0),
(568, 3, '2010-04-09 12:23:34', '2010-04-09 16:23:34', 'I just <a href="http://ajaxian.com/archives/getting-users-to-upgrade-their-browsers">did a post over on Ajaxian</a> about <a href="http://royal.pingdom.com/2010/04/08/the-modern-browser-wars-how-well-firefox-ie-and-chrome-succeed-in-getting-their-users-to-upgrade/">Pingdom''s recent analysis</a> of how frequently users upgrade their browsers. It''s a very conflicting topic for me which is why I chose to discuss it here.\r\n\r\nFrom the report, it shows that Google''s Chrome has by far the fastest upgrade time of all the browsers, generally converting users within a month of a new release. This is primarily due to the browser''s use of automatic updating which has won accolades from many people in the development community who tend to cite IE6 still breathing as a reason for having automatic updates.\r\n\r\nThis approach has both its merits and drawbacks. The obvious positive is that a user will receive important updates immediately ensuring that they will theoretically have a safer and more stable experience. The downside is that an update could actually mess up the browser (or computer) altogether as has happened on many occasions with antivirus programs. In addition, users no longer control the experience. Having worked at Mozilla, I know that they feel that the user should have the ultimate choice of what goes on their computer. And I see the same thing now at Microsoft (where I''m now employed) and even Apple, where force-fed updates aren''t part of the process. They give users and companies the flexibility to decide when upgrading is right for them which I feel is extremely important. Obviously, the downside of the latter approach is that users are less inclined to actually upgrade, thus placing us into a situation where the 10-year old IE6 is still haunting us.\r\n\r\nThis is a tough situation because while users should have control, when they don''t upgrade it stifles developer abilities to push the web forward and can put them at risk. I''m sure that the browser makers would be interested in your thoughts. What''s your take on this?\r\n\r\n\r\n\r\n', 'Should a User Have a Choice When to Upgrade Their Browser?', 0, '', 'inherit', 'open', 'open', '', '565-revision-3', '', '', '2010-04-09 12:23:34', '2010-04-09 16:23:34', '', 565, 'http://blog.reybango.com/2010/04/09/565-revision-3/', 0, 'revision', '', 0),
(569, 3, '2010-04-09 12:24:34', '2010-04-09 16:24:34', '', 'browsers', 0, '', 'inherit', 'open', 'open', '', 'browsers', '', '', '2010-04-09 12:24:34', '2010-04-09 16:24:34', '', 565, 'http://blog.reybango.com/wp-content/uploads/2010/04/browsers.jpg', 0, 'attachment', 'image/jpeg', 0),
(570, 3, '2010-04-09 12:23:42', '2010-04-09 16:23:42', 'I just <a href="http://ajaxian.com/archives/getting-users-to-upgrade-their-browsers">did a post over on Ajaxian</a> about <a href="http://royal.pingdom.com/2010/04/08/the-modern-browser-wars-how-well-firefox-ie-and-chrome-succeed-in-getting-their-users-to-upgrade/">Pingdom''s recent analysis</a> of how frequently users upgrade their browsers. It''s a very conflicting topic for me which is why I chose to discuss it here.\r\n\r\nFrom the report, it shows that Google''s Chrome has by far the fastest upgrade time of all the browsers, generally converting users within a month of a new release. This is primarily due to the browser''s use of automatic updating which has won accolades from many people in the development community who tend to cite IE6 still breathing as a reason for having automatic updates.\r\n\r\nThis approach has both its merits and drawbacks. The obvious positive is that a user will receive important updates immediately ensuring that they will theoretically have a safer and more stable experience. The downside is that an update could actually mess up the browser (or computer) altogether as has happened on many occasions with antivirus programs. In addition, users no longer control the experience. Having worked at Mozilla, I know that they feel that the user should have the ultimate choice of what goes on their computer. And I see the same thing now at Microsoft (where I''m now employed) and even Apple, where force-fed updates aren''t part of the process. They give users and companies the flexibility to decide when upgrading is right for them which I feel is extremely important. Obviously, the downside of the latter approach is that users are less inclined to actually upgrade, thus placing us into a situation where the 10-year old IE6 is still haunting us.\r\n\r\nThis is a tough situation because while users should have control, when they don''t upgrade it stifles developer abilities to push the web forward and can put them at risk. I''m sure that the browser makers would be interested in your thoughts. What''s your take on this?\r\n\r\n\r\n\r\n', 'Should a User Have a Choice When to Upgrade Their Browser?', 0, '', 'inherit', 'open', 'open', '', '565-revision-4', '', '', '2010-04-09 12:23:42', '2010-04-09 16:23:42', '', 565, 'http://blog.reybango.com/2010/04/09/565-revision-4/', 0, 'revision', '', 0),
(571, 3, '2010-04-09 12:25:08', '2010-04-09 16:25:08', '<a href="http://blog.reybango.com/wp-content/uploads/2010/04/browsers.jpg"><img src="http://blog.reybango.com/wp-content/uploads/2010/04/browsers.jpg" alt="" title="browsers" width="580" height="126" class="aligncenter size-full wp-image-569" /></a>\r\n\r\nI just <a href="http://ajaxian.com/archives/getting-users-to-upgrade-their-browsers">did a post over on Ajaxian</a> about <a href="http://royal.pingdom.com/2010/04/08/the-modern-browser-wars-how-well-firefox-ie-and-chrome-succeed-in-getting-their-users-to-upgrade/">Pingdom''s recent analysis</a> of how frequently users upgrade their browsers. It''s a very conflicting topic for me which is why I chose to discuss it here.\r\n\r\nFrom the report, it shows that Google''s Chrome has by far the fastest upgrade time of all the browsers, generally converting users within a month of a new release. This is primarily due to the browser''s use of automatic updating which has won accolades from many people in the development community who tend to cite IE6 still breathing as a reason for having automatic updates.\r\n\r\nThis approach has both its merits and drawbacks. The obvious positive is that a user will receive important updates immediately ensuring that they will theoretically have a safer and more stable experience. The downside is that an update could actually mess up the browser (or computer) altogether as has happened on many occasions with antivirus programs. In addition, users no longer control the experience. Having worked at Mozilla, I know that they feel that the user should have the ultimate choice of what goes on their computer. And I see the same thing now at Microsoft (where I''m now employed) and even Apple, where force-fed updates aren''t part of the process. They give users and companies the flexibility to decide when upgrading is right for them which I feel is extremely important. Obviously, the downside of the latter approach is that users are less inclined to actually upgrade, thus placing us into a situation where the 10-year old IE6 is still haunting us.\r\n\r\nThis is a tough situation because while users should have control, when they don''t upgrade it stifles developer abilities to push the web forward and can put them at risk. I''m sure that the browser makers would be interested in your thoughts. What''s your take on this?\r\n\r\n\r\n\r\n', 'Should a User Have a Choice When to Upgrade Their Browser?', 0, '', 'inherit', 'open', 'open', '', '565-revision-5', '', '', '2010-04-09 12:25:08', '2010-04-09 16:25:08', '', 565, 'http://blog.reybango.com/2010/04/09/565-revision-5/', 0, 'revision', '', 0),
(572, 3, '2010-04-09 12:25:11', '2010-04-09 16:25:11', '<a href="http://blog.reybango.com/wp-content/uploads/2010/04/browsers.jpg"><img src="http://blog.reybango.com/wp-content/uploads/2010/04/browsers.jpg" alt="" title="browsers" width="580" height="126" class="aligncenter size-full wp-image-569" /></a>\r\n\r\nI just <a href="http://ajaxian.com/archives/getting-users-to-upgrade-their-browsers">did a post over on Ajaxian</a> about <a href="http://royal.pingdom.com/2010/04/08/the-modern-browser-wars-how-well-firefox-ie-and-chrome-succeed-in-getting-their-users-to-upgrade/">Pingdom''s recent analysis</a> of how frequently users upgrade their browsers. It''s a very conflicting topic for me which is why I chose to discuss it here.\r\n\r\nFrom the report, it shows that Google''s Chrome has by far the fastest upgrade time of all the browsers, generally converting users within a month of a new release. This is primarily due to the browser''s use of automatic updating which has won accolades from many people in the development community who tend to cite IE6 still breathing as a reason for having automatic updates.\r\n\r\nThis approach has both its merits and drawbacks. The obvious positive is that a user will receive important updates immediately ensuring that they will theoretically have a safer and more stable experience. The downside is that an update could actually mess up the browser (or computer) altogether as has happened on many occasions with antivirus programs. In addition, users no longer control the experience. Having worked at Mozilla, I know that they feel that the user should have the ultimate choice of what goes on their computer. And I see the same thing now at Microsoft (where I''m now employed) and even Apple, where force-fed updates aren''t part of the process. They give users and companies the flexibility to decide when upgrading is right for them which I feel is extremely important. Obviously, the downside of the latter approach is that users are less inclined to actually upgrade, thus placing us into a situation where the 10-year old IE6 is still haunting us.\r\n\r\nThis is a tough situation because while users should have control, when they don''t upgrade it stifles developer abilities to push the web forward and can put them at risk. I''m sure that the browser makers would be interested in your thoughts. What''s your take on this?\r\n\r\n\r\n\r\n', 'Should a User Have a Choice When to Upgrade Their Browser?', 0, '', 'inherit', 'open', 'open', '', '565-revision-6', '', '', '2010-04-09 12:25:11', '2010-04-09 16:25:11', '', 565, 'http://blog.reybango.com/2010/04/09/565-revision-6/', 0, 'revision', '', 0),
(573, 3, '2010-04-09 12:27:38', '2010-04-09 16:27:38', '<a href="http://blog.reybango.com/wp-content/uploads/2010/04/browsers.jpg"><img src="http://blog.reybango.com/wp-content/uploads/2010/04/browsers.jpg" alt="" title="browsers" width="580" height="126" class="aligncenter size-full wp-image-569" border="0" /></a>\n\nI just <a href="http://ajaxian.com/archives/getting-users-to-upgrade-their-browsers">did a post over on Ajaxian</a> about <a href="http://royal.pingdom.com/2010/04/08/the-modern-browser-wars-how-well-firefox-ie-and-chrome-succeed-in-getting-their-users-to-upgrade/">Pingdom''s recent analysis</a> of how frequently users upgrade their browsers. It''s a very conflicting topic for me which is why I chose to discuss it here.\n\nFrom the report, it shows that Google''s Chrome has by far the fastest upgrade time of all the browsers, generally converting users within a month of a new release. This is primarily due to the browser''s use of automatic updating which has won accolades from many people in the development community who tend to cite IE6 still breathing as a great reason for having automatic updates.\n\nThis approach has both its merits and drawbacks. The obvious positive is that a user will receive important updates immediately ensuring that they will theoretically have a safer and more stable experience. The downside is that an update could actually mess up the browser (or computer) altogether as has happened on many occasions with antivirus programs. In addition, users no longer control the experience. Having worked at Mozilla, I know that they feel strongly that the user should have the ultimate choice of what goes on their computer. And I see the same thing now at Microsoft (where I''m now employed) and even Apple, where force-fed updates aren''t part of the process. They give users and companies the flexibility to decide when upgrading is right for them which I feel is <strong>extremely</strong> important. Obviously, the downside of the latter approach is that users are less inclined to actually upgrade, thus placing us into a situation where the 10-year old IE6 is still haunting us.\n\nThis is a tough situation because while users should have control, when they don''t upgrade it stifles developer abilities to push the web forward and can put them at risk. I''m sure that the browser makers would be interested in your thoughts. What''s your take on this?\n\n\n\n', 'Should a User Have a Choice When to Upgrade Their Browser?', 0, '', 'inherit', 'open', 'open', '', '565-revision-7', '', '', '2010-04-09 12:27:38', '2010-04-09 16:27:38', '', 565, 'http://blog.reybango.com/2010/04/09/565-revision-7/', 0, 'revision', '', 0),
(574, 3, '2010-04-09 12:28:15', '2010-04-09 16:28:15', '<a href="http://blog.reybango.com/wp-content/uploads/2010/04/browsers.jpg"><img src="http://blog.reybango.com/wp-content/uploads/2010/04/browsers.jpg" alt="" title="browsers" width="580" height="126" class="aligncenter size-full wp-image-569" border="0" /></a>\r\n\r\nI just <a href="http://ajaxian.com/archives/getting-users-to-upgrade-their-browsers">did a post over on Ajaxian</a> about <a href="http://royal.pingdom.com/2010/04/08/the-modern-browser-wars-how-well-firefox-ie-and-chrome-succeed-in-getting-their-users-to-upgrade/">Pingdom''s recent analysis</a> of how frequently users upgrade their browsers. It''s a very conflicting topic for me which is why I chose to discuss it here.\r\n\r\nFrom the report, it shows that Google''s Chrome has by far the fastest upgrade time of all the browsers, generally converting users within a month of a new release. This is primarily due to the browser''s use of automatic updating which has won accolades from many people in the development community who tend to cite IE6 still breathing as a great reason for having automatic updates.\r\n\r\nThis approach has both its merits and drawbacks. The obvious positive is that a user will receive important updates immediately ensuring that they will theoretically have a safer and more stable experience. The downside is that an update could actually mess up the browser (or computer) altogether as has happened on many occasions with antivirus programs. In addition, users no longer control the experience. Having worked at Mozilla, I know that they feel strongly that the user should have the ultimate choice of what goes on their computer. And I see the same thing now at Microsoft (where I''m now employed) and even Apple, where force-fed updates aren''t part of the process. They give users and companies the flexibility to decide when upgrading is right for them which I feel is <strong>extremely</strong> important. Obviously, the downside of the latter approach is that users are less inclined to actually upgrade, thus placing us into a situation where the 10-year old IE6 is still haunting us.\r\n\r\nThis is a tough situation because while users should have control, when they don''t upgrade it stifles developer abilities to push the web forward and can put these users at risk. I''m sure that the browser makers would be interested in your thoughts. What''s your take on this?\r\n\r\n\r\n\r\n', 'Should a User Have a Choice When to Upgrade Their Browser?', 0, '', 'inherit', 'open', 'open', '', '565-revision-8', '', '', '2010-04-09 12:28:15', '2010-04-09 16:28:15', '', 565, 'http://blog.reybango.com/2010/04/09/565-revision-8/', 0, 'revision', '', 0),
(575, 3, '2010-04-09 12:28:20', '2010-04-09 16:28:20', '<a href="http://blog.reybango.com/wp-content/uploads/2010/04/browsers.jpg"><img src="http://blog.reybango.com/wp-content/uploads/2010/04/browsers.jpg" alt="" title="browsers" width="580" height="126" class="aligncenter size-full wp-image-569" border="0" /></a>\r\n\r\nI just <a href="http://ajaxian.com/archives/getting-users-to-upgrade-their-browsers">did a post over on Ajaxian</a> about <a href="http://royal.pingdom.com/2010/04/08/the-modern-browser-wars-how-well-firefox-ie-and-chrome-succeed-in-getting-their-users-to-upgrade/">Pingdom''s recent analysis</a> of how frequently users upgrade their browsers. It''s a very conflicting topic for me which is why I chose to discuss it here.\r\n\r\nFrom the report, it shows that Google''s Chrome has by far the fastest upgrade time of all the browsers, generally converting users within a month of a new release. This is primarily due to the browser''s use of automatic updating which has won accolades from many people in the development community who tend to cite IE6 still breathing as a great reason for having automatic updates.\r\n\r\nThis approach has both its merits and drawbacks. The obvious positive is that a user will receive important updates immediately ensuring that they will theoretically have a safer and more stable experience. The downside is that an update could actually mess up the browser (or computer) altogether as has happened on many occasions with antivirus programs. In addition, users no longer control the experience. Having worked at Mozilla, I know that they feel strongly that the user should have the ultimate choice of what goes on their computer. And I see the same thing now at Microsoft (where I''m now employed) and even Apple, where force-fed updates aren''t part of the process. They give users and companies the flexibility to decide when upgrading is right for them which I feel is <strong>extremely</strong> important. Obviously, the downside of the latter approach is that users are less inclined to actually upgrade, thus placing us into a situation where the 10-year old IE6 is still haunting us.\r\n\r\nThis is a tough situation because while users should have control, when they don''t upgrade it stifles developer abilities to push the web forward and can put these users at risk. I''m sure that the browser makers would be interested in your thoughts. What''s your take on this?\r\n\r\n\r\n\r\n', 'Should a User Have a Choice When to Upgrade Their Browser?', 0, '', 'inherit', 'open', 'open', '', '565-revision-9', '', '', '2010-04-09 12:28:20', '2010-04-09 16:28:20', '', 565, 'http://blog.reybango.com/2010/04/09/565-revision-9/', 0, 'revision', '', 0),
(576, 3, '2010-04-09 12:28:51', '2010-04-09 16:28:51', '<a href="http://blog.reybango.com/wp-content/uploads/2010/04/browsers.jpg"><img src="http://blog.reybango.com/wp-content/uploads/2010/04/browsers.jpg" alt="" title="browsers" width="580" height="126" class="aligncenter size-full wp-image-569" border="0" /></a>\r\n\r\nI just <a href="http://ajaxian.com/archives/getting-users-to-upgrade-their-browsers">did a post over on Ajaxian</a> about <a href="http://royal.pingdom.com/2010/04/08/the-modern-browser-wars-how-well-firefox-ie-and-chrome-succeed-in-getting-their-users-to-upgrade/">Pingdom''s recent analysis</a> of how frequently users upgrade their browsers. It''s a very conflicting topic for me which is why I chose to discuss it here.\r\n\r\nFrom the report, it shows that Google''s Chrome has by far the fastest upgrade time of all the browsers, generally converting users within a month of a new release. This is primarily due to the browser''s use of automatic updating which has won accolades from many people in the development community who tend to cite IE6 still breathing as a great reason for having automatic updates.\r\n\r\nThis approach has both its merits and drawbacks. The obvious positive is that a user will receive important updates immediately ensuring that they will theoretically have a safer and more stable experience. The downside is that an update could actually mess up the browser (or computer) altogether as has happened on many occasions with antivirus programs. In addition, users no longer control the experience. Having worked at Mozilla, I know that they feel strongly that the user should have the ultimate choice of what goes on their computer. And I see the same thing now at Microsoft (where I''m now employed) and even Apple, where force-fed updates aren''t part of the process. They give users and companies the flexibility to decide when upgrading is right for them which I feel is <strong>extremely</strong> important. Obviously, the downside of the latter approach is that users are less inclined to actually upgrade, thus placing us into a situation where the 10-year old IE6 is still haunting us.\r\n\r\nThis is a tough situation because while users should have control, when they don''t upgrade it stifles developer abilities to push the web forward and can put these users at risk. I''m sure that the browser makers would be interested in your thoughts. What''s your take on this?\r\n\r\n\r\n\r\n', 'Should a User Have a Choice When to Upgrade Their Browser?', 0, '', 'inherit', 'open', 'open', '', '565-revision-10', '', '', '2010-04-09 12:28:51', '2010-04-09 16:28:51', '', 565, 'http://blog.reybango.com/2010/04/09/565-revision-10/', 0, 'revision', '', 0),
(577, 3, '2010-04-14 21:50:44', '2010-04-15 01:50:44', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll of this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the whole line of text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\r\n\r\n<ol>\r\n	<li>Using Chrome or Safari, open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\r\n	<li>Using your mouse select the <strong>whole</strong> line of the text and release. An alert box should appear.</li>\r\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\r\n</ol>\r\n\r\nIn both Chrome and Safari, you should see that a second alert box is displayed containing the selected text. This doesn''t happen in Firefox or IE. It also won''t happen if you only select part of the text. It has to be the <strong>whole</strong> line.\r\n\r\nAfter quite a bit of debugging, running it by <a href="http://ejohn.org/">John Resig</a> & <a href="http://higginsforpresident.net/">Pete Higgins</a> and running short on time, I decided to create a work-around which resolved the issue. By using a closure to keep a persistent copy of the last selected text, I can compare that value to the newly selected text and if it matches the persistent copy, I can ignore it. It''s a very basic way to filter out the second call being done by Chrome & Safari:\r\n\r\n[code lang="js"]\r\ngetSelectedText = (function() {\r\n	var selected = &quot;&quot;;\r\n	\r\n	return (function() {\r\n		var currSelection = findSelected();\r\n		if (selected != currSelection) {\r\n			selected = currSelection;\r\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n				alert( selected );\r\n			}\r\n		}\r\n	})\r\n})();\r\n[/code]\r\n\r\nHere''s the working <a href="http://reybango.com/ms/test-closure.html">demo</a>.\r\n\r\nNow I acknowledge that this is not the ideal solution and I need to determine what the browser inconsistency is here. It seems like it might be Webkit-related since it only affects Chrome & Safari so I''ll have to dig further into that. For now, though, the closure works and since I don''t do a circular reference between any DOM or JS objects, it looks like memory leaks shouldn''t be an issue. ', 'My Solution to Google Chrome & Safari Double Firing the mouseup Event when Selecting Text', 0, '', 'publish', 'open', 'open', '', 'my-solution-to-google-chrome-safari-double-firing-the-mouseup-event-when-selecting-text', '', '', '2010-04-14 21:50:44', '2010-04-15 01:50:44', '', 0, 'http://blog.reybango.com/?p=577', 0, 'post', '', 3),
(578, 3, '2010-04-14 20:51:14', '2010-04-15 00:51:14', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to attach a handler to the "mouseup" event and grab the selection data. This was plain ''ole JS and thankfully Dean Edwards and  had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great.', 'Solution to an Issue with Google Chrome & Safari''s mouseup Event', 0, '', 'inherit', 'open', 'open', '', '577-revision', '', '', '2010-04-14 20:51:14', '2010-04-15 00:51:14', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision/', 0, 'revision', '', 0),
(579, 3, '2010-04-14 21:02:19', '2010-04-15 01:02:19', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to attach a handler to the "mouseup" event and grab the selection data. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And David Walsh has a nice post on doing this same type of functionality ', 'Solution to an Issue with Google Chrome & Safari''s mouseup Event', 0, '', 'inherit', 'open', 'open', '', '577-revision-2', '', '', '2010-04-14 21:02:19', '2010-04-15 01:02:19', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-2/', 0, 'revision', '', 0),
(580, 3, '2010-04-14 21:02:42', '2010-04-15 01:02:42', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to attach a handler to the "mouseup" event and grab the selection data. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And David Walsh has a nice post on doing this same type of functionality in MooTools & jQuery. ', 'Solution to an Issue with Google Chrome & Safari''s mouseup Event', 0, '', 'inherit', 'open', 'open', '', '577-revision-3', '', '', '2010-04-14 21:02:42', '2010-04-15 01:02:42', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-3/', 0, 'revision', '', 0),
(581, 3, '2010-04-14 21:03:48', '2010-04-15 01:03:48', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to attach a handler to the "mouseup" event and grab the selection data. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And David Walsh has a nice post on doing this same type of functionality in MooTools & jQuery so I was able to leverage some of that code, specifically the ', 'Solution to an Issue with Google Chrome & Safari''s mouseup Event', 0, '', 'inherit', 'open', 'open', '', '577-revision-4', '', '', '2010-04-14 21:03:48', '2010-04-15 01:03:48', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-4/', 0, 'revision', '', 0),
(582, 3, '2010-04-14 21:09:44', '2010-04-15 01:09:44', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to attach a handler to the "mouseup" event and grab the selection data. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And David Walsh has a nice post on similar functionality using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]', 'Solution to an Issue with Google Chrome & Safari''s mouseup Event', 0, '', 'inherit', 'open', 'open', '', '577-revision-5', '', '', '2010-04-14 21:09:44', '2010-04-15 01:09:44', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-5/', 0, 'revision', '', 0),
(583, 3, '2010-04-14 21:16:16', '2010-04-15 01:16:16', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\n\n[code lang="js"]\nfunction findSelected() {\n	if(window.getSelection) { \n		return window.getSelection(); \n	}\n	else if(document.getSelection) { \n		return document.getSelection(); }\n	else {\n		var selection = document.selection &amp;&amp; document.selection.createRange();\n		if(selection.text) { \n			return selection.text; }\n		return false;\n	}\n	return false;\n}\n\nfunction getSelectedText() {\n	var selected = findSelected();\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\n		alert( selected );\n	}\n}\n[/code]\n\nFrom there it was just a matter of actually binding the method to "mouseup":\n\n[code lang="js"]\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\n[/code]\n\nAll \n', 'Solution to an Issue with Google Chrome & Safari''s mouseup Event', 0, '', 'inherit', 'open', 'open', '', '577-revision-6', '', '', '2010-04-14 21:16:16', '2010-04-15 01:16:16', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-6/', 0, 'revision', '', 0),
(584, 3, '2010-04-14 21:17:06', '2010-04-15 01:17:06', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue.\r\n', 'Solution to an Issue with Google Chrome & Safari''s mouseup Event', 0, '', 'inherit', 'open', 'open', '', '577-revision-7', '', '', '2010-04-14 21:17:06', '2010-04-15 01:17:06', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-7/', 0, 'revision', '', 0),
(585, 3, '2010-04-14 21:17:11', '2010-04-15 01:17:11', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue.\r\n', 'Solution to an Issue with Google Chrome & Safari''s mouseup Event', 0, '', 'inherit', 'open', 'open', '', '577-revision-8', '', '', '2010-04-14 21:17:11', '2010-04-15 01:17:11', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-8/', 0, 'revision', '', 0),
(586, 3, '2010-04-14 21:25:31', '2010-04-15 01:25:31', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\r\n\r\n<ol>\r\n	<li>Open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\r\n	<li>Using your mouse select any part of the text and release. An alert box should appear.</li>\r\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\r\n</ol>\r\n\r\nIn both Chrome and Safari, you should see that a second alert box is displayed. This doesn''t happen in Firefox or IE.\r\n\r\nAfter quite a bit of debugging, running it by John Resig & Pete Higgins and running short on time, I decided to create a work-around which has resolved the issue. By using a closure to keep a persistent copy of the last selected text and comparing it to the next method call''s selected text, I''m able to basically filter out the secondary call being done in Chrome & Safari:\r\n\r\n[code lang="js"]\r\ngetSelectedText = (function() {\r\n	var selected = &quot;&quot;;\r\n	\r\n	return (function() {\r\n		var currSelection = findSelected();\r\n		if (selected != currSelection) {\r\n			selected = currSelection;\r\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n				alert( selected );\r\n			}\r\n		}\r\n	})\r\n})();\r\n[/code]\r\n', 'Solution to an Issue with Google Chrome & Safari''s mouseup Event', 0, '', 'inherit', 'open', 'open', '', '577-revision-9', '', '', '2010-04-14 21:25:31', '2010-04-15 01:25:31', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-9/', 0, 'revision', '', 0),
(587, 3, '2010-04-14 21:25:40', '2010-04-15 01:25:40', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\r\n\r\n<ol>\r\n	<li>Open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\r\n	<li>Using your mouse select any part of the text and release. An alert box should appear.</li>\r\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\r\n</ol>\r\n\r\nIn both Chrome and Safari, you should see that a second alert box is displayed. This doesn''t happen in Firefox or IE.\r\n\r\nAfter quite a bit of debugging, running it by John Resig & Pete Higgins and running short on time, I decided to create a work-around which has resolved the issue. By using a closure to keep a persistent copy of the last selected text and comparing it to the next method call''s selected text, I''m able to basically filter out the secondary call being done in Chrome & Safari:\r\n\r\n[code lang="js"]\r\ngetSelectedText = (function() {\r\n	var selected = &quot;&quot;;\r\n	\r\n	return (function() {\r\n		var currSelection = findSelected();\r\n		if (selected != currSelection) {\r\n			selected = currSelection;\r\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n				alert( selected );\r\n			}\r\n		}\r\n	})\r\n})();\r\n[/code]\r\n', 'Solution to an Issue with Google Chrome & Safari''s mouseup Event', 0, '', 'inherit', 'open', 'open', '', '577-revision-10', '', '', '2010-04-14 21:25:40', '2010-04-15 01:25:40', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-10/', 0, 'revision', '', 0),
(588, 3, '2010-04-14 21:32:22', '2010-04-15 01:32:22', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\r\n\r\n<ol>\r\n	<li>Open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\r\n	<li>Using your mouse select any part of the text and release. An alert box should appear.</li>\r\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\r\n</ol>\r\n\r\nIn both Chrome and Safari, you should see that a second alert box is displayed. This doesn''t happen in Firefox or IE.\r\n\r\nAfter quite a bit of debugging, running it by John Resig & Pete Higgins and running short on time, I decided to create a work-around which resolved the issue. By using a closure to keep a persistent copy of the last selected text, I can compare that value to the newly selected text and if it matches the persistent copy, I can ignore it. It''s a very basic way to filter out the second call being done by Chrome & Safari:\r\n\r\n[code lang="js"]\r\ngetSelectedText = (function() {\r\n	var selected = &quot;&quot;;\r\n	\r\n	return (function() {\r\n		var currSelection = findSelected();\r\n		if (selected != currSelection) {\r\n			selected = currSelection;\r\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n				alert( selected );\r\n			}\r\n		}\r\n	})\r\n})();\r\n[/code]\r\n\r\nNow I acknowledge that this is not the ideal solution and I need to determine what the browser inconsistency is here. It seems like it might be Webkit-related since it only affects Chrome & Safari so I''ll have to dig further into that. For now, though, the closure works and since I don''t a circular reference between any DOM or JS objects, it looks like memory leaks shouldn''t be an issue. ', 'Solution to an Issue with Google Chrome & Safari''s mouseup Event', 0, '', 'inherit', 'open', 'open', '', '577-revision-11', '', '', '2010-04-14 21:32:22', '2010-04-15 01:32:22', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-11/', 0, 'revision', '', 0);
INSERT INTO `wp_dyxkdh_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_category`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES
(589, 3, '2010-04-14 21:42:05', '2010-04-15 01:42:05', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\n\n[code lang="js"]\nfunction findSelected() {\n	if(window.getSelection) { \n		return window.getSelection(); \n	}\n	else if(document.getSelection) { \n		return document.getSelection(); }\n	else {\n		var selection = document.selection &amp;&amp; document.selection.createRange();\n		if(selection.text) { \n			return selection.text; }\n		return false;\n	}\n	return false;\n}\n\nfunction getSelectedText() {\n	var selected = findSelected();\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\n		alert( selected );\n	}\n}\n[/code]\n\nFrom there it was just a matter of actually binding the method to "mouseup":\n\n[code lang="js"]\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\n[/code]\n\nAll this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the whole line of text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\n\n<ol>\n	<li>Open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\n	<li>Using your mouse select the whole line of the text and release. An alert box should appear.</li>\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\n</ol>\n\nIn both Chrome and Safari, you should see that a second alert box is displayed containin. This doesn''t happen in Firefox or IE. It also won''t happen if you only select part of the text. It has to be the whole line.\n\nAfter quite a bit of debugging, running it by John Resig & Pete Higgins and running short on time, I decided to create a work-around which resolved the issue. By using a closure to keep a persistent copy of the last selected text, I can compare that value to the newly selected text and if it matches the persistent copy, I can ignore it. It''s a very basic way to filter out the second call being done by Chrome & Safari:\n\n[code lang="js"]\ngetSelectedText = (function() {\n	var selected = &quot;&quot;;\n	\n	return (function() {\n		var currSelection = findSelected();\n		if (selected != currSelection) {\n			selected = currSelection;\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\n				alert( selected );\n			}\n		}\n	})\n})();\n[/code]\n\nHere''s the working <a href="http://reybango.com/ms/test-closure.html">demo</a>.\n\nNow I acknowledge that this is not the ideal solution and I need to determine what the browser inconsistency is here. It seems like it might be Webkit-related since it only affects Chrome & Safari so I''ll have to dig further into that. For now, though, the closure works and since I don''t a circular reference between any DOM or JS objects, it looks like memory leaks shouldn''t be an issue. ', 'Solution to an Issue with Google Chrome & Safari''s mouseup Event', 0, '', 'inherit', 'open', 'open', '', '577-revision-12', '', '', '2010-04-14 21:42:05', '2010-04-15 01:42:05', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-12/', 0, 'revision', '', 0),
(590, 3, '2010-04-14 21:43:27', '2010-04-15 01:43:27', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\n\n[code lang="js"]\nfunction findSelected() {\n	if(window.getSelection) { \n		return window.getSelection(); \n	}\n	else if(document.getSelection) { \n		return document.getSelection(); }\n	else {\n		var selection = document.selection &amp;&amp; document.selection.createRange();\n		if(selection.text) { \n			return selection.text; }\n		return false;\n	}\n	return false;\n}\n\nfunction getSelectedText() {\n	var selected = findSelected();\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\n		alert( selected );\n	}\n}\n[/code]\n\nFrom there it was just a matter of actually binding the method to "mouseup":\n\n[code lang="js"]\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\n[/code]\n\nAll this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the whole line of text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\n\n<ol>\n	<li>Open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\n	<li>Using your mouse select the whole line of the text and release. An alert box should appear.</li>\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\n</ol>\n\nIn both Chrome and Safari, you should see that a second alert box is displayed containing the selected text. This doesn''t happen in Firefox or IE. It also won''t happen if you only select part of the text. It has to be the <strong>whole</strong> line.\n\nAfter quite a bit of debugging, running it by John Resig & Pete Higgins and running short on time, I decided to create a work-around which resolved the issue. By using a closure to keep a persistent copy of the last selected text, I can compare that value to the newly selected text and if it matches the persistent copy, I can ignore it. It''s a very basic way to filter out the second call being done by Chrome & Safari:\n\n[code lang="js"]\ngetSelectedText = (function() {\n	var selected = &quot;&quot;;\n	\n	return (function() {\n		var currSelection = findSelected();\n		if (selected != currSelection) {\n			selected = currSelection;\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\n				alert( selected );\n			}\n		}\n	})\n})();\n[/code]\n\nHere''s the working <a href="http://reybango.com/ms/test-closure.html">demo</a>.\n\nNow I acknowledge that this is not the ideal solution and I need to determine what the browser inconsistency is here. It seems like it might be Webkit-related since it only affects Chrome & Safari so I''ll have to dig further into that. For now, though, the closure works and since I don''t a circular reference between any DOM or JS objects, it looks like memory leaks shouldn''t be an issue. ', 'My Solution to Google Chrome & Safari Double Firing the mouseup Event', 0, '', 'inherit', 'open', 'open', '', '577-revision-13', '', '', '2010-04-14 21:43:27', '2010-04-15 01:43:27', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-13/', 0, 'revision', '', 0),
(591, 3, '2010-04-14 21:43:43', '2010-04-15 01:43:43', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the whole line of text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\r\n\r\n<ol>\r\n	<li>Open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\r\n	<li>Using your mouse select the whole line of the text and release. An alert box should appear.</li>\r\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\r\n</ol>\r\n\r\nIn both Chrome and Safari, you should see that a second alert box is displayed containing the selected text. This doesn''t happen in Firefox or IE. It also won''t happen if you only select part of the text. It has to be the <strong>whole</strong> line.\r\n\r\nAfter quite a bit of debugging, running it by John Resig & Pete Higgins and running short on time, I decided to create a work-around which resolved the issue. By using a closure to keep a persistent copy of the last selected text, I can compare that value to the newly selected text and if it matches the persistent copy, I can ignore it. It''s a very basic way to filter out the second call being done by Chrome & Safari:\r\n\r\n[code lang="js"]\r\ngetSelectedText = (function() {\r\n	var selected = &quot;&quot;;\r\n	\r\n	return (function() {\r\n		var currSelection = findSelected();\r\n		if (selected != currSelection) {\r\n			selected = currSelection;\r\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n				alert( selected );\r\n			}\r\n		}\r\n	})\r\n})();\r\n[/code]\r\n\r\nHere''s the working <a href="http://reybango.com/ms/test-closure.html">demo</a>.\r\n\r\nNow I acknowledge that this is not the ideal solution and I need to determine what the browser inconsistency is here. It seems like it might be Webkit-related since it only affects Chrome & Safari so I''ll have to dig further into that. For now, though, the closure works and since I don''t a circular reference between any DOM or JS objects, it looks like memory leaks shouldn''t be an issue. ', 'My Solution to Google Chrome & Safari Double Firing the mouseup Event when Selecting Text', 0, '', 'inherit', 'open', 'open', '', '577-revision-14', '', '', '2010-04-14 21:43:43', '2010-04-15 01:43:43', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-14/', 0, 'revision', '', 0),
(592, 3, '2010-04-14 21:43:49', '2010-04-15 01:43:49', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the whole line of text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\r\n\r\n<ol>\r\n	<li>Open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\r\n	<li>Using your mouse select the whole line of the text and release. An alert box should appear.</li>\r\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\r\n</ol>\r\n\r\nIn both Chrome and Safari, you should see that a second alert box is displayed containing the selected text. This doesn''t happen in Firefox or IE. It also won''t happen if you only select part of the text. It has to be the <strong>whole</strong> line.\r\n\r\nAfter quite a bit of debugging, running it by John Resig & Pete Higgins and running short on time, I decided to create a work-around which resolved the issue. By using a closure to keep a persistent copy of the last selected text, I can compare that value to the newly selected text and if it matches the persistent copy, I can ignore it. It''s a very basic way to filter out the second call being done by Chrome & Safari:\r\n\r\n[code lang="js"]\r\ngetSelectedText = (function() {\r\n	var selected = &quot;&quot;;\r\n	\r\n	return (function() {\r\n		var currSelection = findSelected();\r\n		if (selected != currSelection) {\r\n			selected = currSelection;\r\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n				alert( selected );\r\n			}\r\n		}\r\n	})\r\n})();\r\n[/code]\r\n\r\nHere''s the working <a href="http://reybango.com/ms/test-closure.html">demo</a>.\r\n\r\nNow I acknowledge that this is not the ideal solution and I need to determine what the browser inconsistency is here. It seems like it might be Webkit-related since it only affects Chrome & Safari so I''ll have to dig further into that. For now, though, the closure works and since I don''t a circular reference between any DOM or JS objects, it looks like memory leaks shouldn''t be an issue. ', 'My Solution to Google Chrome & Safari Double Firing the mouseup Event when Selecting Text', 0, '', 'inherit', 'open', 'open', '', '577-revision-15', '', '', '2010-04-14 21:43:49', '2010-04-15 01:43:49', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-15/', 0, 'revision', '', 0),
(593, 3, '2010-04-14 21:45:03', '2010-04-15 01:45:03', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll of this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the whole line of text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\r\n\r\n<ol>\r\n	<li>Open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\r\n	<li>Using your mouse select the whole line of the text and release. An alert box should appear.</li>\r\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\r\n</ol>\r\n\r\nIn both Chrome and Safari, you should see that a second alert box is displayed containing the selected text. This doesn''t happen in Firefox or IE. It also won''t happen if you only select part of the text. It has to be the <strong>whole</strong> line.\r\n\r\nAfter quite a bit of debugging, running it by John Resig & Pete Higgins and running short on time, I decided to create a work-around which resolved the issue. By using a closure to keep a persistent copy of the last selected text, I can compare that value to the newly selected text and if it matches the persistent copy, I can ignore it. It''s a very basic way to filter out the second call being done by Chrome & Safari:\r\n\r\n[code lang="js"]\r\ngetSelectedText = (function() {\r\n	var selected = &quot;&quot;;\r\n	\r\n	return (function() {\r\n		var currSelection = findSelected();\r\n		if (selected != currSelection) {\r\n			selected = currSelection;\r\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n				alert( selected );\r\n			}\r\n		}\r\n	})\r\n})();\r\n[/code]\r\n\r\nHere''s the working <a href="http://reybango.com/ms/test-closure.html">demo</a>.\r\n\r\nNow I acknowledge that this is not the ideal solution and I need to determine what the browser inconsistency is here. It seems like it might be Webkit-related since it only affects Chrome & Safari so I''ll have to dig further into that. For now, though, the closure works and since I don''t a circular reference between any DOM or JS objects, it looks like memory leaks shouldn''t be an issue. ', 'My Solution to Google Chrome & Safari Double Firing the mouseup Event when Selecting Text', 0, '', 'inherit', 'open', 'open', '', '577-revision-16', '', '', '2010-04-14 21:45:03', '2010-04-15 01:45:03', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-16/', 0, 'revision', '', 0),
(594, 3, '2010-04-14 21:45:11', '2010-04-15 01:45:11', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll of this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the whole line of text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\r\n\r\n<ol>\r\n	<li>Open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\r\n	<li>Using your mouse select the whole line of the text and release. An alert box should appear.</li>\r\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\r\n</ol>\r\n\r\nIn both Chrome and Safari, you should see that a second alert box is displayed containing the selected text. This doesn''t happen in Firefox or IE. It also won''t happen if you only select part of the text. It has to be the <strong>whole</strong> line.\r\n\r\nAfter quite a bit of debugging, running it by John Resig & Pete Higgins and running short on time, I decided to create a work-around which resolved the issue. By using a closure to keep a persistent copy of the last selected text, I can compare that value to the newly selected text and if it matches the persistent copy, I can ignore it. It''s a very basic way to filter out the second call being done by Chrome & Safari:\r\n\r\n[code lang="js"]\r\ngetSelectedText = (function() {\r\n	var selected = &quot;&quot;;\r\n	\r\n	return (function() {\r\n		var currSelection = findSelected();\r\n		if (selected != currSelection) {\r\n			selected = currSelection;\r\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n				alert( selected );\r\n			}\r\n		}\r\n	})\r\n})();\r\n[/code]\r\n\r\nHere''s the working <a href="http://reybango.com/ms/test-closure.html">demo</a>.\r\n\r\nNow I acknowledge that this is not the ideal solution and I need to determine what the browser inconsistency is here. It seems like it might be Webkit-related since it only affects Chrome & Safari so I''ll have to dig further into that. For now, though, the closure works and since I don''t a circular reference between any DOM or JS objects, it looks like memory leaks shouldn''t be an issue. ', 'My Solution to Google Chrome & Safari Double Firing the mouseup Event when Selecting Text', 0, '', 'inherit', 'open', 'open', '', '577-revision-17', '', '', '2010-04-14 21:45:11', '2010-04-15 01:45:11', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-17/', 0, 'revision', '', 0),
(595, 3, '2010-04-14 21:46:19', '2010-04-15 01:46:19', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll of this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the whole line of text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\r\n\r\n<ol>\r\n	<li>Using Chrome or Safari, open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\r\n	<li>Using your mouse select the <strong>whole</strong> line of the text and release. An alert box should appear.</li>\r\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\r\n</ol>\r\n\r\nIn both Chrome and Safari, you should see that a second alert box is displayed containing the selected text. This doesn''t happen in Firefox or IE. It also won''t happen if you only select part of the text. It has to be the <strong>whole</strong> line.\r\n\r\nAfter quite a bit of debugging, running it by John Resig & Pete Higgins and running short on time, I decided to create a work-around which resolved the issue. By using a closure to keep a persistent copy of the last selected text, I can compare that value to the newly selected text and if it matches the persistent copy, I can ignore it. It''s a very basic way to filter out the second call being done by Chrome & Safari:\r\n\r\n[code lang="js"]\r\ngetSelectedText = (function() {\r\n	var selected = &quot;&quot;;\r\n	\r\n	return (function() {\r\n		var currSelection = findSelected();\r\n		if (selected != currSelection) {\r\n			selected = currSelection;\r\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n				alert( selected );\r\n			}\r\n		}\r\n	})\r\n})();\r\n[/code]\r\n\r\nHere''s the working <a href="http://reybango.com/ms/test-closure.html">demo</a>.\r\n\r\nNow I acknowledge that this is not the ideal solution and I need to determine what the browser inconsistency is here. It seems like it might be Webkit-related since it only affects Chrome & Safari so I''ll have to dig further into that. For now, though, the closure works and since I don''t a circular reference between any DOM or JS objects, it looks like memory leaks shouldn''t be an issue. ', 'My Solution to Google Chrome & Safari Double Firing the mouseup Event when Selecting Text', 0, '', 'inherit', 'open', 'open', '', '577-revision-18', '', '', '2010-04-14 21:46:19', '2010-04-15 01:46:19', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-18/', 0, 'revision', '', 0),
(596, 3, '2010-04-14 21:46:39', '2010-04-15 01:46:39', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll of this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the whole line of text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\r\n\r\n<ol>\r\n	<li>Using Chrome or Safari, open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\r\n	<li>Using your mouse select the <strong>whole</strong> line of the text and release. An alert box should appear.</li>\r\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\r\n</ol>\r\n\r\nIn both Chrome and Safari, you should see that a second alert box is displayed containing the selected text. This doesn''t happen in Firefox or IE. It also won''t happen if you only select part of the text. It has to be the <strong>whole</strong> line.\r\n\r\nAfter quite a bit of debugging, running it by John Resig & Pete Higgins and running short on time, I decided to create a work-around which resolved the issue. By using a closure to keep a persistent copy of the last selected text, I can compare that value to the newly selected text and if it matches the persistent copy, I can ignore it. It''s a very basic way to filter out the second call being done by Chrome & Safari:\r\n\r\n[code lang="js"]\r\ngetSelectedText = (function() {\r\n	var selected = &quot;&quot;;\r\n	\r\n	return (function() {\r\n		var currSelection = findSelected();\r\n		if (selected != currSelection) {\r\n			selected = currSelection;\r\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n				alert( selected );\r\n			}\r\n		}\r\n	})\r\n})();\r\n[/code]\r\n\r\nHere''s the working <a href="http://reybango.com/ms/test-closure.html">demo</a>.\r\n\r\nNow I acknowledge that this is not the ideal solution and I need to determine what the browser inconsistency is here. It seems like it might be Webkit-related since it only affects Chrome & Safari so I''ll have to dig further into that. For now, though, the closure works and since I don''t a circular reference between any DOM or JS objects, it looks like memory leaks shouldn''t be an issue. ', 'My Solution to Google Chrome & Safari Double Firing the mouseup Event when Selecting Text', 0, '', 'inherit', 'open', 'open', '', '577-revision-19', '', '', '2010-04-14 21:46:39', '2010-04-15 01:46:39', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-19/', 0, 'revision', '', 0),
(597, 3, '2010-04-14 21:47:58', '2010-04-15 01:47:58', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll of this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the whole line of text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\r\n\r\n<ol>\r\n	<li>Using Chrome or Safari, open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\r\n	<li>Using your mouse select the <strong>whole</strong> line of the text and release. An alert box should appear.</li>\r\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\r\n</ol>\r\n\r\nIn both Chrome and Safari, you should see that a second alert box is displayed containing the selected text. This doesn''t happen in Firefox or IE. It also won''t happen if you only select part of the text. It has to be the <strong>whole</strong> line.\r\n\r\nAfter quite a bit of debugging, running it by <a href="http://ejohn.org/">John Resig</a> & <a href="http://higginsforpresident.net/">Pete Higgins</a> and running short on time, I decided to create a work-around which resolved the issue. By using a closure to keep a persistent copy of the last selected text, I can compare that value to the newly selected text and if it matches the persistent copy, I can ignore it. It''s a very basic way to filter out the second call being done by Chrome & Safari:\r\n\r\n[code lang="js"]\r\ngetSelectedText = (function() {\r\n	var selected = &quot;&quot;;\r\n	\r\n	return (function() {\r\n		var currSelection = findSelected();\r\n		if (selected != currSelection) {\r\n			selected = currSelection;\r\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n				alert( selected );\r\n			}\r\n		}\r\n	})\r\n})();\r\n[/code]\r\n\r\nHere''s the working <a href="http://reybango.com/ms/test-closure.html">demo</a>.\r\n\r\nNow I acknowledge that this is not the ideal solution and I need to determine what the browser inconsistency is here. It seems like it might be Webkit-related since it only affects Chrome & Safari so I''ll have to dig further into that. For now, though, the closure works and since I don''t a circular reference between any DOM or JS objects, it looks like memory leaks shouldn''t be an issue. ', 'My Solution to Google Chrome & Safari Double Firing the mouseup Event when Selecting Text', 0, '', 'inherit', 'open', 'open', '', '577-revision-20', '', '', '2010-04-14 21:47:58', '2010-04-15 01:47:58', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-20/', 0, 'revision', '', 0),
(598, 3, '2010-04-14 21:48:04', '2010-04-15 01:48:04', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll of this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the whole line of text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\r\n\r\n<ol>\r\n	<li>Using Chrome or Safari, open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\r\n	<li>Using your mouse select the <strong>whole</strong> line of the text and release. An alert box should appear.</li>\r\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\r\n</ol>\r\n\r\nIn both Chrome and Safari, you should see that a second alert box is displayed containing the selected text. This doesn''t happen in Firefox or IE. It also won''t happen if you only select part of the text. It has to be the <strong>whole</strong> line.\r\n\r\nAfter quite a bit of debugging, running it by <a href="http://ejohn.org/">John Resig</a> & <a href="http://higginsforpresident.net/">Pete Higgins</a> and running short on time, I decided to create a work-around which resolved the issue. By using a closure to keep a persistent copy of the last selected text, I can compare that value to the newly selected text and if it matches the persistent copy, I can ignore it. It''s a very basic way to filter out the second call being done by Chrome & Safari:\r\n\r\n[code lang="js"]\r\ngetSelectedText = (function() {\r\n	var selected = &quot;&quot;;\r\n	\r\n	return (function() {\r\n		var currSelection = findSelected();\r\n		if (selected != currSelection) {\r\n			selected = currSelection;\r\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n				alert( selected );\r\n			}\r\n		}\r\n	})\r\n})();\r\n[/code]\r\n\r\nHere''s the working <a href="http://reybango.com/ms/test-closure.html">demo</a>.\r\n\r\nNow I acknowledge that this is not the ideal solution and I need to determine what the browser inconsistency is here. It seems like it might be Webkit-related since it only affects Chrome & Safari so I''ll have to dig further into that. For now, though, the closure works and since I don''t a circular reference between any DOM or JS objects, it looks like memory leaks shouldn''t be an issue. ', 'My Solution to Google Chrome & Safari Double Firing the mouseup Event when Selecting Text', 0, '', 'inherit', 'open', 'open', '', '577-revision-21', '', '', '2010-04-14 21:48:04', '2010-04-15 01:48:04', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-21/', 0, 'revision', '', 0),
(599, 3, '2010-04-14 21:49:28', '2010-04-15 01:49:28', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll of this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the whole line of text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\r\n\r\n<ol>\r\n	<li>Using Chrome or Safari, open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\r\n	<li>Using your mouse select the <strong>whole</strong> line of the text and release. An alert box should appear.</li>\r\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\r\n</ol>\r\n\r\nIn both Chrome and Safari, you should see that a second alert box is displayed containing the selected text. This doesn''t happen in Firefox or IE. It also won''t happen if you only select part of the text. It has to be the <strong>whole</strong> line.\r\n\r\nAfter quite a bit of debugging, running it by <a href="http://ejohn.org/">John Resig</a> & <a href="http://higginsforpresident.net/">Pete Higgins</a> and running short on time, I decided to create a work-around which resolved the issue. By using a closure to keep a persistent copy of the last selected text, I can compare that value to the newly selected text and if it matches the persistent copy, I can ignore it. It''s a very basic way to filter out the second call being done by Chrome & Safari:\r\n\r\n[code lang="js"]\r\ngetSelectedText = (function() {\r\n	var selected = &quot;&quot;;\r\n	\r\n	return (function() {\r\n		var currSelection = findSelected();\r\n		if (selected != currSelection) {\r\n			selected = currSelection;\r\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n				alert( selected );\r\n			}\r\n		}\r\n	})\r\n})();\r\n[/code]\r\n\r\nHere''s the working <a href="http://reybango.com/ms/test-closure.html">demo</a>.\r\n\r\nNow I acknowledge that this is not the ideal solution and I need to determine what the browser inconsistency is here. It seems like it might be Webkit-related since it only affects Chrome & Safari so I''ll have to dig further into that. For now, though, the closure works and since I don''t do a circular reference between any DOM or JS objects, it looks like memory leaks shouldn''t be an issue. ', 'My Solution to Google Chrome & Safari Double Firing the mouseup Event when Selecting Text', 0, '', 'inherit', 'open', 'open', '', '577-revision-22', '', '', '2010-04-14 21:49:28', '2010-04-15 01:49:28', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-22/', 0, 'revision', '', 0);
INSERT INTO `wp_dyxkdh_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_category`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES
(600, 3, '2010-04-14 21:49:48', '2010-04-15 01:49:48', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll of this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the whole line of text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\r\n\r\n<ol>\r\n	<li>Using Chrome or Safari, open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\r\n	<li>Using your mouse select the <strong>whole</strong> line of the text and release. An alert box should appear.</li>\r\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\r\n</ol>\r\n\r\nIn both Chrome and Safari, you should see that a second alert box is displayed containing the selected text. This doesn''t happen in Firefox or IE. It also won''t happen if you only select part of the text. It has to be the <strong>whole</strong> line.\r\n\r\nAfter quite a bit of debugging, running it by <a href="http://ejohn.org/">John Resig</a> & <a href="http://higginsforpresident.net/">Pete Higgins</a> and running short on time, I decided to create a work-around which resolved the issue. By using a closure to keep a persistent copy of the last selected text, I can compare that value to the newly selected text and if it matches the persistent copy, I can ignore it. It''s a very basic way to filter out the second call being done by Chrome & Safari:\r\n\r\n[code lang="js"]\r\ngetSelectedText = (function() {\r\n	var selected = &quot;&quot;;\r\n	\r\n	return (function() {\r\n		var currSelection = findSelected();\r\n		if (selected != currSelection) {\r\n			selected = currSelection;\r\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n				alert( selected );\r\n			}\r\n		}\r\n	})\r\n})();\r\n[/code]\r\n\r\nHere''s the working <a href="http://reybango.com/ms/test-closure.html">demo</a>.\r\n\r\nNow I acknowledge that this is not the ideal solution and I need to determine what the browser inconsistency is here. It seems like it might be Webkit-related since it only affects Chrome & Safari so I''ll have to dig further into that. For now, though, the closure works and since I don''t do a circular reference between any DOM or JS objects, it looks like memory leaks shouldn''t be an issue. ', 'My Solution to Google Chrome & Safari Double Firing the mouseup Event when Selecting Text', 0, '', 'inherit', 'open', 'open', '', '577-revision-23', '', '', '2010-04-14 21:49:48', '2010-04-15 01:49:48', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-23/', 0, 'revision', '', 0),
(601, 3, '2010-04-14 21:49:54', '2010-04-15 01:49:54', 'I needed to write a quick bit of code today to track when a user selects any text on a page. The key was to bind a method to the "mouseup" event which would grab the selected text and do something with it. This was plain ''ole JS and thankfully <a href="http://dean.edwards.name">Dean Edwards</a> and <a href="http://crisp.tweakblogs.net/">Tino Zijdel</a> had created a nice <a href="http://therealcrisp.xs4all.nl/upload/addEvent_dean.html">cross-browser event handler routine</a> which worked great. And <a href="http://davidwalsh.name/">David Walsh</a> has a <a href="http://davidwalsh.name/text-selection-ajax">nice post on similar functionality</a> using MooTools & jQuery so I was able to leverage some of that code that deals with grabbing the selected text:\r\n\r\n[code lang="js"]\r\nfunction findSelected() {\r\n	if(window.getSelection) { \r\n		return window.getSelection(); \r\n	}\r\n	else if(document.getSelection) { \r\n		return document.getSelection(); }\r\n	else {\r\n		var selection = document.selection &amp;&amp; document.selection.createRange();\r\n		if(selection.text) { \r\n			return selection.text; }\r\n		return false;\r\n	}\r\n	return false;\r\n}\r\n\r\nfunction getSelectedText() {\r\n	var selected = findSelected();\r\n	if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n		alert( selected );\r\n	}\r\n}\r\n[/code]\r\n\r\nFrom there it was just a matter of actually binding the method to "mouseup":\r\n\r\n[code lang="js"]\r\naddEvent(document,&quot;mouseup&quot;,getSelectedText);\r\n[/code]\r\n\r\nAll of this seemed great and it worked perfectly in Internet Explorer and Firefox but when I tried it on Chrome, I found an issue. When I would select the whole line of text an alert box would appear which was expected but when I closed the box and clicked on any whitespace in the viewport, the alert box would reappear! To see it in action, try these steps:\r\n\r\n<ol>\r\n	<li>Using Chrome or Safari, open this page: <a href="http://reybango.com/ms/test.html">http://reybango.com/ms/test.html</a></li>\r\n	<li>Using your mouse select the <strong>whole</strong> line of the text and release. An alert box should appear.</li>\r\n	<li>Close the alert box and click on any whitespace in the viewport.</li>\r\n</ol>\r\n\r\nIn both Chrome and Safari, you should see that a second alert box is displayed containing the selected text. This doesn''t happen in Firefox or IE. It also won''t happen if you only select part of the text. It has to be the <strong>whole</strong> line.\r\n\r\nAfter quite a bit of debugging, running it by <a href="http://ejohn.org/">John Resig</a> & <a href="http://higginsforpresident.net/">Pete Higgins</a> and running short on time, I decided to create a work-around which resolved the issue. By using a closure to keep a persistent copy of the last selected text, I can compare that value to the newly selected text and if it matches the persistent copy, I can ignore it. It''s a very basic way to filter out the second call being done by Chrome & Safari:\r\n\r\n[code lang="js"]\r\ngetSelectedText = (function() {\r\n	var selected = &quot;&quot;;\r\n	\r\n	return (function() {\r\n		var currSelection = findSelected();\r\n		if (selected != currSelection) {\r\n			selected = currSelection;\r\n			if(selected &amp;&amp; (selected = new String(selected).replace(/^\\s+|\\s+$/g,''''))) {\r\n				alert( selected );\r\n			}\r\n		}\r\n	})\r\n})();\r\n[/code]\r\n\r\nHere''s the working <a href="http://reybango.com/ms/test-closure.html">demo</a>.\r\n\r\nNow I acknowledge that this is not the ideal solution and I need to determine what the browser inconsistency is here. It seems like it might be Webkit-related since it only affects Chrome & Safari so I''ll have to dig further into that. For now, though, the closure works and since I don''t do a circular reference between any DOM or JS objects, it looks like memory leaks shouldn''t be an issue. ', 'My Solution to Google Chrome & Safari Double Firing the mouseup Event when Selecting Text', 0, '', 'inherit', 'open', 'open', '', '577-revision-24', '', '', '2010-04-14 21:49:54', '2010-04-15 01:49:54', '', 577, 'http://blog.reybango.com/2010/04/14/577-revision-24/', 0, 'revision', '', 0),
(602, 3, '2010-04-15 11:43:54', '2010-04-15 15:43:54', 'Yesterday, <a href="http://blog.reybango.com/2010/04/14/my-solution-to-google-chrome-safari-double-firing-the-mouseup-event-when-selecting-text/">I wrote about an issue</a> I was having with Google & Safari''s way of handling text selection & the "mouseup" event versus Firefox & IE. I installed Opera 10.51 as well to ensure I tested this on the major browsers and Opera behaved just like Firefox & IE. So this was definitely specific to Chrome & Safari (and I assume Webkit as well).\r\n\r\nIt was an odd scenario but using a closure I found a workaround. This morning I was happy to see a comment from my friend <a href="http://www.iport.it/">Diego Perini</a> with an explanation of what he feels is the cause and also an alternative fix. \r\n\r\n<blockquote>you have setup an on “mouseupâ€ event so it is normal it fires each time you release the mouse button. You are filtering “mouseupâ€ to act only if a selection exists, that’s ok. Unfortunately the difference between the browsers you mention is that in Firefox the selection is cleared as soon as the next “mousedownâ€ while in Safari/Chrome it is cleared on “mouseupâ€ so when fired your filtering will still find a selection active on Safari/Chrome, thus the second alert you see.\r\n\r\nThis is how you can alternatively fix that problem, just add these lines:\r\n\r\n[code lang="js"]\r\nfunction clearSelectedText() {\r\nif (window.getSelection) {\r\nwindow.getSelection().removeAllRanges();\r\n} else if (document.getSelection) {\r\ndocument.getSelection().empty();\r\n} else {\r\nvar selection = document.selection &amp;&amp; document.selection.createRange();\r\nif (selection.text) {\r\nselection.collapse(true);\r\nselection.select();\r\n}\r\n}\r\n}\r\n\r\naddEvent(document, “mousedownâ€, clearSelectedText);\r\n[/code]\r\nHope this help fix it and explain what happens in Safari/Chrome, I wouldn’t mark this as a bug. Have fun.</blockquote>\r\n\r\n<a href="http://reybango.com/ms/test-diego.html">This did in fact fix it</a> and I like it much better because it avoids the need to attach a closure to an event, which could lead to a memory leak. Thanks Diego!\r\n\r\nWhile this does provide a great workaround, it still leaves unanswered the reason that Chrome & Safari (and Webkit??) behave differently than IE, Firefox & Safari. I''m not sure if the expected behavior for "mouseup" & "mousedown" when selected text is present is clearly defined in a specification but this is just another example of how lack of consensus causes web developers to jump through hurdles for no clear reason.\r\n', 'Update to the Google & Safari Double Firing mouseup Issue', 0, '', 'publish', 'open', 'open', '', 'update-to-the-google-safari-double-firing-mouseup-issue', '', '\nhttp://blog.reybango.com/2010/04/14/my-solution-to-google-chrome-safari-double-firing-the-mouseup-event-when-selecting-text/', '2010-04-15 11:43:54', '2010-04-15 15:43:54', '', 0, 'http://blog.reybango.com/?p=602', 0, 'post', '', 3),
(603, 3, '2010-04-15 11:17:22', '2010-04-15 15:17:22', 'Yesterday, I wrote about an issue I was having with Google & Safari''s way of handling text selection & the "mouseup" event versus Firefox & IE. It was an odd scenario but using a closure I found a workaround. This morning I was happy to see a comment from my friend Diego Perini with an explanation of what he feels is the cause and also an alternative fix. \n\n\n\n<blockquote>you have setup an on “mouseupâ€ event so it is normal it fires each time you release the mouse button. You are filtering “mouseupâ€ to act only if a selection exists, that’s ok. Unfortunately the difference between the browsers you mention is that in Firefox the selection is cleared as soon as the next “mousedownâ€ while in Safari/Chrome it is cleared on “mouseupâ€ so when fired your filtering will still find a selection active on Safari/Chrome, thus the second alert you see.\n\nThis is how you can alternatively fix that problem, just add these lines:\n\nfunction clearSelectedText() {\nif (window.getSelection) {\nwindow.getSelection().removeAllRanges();\n} else if (document.getSelection) {\ndocument.getSelection().empty();\n} else {\nvar selection = document.selection && document.selection.createRange();\nif (selection.text) {\nselection.collapse(true);\nselection.select();\n}\n}\n}\n\naddEvent(document, “mousedownâ€, clearSelectedText);\n\nHope this help fix it and explain what happens in Safari/Chrome, I wouldn’t mark this as a bug. Have fun.</blockquote>\n\n', 'Update to the Google & Safari Double Firing mouseup Issue', 0, '', 'inherit', 'open', 'open', '', '602-revision', '', '', '2010-04-15 11:17:22', '2010-04-15 15:17:22', '', 602, 'http://blog.reybango.com/2010/04/15/602-revision/', 0, 'revision', '', 0),
(604, 3, '2010-04-15 11:17:55', '2010-04-15 15:17:55', 'Yesterday, I wrote about an issue I was having with Google & Safari''s way of handling text selection & the "mouseup" event versus Firefox & IE. It was an odd scenario but using a closure I found a workaround. This morning I was happy to see a comment from my friend Diego Perini with an explanation of what he feels is the cause and also an alternative fix. \r\n\r\n\r\n\r\n<blockquote>you have setup an on “mouseupâ€ event so it is normal it fires each time you release the mouse button. You are filtering “mouseupâ€ to act only if a selection exists, that’s ok. Unfortunately the difference between the browsers you mention is that in Firefox the selection is cleared as soon as the next “mousedownâ€ while in Safari/Chrome it is cleared on “mouseupâ€ so when fired your filtering will still find a selection active on Safari/Chrome, thus the second alert you see.\r\n\r\nThis is how you can alternatively fix that problem, just add these lines:</blockquote>\r\n\r\n[code lang="js"]\r\nfunction clearSelectedText() {\r\nif (window.getSelection) {\r\nwindow.getSelection().removeAllRanges();\r\n} else if (document.getSelection) {\r\ndocument.getSelection().empty();\r\n} else {\r\nvar selection = document.selection &amp;&amp; document.selection.createRange();\r\nif (selection.text) {\r\nselection.collapse(true);\r\nselection.select();\r\n}\r\n}\r\n}\r\n\r\naddEvent(document, “mousedownâ€, clearSelectedText);\r\n[/code]\r\n<blockquote>Hope this help fix it and explain what happens in Safari/Chrome, I wouldn’t mark this as a bug. Have fun.</blockquote>\r\n\r\n', 'Update to the Google & Safari Double Firing mouseup Issue', 0, '', 'inherit', 'open', 'open', '', '602-revision-2', '', '', '2010-04-15 11:17:55', '2010-04-15 15:17:55', '', 602, 'http://blog.reybango.com/2010/04/15/602-revision-2/', 0, 'revision', '', 0),
(605, 3, '2010-04-15 11:18:00', '2010-04-15 15:18:00', 'Yesterday, I wrote about an issue I was having with Google & Safari''s way of handling text selection & the "mouseup" event versus Firefox & IE. It was an odd scenario but using a closure I found a workaround. This morning I was happy to see a comment from my friend Diego Perini with an explanation of what he feels is the cause and also an alternative fix. \r\n\r\n\r\n\r\n<blockquote>you have setup an on “mouseupâ€ event so it is normal it fires each time you release the mouse button. You are filtering “mouseupâ€ to act only if a selection exists, that’s ok. Unfortunately the difference between the browsers you mention is that in Firefox the selection is cleared as soon as the next “mousedownâ€ while in Safari/Chrome it is cleared on “mouseupâ€ so when fired your filtering will still find a selection active on Safari/Chrome, thus the second alert you see.\r\n\r\nThis is how you can alternatively fix that problem, just add these lines:</blockquote>\r\n\r\n[code lang="js"]\r\nfunction clearSelectedText() {\r\nif (window.getSelection) {\r\nwindow.getSelection().removeAllRanges();\r\n} else if (document.getSelection) {\r\ndocument.getSelection().empty();\r\n} else {\r\nvar selection = document.selection &amp;&amp; document.selection.createRange();\r\nif (selection.text) {\r\nselection.collapse(true);\r\nselection.select();\r\n}\r\n}\r\n}\r\n\r\naddEvent(document, “mousedownâ€, clearSelectedText);\r\n[/code]\r\n<blockquote>Hope this help fix it and explain what happens in Safari/Chrome, I wouldn’t mark this as a bug. Have fun.</blockquote>\r\n\r\n', 'Update to the Google & Safari Double Firing mouseup Issue', 0, '', 'inherit', 'open', 'open', '', '602-revision-3', '', '', '2010-04-15 11:18:00', '2010-04-15 15:18:00', '', 602, 'http://blog.reybango.com/2010/04/15/602-revision-3/', 0, 'revision', '', 0),
(606, 3, '2010-04-15 11:18:25', '2010-04-15 15:18:25', 'Yesterday, I wrote about an issue I was having with Google & Safari''s way of handling text selection & the "mouseup" event versus Firefox & IE. It was an odd scenario but using a closure I found a workaround. This morning I was happy to see a comment from my friend Diego Perini with an explanation of what he feels is the cause and also an alternative fix. \r\n\r\n\r\n\r\n<blockquote>you have setup an on “mouseupâ€ event so it is normal it fires each time you release the mouse button. You are filtering “mouseupâ€ to act only if a selection exists, that’s ok. Unfortunately the difference between the browsers you mention is that in Firefox the selection is cleared as soon as the next “mousedownâ€ while in Safari/Chrome it is cleared on “mouseupâ€ so when fired your filtering will still find a selection active on Safari/Chrome, thus the second alert you see.\r\n\r\nThis is how you can alternatively fix that problem, just add these lines:\r\n\r\n[code lang="js"]\r\nfunction clearSelectedText() {\r\nif (window.getSelection) {\r\nwindow.getSelection().removeAllRanges();\r\n} else if (document.getSelection) {\r\ndocument.getSelection().empty();\r\n} else {\r\nvar selection = document.selection &amp;&amp; document.selection.createRange();\r\nif (selection.text) {\r\nselection.collapse(true);\r\nselection.select();\r\n}\r\n}\r\n}\r\n\r\naddEvent(document, “mousedownâ€, clearSelectedText);\r\n[/code]\r\nHope this help fix it and explain what happens in Safari/Chrome, I wouldn’t mark this as a bug. Have fun.</blockquote>\r\n\r\n', 'Update to the Google & Safari Double Firing mouseup Issue', 0, '', 'inherit', 'open', 'open', '', '602-revision-4', '', '', '2010-04-15 11:18:25', '2010-04-15 15:18:25', '', 602, 'http://blog.reybango.com/2010/04/15/602-revision-4/', 0, 'revision', '', 0),
(607, 3, '2010-04-15 11:18:30', '2010-04-15 15:18:30', 'Yesterday, I wrote about an issue I was having with Google & Safari''s way of handling text selection & the "mouseup" event versus Firefox & IE. It was an odd scenario but using a closure I found a workaround. This morning I was happy to see a comment from my friend Diego Perini with an explanation of what he feels is the cause and also an alternative fix. \r\n\r\n\r\n\r\n<blockquote>you have setup an on “mouseupâ€ event so it is normal it fires each time you release the mouse button. You are filtering “mouseupâ€ to act only if a selection exists, that’s ok. Unfortunately the difference between the browsers you mention is that in Firefox the selection is cleared as soon as the next “mousedownâ€ while in Safari/Chrome it is cleared on “mouseupâ€ so when fired your filtering will still find a selection active on Safari/Chrome, thus the second alert you see.\r\n\r\nThis is how you can alternatively fix that problem, just add these lines:\r\n\r\n[code lang="js"]\r\nfunction clearSelectedText() {\r\nif (window.getSelection) {\r\nwindow.getSelection().removeAllRanges();\r\n} else if (document.getSelection) {\r\ndocument.getSelection().empty();\r\n} else {\r\nvar selection = document.selection &amp;&amp; document.selection.createRange();\r\nif (selection.text) {\r\nselection.collapse(true);\r\nselection.select();\r\n}\r\n}\r\n}\r\n\r\naddEvent(document, “mousedownâ€, clearSelectedText);\r\n[/code]\r\nHope this help fix it and explain what happens in Safari/Chrome, I wouldn’t mark this as a bug. Have fun.</blockquote>\r\n\r\n', 'Update to the Google & Safari Double Firing mouseup Issue', 0, '', 'inherit', 'open', 'open', '', '602-revision-5', '', '', '2010-04-15 11:18:30', '2010-04-15 15:18:30', '', 602, 'http://blog.reybango.com/2010/04/15/602-revision-5/', 0, 'revision', '', 0),
(608, 3, '2010-04-15 06:26:20', '2010-04-15 10:26:20', 'Yesterday, I wrote about an issue I was having with Google & Safari''s way of handling text selection & the "mouseup" event versus Firefox & IE. It was an odd scenario but using a closure I found a workaround. This morning I was happy to see a comment from my friend Diego Perini with an explanation of what he feels is the cause and also an alternative fix. \r\n\r\n\r\n\r\n<blockquote>you have setup an on “mouseupâ€ event so it is normal it fires each time you release the mouse button. You are filtering “mouseupâ€ to act only if a selection exists, that’s ok. Unfortunately the difference between the browsers you mention is that in Firefox the selection is cleared as soon as the next “mousedownâ€ while in Safari/Chrome it is cleared on “mouseupâ€ so when fired your filtering will still find a selection active on Safari/Chrome, thus the second alert you see.\r\n\r\nThis is how you can alternatively fix that problem, just add these lines:\r\n\r\n[code lang="js"]\r\nfunction clearSelectedText() {\r\nif (window.getSelection) {\r\nwindow.getSelection().removeAllRanges();\r\n} else if (document.getSelection) {\r\ndocument.getSelection().empty();\r\n} else {\r\nvar selection = document.selection &amp;&amp; document.selection.createRange();\r\nif (selection.text) {\r\nselection.collapse(true);\r\nselection.select();\r\n}\r\n}\r\n}\r\n\r\naddEvent(document, “mousedownâ€, clearSelectedText);\r\n[/code]\r\nHope this help fix it and explain what happens in Safari/Chrome, I wouldn’t mark this as a bug. Have fun.</blockquote>\r\n\r\n', 'Update to the Google & Safari Double Firing mouseup Issue', 0, '', 'inherit', 'open', 'open', '', '602-revision-6', '', '', '2010-04-15 06:26:20', '2010-04-15 10:26:20', '', 602, 'http://blog.reybango.com/2010/04/15/602-revision-6/', 0, 'revision', '', 0),
(609, 3, '2010-04-15 06:26:47', '2010-04-15 10:26:47', 'Yesterday, I wrote about an issue I was having with Google & Safari''s way of handling text selection & the "mouseup" event versus Firefox & IE. It was an odd scenario but using a closure I found a workaround. This morning I was happy to see a comment from my friend Diego Perini with an explanation of what he feels is the cause and also an alternative fix. \r\n\r\n\r\n\r\n<blockquote>you have setup an on “mouseupâ€ event so it is normal it fires each time you release the mouse button. You are filtering “mouseupâ€ to act only if a selection exists, that’s ok. Unfortunately the difference between the browsers you mention is that in Firefox the selection is cleared as soon as the next “mousedownâ€ while in Safari/Chrome it is cleared on “mouseupâ€ so when fired your filtering will still find a selection active on Safari/Chrome, thus the second alert you see.\r\n\r\nThis is how you can alternatively fix that problem, just add these lines:\r\n\r\n[code lang="js"]\r\nfunction clearSelectedText() {\r\nif (window.getSelection) {\r\nwindow.getSelection().removeAllRanges();\r\n} else if (document.getSelection) {\r\ndocument.getSelection().empty();\r\n} else {\r\nvar selection = document.selection &amp;&amp; document.selection.createRange();\r\nif (selection.text) {\r\nselection.collapse(true);\r\nselection.select();\r\n}\r\n}\r\n}\r\n\r\naddEvent(document, “mousedownâ€, clearSelectedText);\r\n[/code]\r\nHope this help fix it and explain what happens in Safari/Chrome, I wouldn’t mark this as a bug. Have fun.</blockquote>\r\n\r\n', 'Update to the Google & Safari Double Firing mouseup Issue', 0, '', 'inherit', 'open', 'open', '', '602-revision-7', '', '', '2010-04-15 06:26:47', '2010-04-15 10:26:47', '', 602, 'http://blog.reybango.com/2010/04/15/602-revision-7/', 0, 'revision', '', 0),
(610, 3, '2010-04-15 11:38:53', '2010-04-15 15:38:53', 'Yesterday, <a href="http://blog.reybango.com/2010/04/14/my-solution-to-google-chrome-safari-double-firing-the-mouseup-event-when-selecting-text/">I wrote about an issue</a> I was having with Google & Safari''s way of handling text selection & the "mouseup" event versus Firefox & IE. I installed Opera 10.51 as well to ensure I tested this on the major browsers and Opera behaved just like Firefox & IE. So this was definitely specific to Chrome & Safari (and I assume Webkit as well).\r\n\r\nIt was an odd scenario but using a closure I found a workaround. This morning I was happy to see a comment from my friend <a href="http://www.iport.it/">Diego Perini</a> with an explanation of what he feels is the cause and also an alternative fix. \r\n\r\n<blockquote>you have setup an on “mouseupâ€ event so it is normal it fires each time you release the mouse button. You are filtering “mouseupâ€ to act only if a selection exists, that’s ok. Unfortunately the difference between the browsers you mention is that in Firefox the selection is cleared as soon as the next “mousedownâ€ while in Safari/Chrome it is cleared on “mouseupâ€ so when fired your filtering will still find a selection active on Safari/Chrome, thus the second alert you see.\r\n\r\nThis is how you can alternatively fix that problem, just add these lines:\r\n\r\n[code lang="js"]\r\nfunction clearSelectedText() {\r\nif (window.getSelection) {\r\nwindow.getSelection().removeAllRanges();\r\n} else if (document.getSelection) {\r\ndocument.getSelection().empty();\r\n} else {\r\nvar selection = document.selection &amp;&amp; document.selection.createRange();\r\nif (selection.text) {\r\nselection.collapse(true);\r\nselection.select();\r\n}\r\n}\r\n}\r\n\r\naddEvent(document, “mousedownâ€, clearSelectedText);\r\n[/code]\r\nHope this help fix it and explain what happens in Safari/Chrome, I wouldn’t mark this as a bug. Have fun.</blockquote>\r\n\r\n', 'Update to the Google & Safari Double Firing mouseup Issue', 0, '', 'inherit', 'open', 'open', '', '602-revision-8', '', '', '2010-04-15 11:38:53', '2010-04-15 15:38:53', '', 602, 'http://blog.reybango.com/2010/04/15/602-revision-8/', 0, 'revision', '', 0),
(611, 3, '2010-04-15 11:39:00', '2010-04-15 15:39:00', 'Yesterday, <a href="http://blog.reybango.com/2010/04/14/my-solution-to-google-chrome-safari-double-firing-the-mouseup-event-when-selecting-text/">I wrote about an issue</a> I was having with Google & Safari''s way of handling text selection & the "mouseup" event versus Firefox & IE. I installed Opera 10.51 as well to ensure I tested this on the major browsers and Opera behaved just like Firefox & IE. So this was definitely specific to Chrome & Safari (and I assume Webkit as well).\r\n\r\nIt was an odd scenario but using a closure I found a workaround. This morning I was happy to see a comment from my friend <a href="http://www.iport.it/">Diego Perini</a> with an explanation of what he feels is the cause and also an alternative fix. \r\n\r\n<blockquote>you have setup an on “mouseupâ€ event so it is normal it fires each time you release the mouse button. You are filtering “mouseupâ€ to act only if a selection exists, that’s ok. Unfortunately the difference between the browsers you mention is that in Firefox the selection is cleared as soon as the next “mousedownâ€ while in Safari/Chrome it is cleared on “mouseupâ€ so when fired your filtering will still find a selection active on Safari/Chrome, thus the second alert you see.\r\n\r\nThis is how you can alternatively fix that problem, just add these lines:\r\n\r\n[code lang="js"]\r\nfunction clearSelectedText() {\r\nif (window.getSelection) {\r\nwindow.getSelection().removeAllRanges();\r\n} else if (document.getSelection) {\r\ndocument.getSelection().empty();\r\n} else {\r\nvar selection = document.selection &amp;&amp; document.selection.createRange();\r\nif (selection.text) {\r\nselection.collapse(true);\r\nselection.select();\r\n}\r\n}\r\n}\r\n\r\naddEvent(document, “mousedownâ€, clearSelectedText);\r\n[/code]\r\nHope this help fix it and explain what happens in Safari/Chrome, I wouldn’t mark this as a bug. Have fun.</blockquote>\r\n\r\n', 'Update to the Google & Safari Double Firing mouseup Issue', 0, '', 'inherit', 'open', 'open', '', '602-revision-9', '', '', '2010-04-15 11:39:00', '2010-04-15 15:39:00', '', 602, 'http://blog.reybango.com/2010/04/15/602-revision-9/', 0, 'revision', '', 0),
(612, 3, '2010-04-15 11:42:44', '2010-04-15 15:42:44', 'Yesterday, <a href="http://blog.reybango.com/2010/04/14/my-solution-to-google-chrome-safari-double-firing-the-mouseup-event-when-selecting-text/">I wrote about an issue</a> I was having with Google & Safari''s way of handling text selection & the "mouseup" event versus Firefox & IE. I installed Opera 10.51 as well to ensure I tested this on the major browsers and Opera behaved just like Firefox & IE. So this was definitely specific to Chrome & Safari (and I assume Webkit as well).\r\n\r\nIt was an odd scenario but using a closure I found a workaround. This morning I was happy to see a comment from my friend <a href="http://www.iport.it/">Diego Perini</a> with an explanation of what he feels is the cause and also an alternative fix. \r\n\r\n<blockquote>you have setup an on “mouseupâ€ event so it is normal it fires each time you release the mouse button. You are filtering “mouseupâ€ to act only if a selection exists, that’s ok. Unfortunately the difference between the browsers you mention is that in Firefox the selection is cleared as soon as the next “mousedownâ€ while in Safari/Chrome it is cleared on “mouseupâ€ so when fired your filtering will still find a selection active on Safari/Chrome, thus the second alert you see.\r\n\r\nThis is how you can alternatively fix that problem, just add these lines:\r\n\r\n[code lang="js"]\r\nfunction clearSelectedText() {\r\nif (window.getSelection) {\r\nwindow.getSelection().removeAllRanges();\r\n} else if (document.getSelection) {\r\ndocument.getSelection().empty();\r\n} else {\r\nvar selection = document.selection &amp;&amp; document.selection.createRange();\r\nif (selection.text) {\r\nselection.collapse(true);\r\nselection.select();\r\n}\r\n}\r\n}\r\n\r\naddEvent(document, “mousedownâ€, clearSelectedText);\r\n[/code]\r\nHope this help fix it and explain what happens in Safari/Chrome, I wouldn’t mark this as a bug. Have fun.</blockquote>\r\n\r\nThis did in fact fix it and I like it much better because it avoids the need to attach a closure to an event, which could lead to a memory leak. Thanks Diego!\r\n\r\nWhile this does provide a great workaround, it still leaves unanswered the reason that Chrome & Safari (and Webkit??) behave differently than IE, Firefox & Safari. I''m not sure if the expected behavior for "mouseup" & "mousedown" when selected text is present is clearly defined in a specification but this is just another example of how lack of consensus causes web developers to jump through hurdles for no clear reason.\r\n', 'Update to the Google & Safari Double Firing mouseup Issue', 0, '', 'inherit', 'open', 'open', '', '602-revision-10', '', '', '2010-04-15 11:42:44', '2010-04-15 15:42:44', '', 602, 'http://blog.reybango.com/2010/04/15/602-revision-10/', 0, 'revision', '', 0),
(613, 3, '2010-04-15 11:42:48', '2010-04-15 15:42:48', 'Yesterday, <a href="http://blog.reybango.com/2010/04/14/my-solution-to-google-chrome-safari-double-firing-the-mouseup-event-when-selecting-text/">I wrote about an issue</a> I was having with Google & Safari''s way of handling text selection & the "mouseup" event versus Firefox & IE. I installed Opera 10.51 as well to ensure I tested this on the major browsers and Opera behaved just like Firefox & IE. So this was definitely specific to Chrome & Safari (and I assume Webkit as well).\r\n\r\nIt was an odd scenario but using a closure I found a workaround. This morning I was happy to see a comment from my friend <a href="http://www.iport.it/">Diego Perini</a> with an explanation of what he feels is the cause and also an alternative fix. \r\n\r\n<blockquote>you have setup an on “mouseupâ€ event so it is normal it fires each time you release the mouse button. You are filtering “mouseupâ€ to act only if a selection exists, that’s ok. Unfortunately the difference between the browsers you mention is that in Firefox the selection is cleared as soon as the next “mousedownâ€ while in Safari/Chrome it is cleared on “mouseupâ€ so when fired your filtering will still find a selection active on Safari/Chrome, thus the second alert you see.\r\n\r\nThis is how you can alternatively fix that problem, just add these lines:\r\n\r\n[code lang="js"]\r\nfunction clearSelectedText() {\r\nif (window.getSelection) {\r\nwindow.getSelection().removeAllRanges();\r\n} else if (document.getSelection) {\r\ndocument.getSelection().empty();\r\n} else {\r\nvar selection = document.selection &amp;&amp; document.selection.createRange();\r\nif (selection.text) {\r\nselection.collapse(true);\r\nselection.select();\r\n}\r\n}\r\n}\r\n\r\naddEvent(document, “mousedownâ€, clearSelectedText);\r\n[/code]\r\nHope this help fix it and explain what happens in Safari/Chrome, I wouldn’t mark this as a bug. Have fun.</blockquote>\r\n\r\nThis did in fact fix it and I like it much better because it avoids the need to attach a closure to an event, which could lead to a memory leak. Thanks Diego!\r\n\r\nWhile this does provide a great workaround, it still leaves unanswered the reason that Chrome & Safari (and Webkit??) behave differently than IE, Firefox & Safari. I''m not sure if the expected behavior for "mouseup" & "mousedown" when selected text is present is clearly defined in a specification but this is just another example of how lack of consensus causes web developers to jump through hurdles for no clear reason.\r\n', 'Update to the Google & Safari Double Firing mouseup Issue', 0, '', 'inherit', 'open', 'open', '', '602-revision-11', '', '', '2010-04-15 11:42:48', '2010-04-15 15:42:48', '', 602, 'http://blog.reybango.com/2010/04/15/602-revision-11/', 0, 'revision', '', 0),
(614, 3, '2010-04-15 11:43:36', '2010-04-15 15:43:36', 'Yesterday, <a href="http://blog.reybango.com/2010/04/14/my-solution-to-google-chrome-safari-double-firing-the-mouseup-event-when-selecting-text/">I wrote about an issue</a> I was having with Google & Safari''s way of handling text selection & the "mouseup" event versus Firefox & IE. I installed Opera 10.51 as well to ensure I tested this on the major browsers and Opera behaved just like Firefox & IE. So this was definitely specific to Chrome & Safari (and I assume Webkit as well).\r\n\r\nIt was an odd scenario but using a closure I found a workaround. This morning I was happy to see a comment from my friend <a href="http://www.iport.it/">Diego Perini</a> with an explanation of what he feels is the cause and also an alternative fix. \r\n\r\n<blockquote>you have setup an on “mouseupâ€ event so it is normal it fires each time you release the mouse button. You are filtering “mouseupâ€ to act only if a selection exists, that’s ok. Unfortunately the difference between the browsers you mention is that in Firefox the selection is cleared as soon as the next “mousedownâ€ while in Safari/Chrome it is cleared on “mouseupâ€ so when fired your filtering will still find a selection active on Safari/Chrome, thus the second alert you see.\r\n\r\nThis is how you can alternatively fix that problem, just add these lines:\r\n\r\n[code lang="js"]\r\nfunction clearSelectedText() {\r\nif (window.getSelection) {\r\nwindow.getSelection().removeAllRanges();\r\n} else if (document.getSelection) {\r\ndocument.getSelection().empty();\r\n} else {\r\nvar selection = document.selection &amp;&amp; document.selection.createRange();\r\nif (selection.text) {\r\nselection.collapse(true);\r\nselection.select();\r\n}\r\n}\r\n}\r\n\r\naddEvent(document, “mousedownâ€, clearSelectedText);\r\n[/code]\r\nHope this help fix it and explain what happens in Safari/Chrome, I wouldn’t mark this as a bug. Have fun.</blockquote>\r\n\r\n<a href="http://reybango.com/ms/test-diego.html">This did in fact fix it</a> and I like it much better because it avoids the need to attach a closure to an event, which could lead to a memory leak. Thanks Diego!\r\n\r\nWhile this does provide a great workaround, it still leaves unanswered the reason that Chrome & Safari (and Webkit??) behave differently than IE, Firefox & Safari. I''m not sure if the expected behavior for "mouseup" & "mousedown" when selected text is present is clearly defined in a specification but this is just another example of how lack of consensus causes web developers to jump through hurdles for no clear reason.\r\n', 'Update to the Google & Safari Double Firing mouseup Issue', 0, '', 'inherit', 'open', 'open', '', '602-revision-12', '', '', '2010-04-15 11:43:36', '2010-04-15 15:43:36', '', 602, 'http://blog.reybango.com/2010/04/15/602-revision-12/', 0, 'revision', '', 0),
(616, 3, '2010-04-17 12:16:05', '2010-04-17 16:16:05', '<img src="http://blog.reybango.com/wp-content/uploads/2010/04/jsconf-225x300.jpg" alt="" title="jsconf" width="225" height="300" class="alignright size-medium wp-image-630" style="float:right;margin-left:5px;"/>I''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScurvyConf was Awesome', 0, '', 'publish', 'open', 'open', '', 'jsconf-day-1-scruvyconf-was-awesome', '', '', '2010-04-17 12:16:23', '2010-04-17 16:16:23', '', 0, 'http://blog.reybango.com/?p=616', 0, 'post', '', 0),
(617, 3, '2010-04-17 11:43:29', '2010-04-17 15:43:29', 'I''ve been looking forward to JSConf 2010 since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\n\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and sku', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision', '', '', '2010-04-17 11:43:29', '2010-04-17 15:43:29', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision/', 0, 'revision', '', 0),
(618, 3, '2010-04-17 11:44:28', '2010-04-17 15:44:28', 'I''ve been looking forward to JSConf 2010 since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\n', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-2', '', '', '2010-04-17 11:44:28', '2010-04-17 15:44:28', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-2/', 0, 'revision', '', 0),
(619, 3, '2010-04-17 11:44:34', '2010-04-17 15:44:34', 'I''ve been looking forward to JSConf 2010 since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\n', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-3', '', '', '2010-04-17 11:44:34', '2010-04-17 15:44:34', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-3/', 0, 'revision', '', 0),
(620, 3, '2010-04-17 11:49:08', '2010-04-17 15:49:08', 'I''ve been looking forward to JSConf 2010 since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless Tom Hughes-Croucher (Yahoo!) got the crowd going with their lively presos. ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-4', '', '', '2010-04-17 11:49:08', '2010-04-17 15:49:08', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-4/', 0, 'revision', '', 0),
(621, 3, '2010-04-17 11:53:16', '2010-04-17 15:53:16', 'I''ve been looking forward to JSConf 2010 since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. It''s those moments that make attending conferences so valuable.', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-5', '', '', '2010-04-17 11:53:16', '2010-04-17 15:53:16', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-5/', 0, 'revision', '', 0);
INSERT INTO `wp_dyxkdh_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_category`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES
(622, 3, '2010-04-17 12:01:54', '2010-04-17 16:01:54', 'I''ve been looking forward to JSConf 2010 since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\n\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\n\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\n\n<strong>Microsoft</strong>\n\nI received a lot of feedback about me joining Microsoft and all of it was very supportive and congratulatory. In addition, the feedback I heard was that Internet Explorer 9 is a definite step in the right direction and I think there''s a general excitement about its release. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-6', '', '', '2010-04-17 12:01:54', '2010-04-17 16:01:54', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-6/', 0, 'revision', '', 0),
(624, 3, '2010-04-17 12:05:05', '2010-04-17 16:05:05', 'I''ve been looking forward to JSConf 2010 since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-8', '', '', '2010-04-17 12:05:05', '2010-04-17 16:05:05', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-8/', 0, 'revision', '', 0),
(623, 3, '2010-04-17 12:04:19', '2010-04-17 16:04:19', 'I''ve been looking forward to JSConf 2010 since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\n\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\n\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\n\n<strong>Microsoft</strong>\n\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction and I think there''s a general excitement about its release. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-7', '', '', '2010-04-17 12:04:19', '2010-04-17 16:04:19', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-7/', 0, 'revision', '', 0),
(625, 3, '2010-04-17 12:07:49', '2010-04-17 16:07:49', '', 'header', 0, '', 'inherit', 'open', 'open', '', 'header', '', '', '2010-04-17 12:07:49', '2010-04-17 16:07:49', '', 616, 'http://blog.reybango.com/wp-content/uploads/2010/04/header.jpg', 0, 'attachment', 'image/jpeg', 0),
(626, 3, '2010-04-17 12:05:10', '2010-04-17 16:05:10', 'I''ve been looking forward to JSConf 2010 since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-9', '', '', '2010-04-17 12:05:10', '2010-04-17 16:05:10', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-9/', 0, 'revision', '', 0),
(629, 3, '2010-04-17 12:09:59', '2010-04-17 16:09:59', 'I''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-12', '', '', '2010-04-17 12:09:59', '2010-04-17 16:09:59', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-12/', 0, 'revision', '', 0),
(627, 3, '2010-04-17 12:08:03', '2010-04-17 16:08:03', '<a href="http://blog.reybango.com/wp-content/uploads/2010/04/header.jpg"><img src="http://blog.reybango.com/wp-content/uploads/2010/04/header-300x45.jpg" alt="" title="header" width="300" height="45" class="aligncenter size-medium wp-image-625" /></a>\r\nI''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-10', '', '', '2010-04-17 12:08:03', '2010-04-17 16:08:03', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-10/', 0, 'revision', '', 0),
(628, 3, '2010-04-17 12:08:09', '2010-04-17 16:08:09', '<a href="http://blog.reybango.com/wp-content/uploads/2010/04/header.jpg"><img src="http://blog.reybango.com/wp-content/uploads/2010/04/header-300x45.jpg" alt="" title="header" width="300" height="45" class="aligncenter size-medium wp-image-625" /></a>\r\nI''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-11', '', '', '2010-04-17 12:08:09', '2010-04-17 16:08:09', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-11/', 0, 'revision', '', 0),
(630, 3, '2010-04-17 12:11:22', '2010-04-17 16:11:22', '', 'jsconf', 0, '', 'inherit', 'open', 'open', '', 'jsconf', '', '', '2010-04-17 12:11:22', '2010-04-17 16:11:22', '', 616, 'http://blog.reybango.com/wp-content/uploads/2010/04/jsconf.jpg', 0, 'attachment', 'image/jpeg', 0),
(631, 3, '2010-04-17 12:10:05', '2010-04-17 16:10:05', 'I''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-13', '', '', '2010-04-17 12:10:05', '2010-04-17 16:10:05', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-13/', 0, 'revision', '', 0),
(634, 3, '2010-04-17 12:13:35', '2010-04-17 16:13:35', 'I''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.<img src="http://blog.reybango.com/wp-content/uploads/2010/04/jsconf-225x300.jpg" alt="" title="jsconf" width="225" height="300" class="alignright size-medium wp-image-630" style="float:right"/>\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-16', '', '', '2010-04-17 12:13:35', '2010-04-17 16:13:35', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-16/', 0, 'revision', '', 0),
(632, 3, '2010-04-17 12:12:24', '2010-04-17 16:12:24', 'I''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.<a href="http://blog.reybango.com/wp-content/uploads/2010/04/jsconf.jpg"><img src="http://blog.reybango.com/wp-content/uploads/2010/04/jsconf-225x300.jpg" alt="" title="jsconf" width="225" height="300" class="alignright size-medium wp-image-630" /></a>\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-14', '', '', '2010-04-17 12:12:24', '2010-04-17 16:12:24', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-14/', 0, 'revision', '', 0),
(633, 3, '2010-04-17 12:12:48', '2010-04-17 16:12:48', 'I''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.<a href="http://blog.reybango.com/wp-content/uploads/2010/04/jsconf.jpg"><img src="http://blog.reybango.com/wp-content/uploads/2010/04/jsconf-225x300.jpg" alt="" title="jsconf" width="225" height="300" class="alignright size-medium wp-image-630" /></a>\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-15', '', '', '2010-04-17 12:12:48', '2010-04-17 16:12:48', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-15/', 0, 'revision', '', 0),
(635, 3, '2010-04-17 12:13:42', '2010-04-17 16:13:42', 'I''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.<img src="http://blog.reybango.com/wp-content/uploads/2010/04/jsconf-225x300.jpg" alt="" title="jsconf" width="225" height="300" class="alignright size-medium wp-image-630" style="float:right"/>\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-17', '', '', '2010-04-17 12:13:42', '2010-04-17 16:13:42', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-17/', 0, 'revision', '', 0),
(636, 3, '2010-04-17 12:14:04', '2010-04-17 16:14:04', '<img src="http://blog.reybango.com/wp-content/uploads/2010/04/jsconf-225x300.jpg" alt="" title="jsconf" width="225" height="300" class="alignright size-medium wp-image-630" style="float:right"/>I''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-18', '', '', '2010-04-17 12:14:04', '2010-04-17 16:14:04', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-18/', 0, 'revision', '', 0),
(637, 3, '2010-04-17 12:14:08', '2010-04-17 16:14:08', '<img src="http://blog.reybango.com/wp-content/uploads/2010/04/jsconf-225x300.jpg" alt="" title="jsconf" width="225" height="300" class="alignright size-medium wp-image-630" style="float:right"/>I''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-19', '', '', '2010-04-17 12:14:08', '2010-04-17 16:14:08', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-19/', 0, 'revision', '', 0),
(640, 3, '2010-04-17 12:14:58', '2010-04-17 16:14:58', '<img src="http://blog.reybango.com/wp-content/uploads/2010/04/jsconf-225x300.jpg" alt="" title="jsconf" width="225" height="300" class="alignright size-medium wp-image-630" style="float:right;margin-left:5px;"/>I''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-22', '', '', '2010-04-17 12:14:58', '2010-04-17 16:14:58', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-22/', 0, 'revision', '', 0),
(638, 3, '2010-04-17 12:14:35', '2010-04-17 16:14:35', '<img src="http://blog.reybango.com/wp-content/uploads/2010/04/jsconf-225x300.jpg" alt="" title="jsconf" width="225" height="300" class="alignright size-medium wp-image-630" style="float:right;padding-left:5px;"/>I''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-20', '', '', '2010-04-17 12:14:35', '2010-04-17 16:14:35', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-20/', 0, 'revision', '', 0),
(639, 3, '2010-04-17 12:14:40', '2010-04-17 16:14:40', '<img src="http://blog.reybango.com/wp-content/uploads/2010/04/jsconf-225x300.jpg" alt="" title="jsconf" width="225" height="300" class="alignright size-medium wp-image-630" style="float:right;padding-left:5px;"/>I''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-21', '', '', '2010-04-17 12:14:40', '2010-04-17 16:14:40', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-21/', 0, 'revision', '', 0),
(641, 3, '2010-04-17 12:15:04', '2010-04-17 16:15:04', '<img src="http://blog.reybango.com/wp-content/uploads/2010/04/jsconf-225x300.jpg" alt="" title="jsconf" width="225" height="300" class="alignright size-medium wp-image-630" style="float:right;margin-left:5px;"/>I''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-23', '', '', '2010-04-17 12:15:04', '2010-04-17 16:15:04', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-23/', 0, 'revision', '', 0),
(642, 3, '2010-04-17 12:16:05', '2010-04-17 16:16:05', '<img src="http://blog.reybango.com/wp-content/uploads/2010/04/jsconf-225x300.jpg" alt="" title="jsconf" width="225" height="300" class="alignright size-medium wp-image-630" style="float:right;margin-left:5px;"/>I''ve been looking forward to <a href="http://jsconf.us/2010/">JSConf 2010</a> since last year when I wasn''t able to hit the event. JSConf, for those that don''t know, is one of the premier events for JavaScript developers and it attracts the best of the best in the JS world. People like Douglas Crockford, John Resig, John Hamm, Pete Higgins, Alex Russell and more are all in attendance this year with most giving some hardcore presentations on the newest innovations in front-end development.\r\n\r\nJSConf is very unique in the way it''s run blending amazing presentations with some wild fun. The theme for this year is "pirates" and the conference is definitely reflecting that with organizers dressed as swash bucklers and plenty of swords, hooks and skull/cross-bones to go around. In addition, they had a pre-conference mini-conference/party called ScurvyConf which was an amazing social gathering.\r\n\r\nScurvyConf, while mainly one big social meetup, also allowed developers whose talks weren''t accepted for the main JSConf tracks a chance to do a quick presentation to the crowd. Presenters like Nitobi''s Brian Leroux and a shirtless <a href="http://kid666.com/">Tom Hughes-Croucher</a> (Yahoo!) got the crowd going with their lively presos. I had a bit of a fan-boi moment when I got to meet <a href="http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939">Billy Hoffman who wrote the book on Ajax security</a>. For me, the big win was meeting so many of the people I only know virtually and actually putting a person to the online conversations. It''s those moments that make attending conferences so valuable.\r\n\r\n<strong>Microsoft</strong>\r\n\r\nI received a lot of feedback about joining Microsoft and all of it was very supportive and congratulatory. In addition, people are excited about Internet Explorer 9 and feel it''s a definite step in the right direction. IE6 is still a big pain point and Google''s Alex Russell had some especially strong opinions on why Google Frame is the right technology to finally help IE6 users move towards a better browser experience.  ', 'JSConf Day 1: ScruvyConf was Awesome', 0, '', 'inherit', 'open', 'open', '', '616-revision-24', '', '', '2010-04-17 12:16:05', '2010-04-17 16:16:05', '', 616, 'http://blog.reybango.com/2010/04/17/616-revision-24/', 0, 'revision', '', 0);
INSERT INTO `wp_dyxkdh_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_category`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES
(643, 3, '2010-04-21 00:36:41', '2010-04-21 04:36:41', 'While at <a href="http://jsconf.us/2010/">JSConf 2010</a>, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\r\n\r\n<strong>JSConf 2010 Organizer Chris Williams</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Tom Occhino & Makinde Adeagbo of Facebook</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\r\n\r\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\r\n\r\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Pete Higgins - Lead Developer of the <a href="http://dojotoolkit.org/">Dojo Toolkit</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\nJohn-David Dalton, creator of FuseJS Part 1 of 2\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>John-David Dalton, creator of FuseJS Part 2 of 2</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/146W7k5byIA&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/146W7k5byIA&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'publish', 'open', 'open', '', 'jsconf-2010-video-interviews-with-top-javascript-developers', '', '', '2010-04-21 10:17:28', '2010-04-21 14:17:28', '', 0, 'http://blog.reybango.com/?p=643', 0, 'post', '', 7),
(644, 3, '2010-04-20 20:35:50', '2010-04-21 00:35:50', '\nTom Ochinno & Makinde Adeagbo of Facebook\n\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\n\nKyle Simpson - Create o\n', '', 0, '', 'inherit', 'open', 'open', '', '643-revision', '', '', '2010-04-20 20:35:50', '2010-04-21 00:35:50', '', 643, 'http://blog.reybango.com/2010/04/20/643-revision/', 0, 'revision', '', 0),
(645, 3, '2010-04-20 20:36:51', '2010-04-21 00:36:51', '\nTom Ochinno & Makinde Adeagbo of Facebook\n\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\n\n<a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a>\n\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\n\n\n', '', 0, '', 'inherit', 'open', 'open', '', '643-revision-2', '', '', '2010-04-20 20:36:51', '2010-04-21 00:36:51', '', 643, 'http://blog.reybango.com/2010/04/20/643-revision-2/', 0, 'revision', '', 0),
(646, 3, '2010-04-20 20:39:31', '2010-04-21 00:39:31', 'While at JSConf 2010, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on\n\nTom Ochinno & Makinde Adeagbo of Facebook\n\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\n\n<a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a>\n\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\n\n\n', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-3', '', '', '2010-04-20 20:39:31', '2010-04-21 00:39:31', '', 643, 'http://blog.reybango.com/2010/04/20/643-revision-3/', 0, 'revision', '', 0),
(647, 3, '2010-04-20 20:40:04', '2010-04-21 00:40:04', 'While at JSConf 2010, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\r\n\r\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\r\n\r\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\r\n\r\n\r\n', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-4', '', '', '2010-04-20 20:40:04', '2010-04-21 00:40:04', '', 643, 'http://blog.reybango.com/2010/04/20/643-revision-4/', 0, 'revision', '', 0),
(648, 3, '2010-04-20 20:48:11', '2010-04-21 00:48:11', 'While at JSConf 2010, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\n\n<strong>JSConf 2010 Organizer Chris Williams</strong>\n\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\n\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\n\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\n\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\n\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\n\nJeffrey Van Gogh & Matthew Podwysocki talk about RxJS - \n\n\n', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-5', '', '', '2010-04-20 20:48:11', '2010-04-21 00:48:11', '', 643, 'http://blog.reybango.com/2010/04/20/643-revision-5/', 0, 'revision', '', 0),
(649, 3, '2010-04-20 20:48:30', '2010-04-21 00:48:30', 'While at JSConf 2010, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\r\n\r\n<strong>JSConf 2010 Organizer Chris Williams</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\r\n\r\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\r\n\r\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\r\n\r\n\r\n', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-6', '', '', '2010-04-20 20:48:30', '2010-04-21 00:48:30', '', 643, 'http://blog.reybango.com/2010/04/20/643-revision-6/', 0, 'revision', '', 0),
(650, 3, '2010-04-20 20:49:35', '2010-04-21 00:49:35', 'While at JSConf 2010, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\r\n\r\n<strong>JSConf 2010 Organizer Chris Williams</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\r\n\r\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\r\n\r\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\r\n\r\n\r\n', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-7', '', '', '2010-04-20 20:49:35', '2010-04-21 00:49:35', '', 643, 'http://blog.reybango.com/2010/04/20/643-revision-7/', 0, 'revision', '', 0),
(651, 3, '2010-04-20 21:20:42', '2010-04-21 01:20:42', 'While at JSConf 2010, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\r\n\r\n<strong>JSConf 2010 Organizer Chris Williams</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\r\n\r\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\r\n\r\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-8', '', '', '2010-04-20 21:20:42', '2010-04-21 01:20:42', '', 643, 'http://blog.reybango.com/2010/04/20/643-revision-8/', 0, 'revision', '', 0),
(652, 3, '2010-04-20 21:21:02', '2010-04-21 01:21:02', 'While at JSConf 2010, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\r\n\r\n<strong>JSConf 2010 Organizer Chris Williams</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\r\n\r\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\r\n\r\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-9', '', '', '2010-04-20 21:21:02', '2010-04-21 01:21:02', '', 643, 'http://blog.reybango.com/2010/04/20/643-revision-9/', 0, 'revision', '', 0),
(653, 3, '2010-04-20 23:54:39', '2010-04-21 03:54:39', 'While at JSConf 2010, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\n\n<strong>JSConf 2010 Organizer Chris Williams</strong>\n\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\n\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\n\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\n\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\n\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\n\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\n\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\n\n<strong>Pete Higgins - Lead Developer of the Dojo Toolkit</strong>\n\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\n\nJohn David-Dalton, creator of FuseJS Part 1 of 2\n\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\n\nJohn David-Dalton, creator of FuseJS Part 2 of 2', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-10', '', '', '2010-04-20 23:54:39', '2010-04-21 03:54:39', '', 643, 'http://blog.reybango.com/2010/04/20/643-revision-10/', 0, 'revision', '', 0),
(654, 3, '2010-04-21 00:08:44', '2010-04-21 04:08:44', 'While at JSConf 2010, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\n\n<strong>JSConf 2010 Organizer Chris Williams</strong>\n\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\n\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\n\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\n\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\n\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\n\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\n\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\n\n<strong>Pete Higgins - Lead Developer of the <a href="http://dojotoolkit.org/">Dojo Toolkit</a></strong>\n\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\n\nJohn David-Dalton, creator of FuseJS Part 1 of 2\n\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\n\nJohn David-Dalton, creator of FuseJS Part 2 of 2', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-11', '', '', '2010-04-21 00:08:44', '2010-04-21 04:08:44', '', 643, 'http://blog.reybango.com/2010/04/21/643-revision-11/', 0, 'revision', '', 0),
(655, 3, '2010-04-21 00:09:14', '2010-04-21 04:09:14', 'While at <a href="http://jsconf.us/2010/">JSConf 2010</a>, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\r\n\r\n<strong>JSConf 2010 Organizer Chris Williams</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\r\n\r\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\r\n\r\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Pete Higgins - Lead Developer of the <a href="http://dojotoolkit.org/">Dojo Toolkit</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\nJohn David-Dalton, creator of FuseJS Part 1 of 2\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\nJohn David-Dalton, creator of FuseJS Part 2 of 2', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-12', '', '', '2010-04-21 00:09:14', '2010-04-21 04:09:14', '', 643, 'http://blog.reybango.com/2010/04/21/643-revision-12/', 0, 'revision', '', 0),
(656, 3, '2010-04-21 00:34:18', '2010-04-21 04:34:18', 'While at <a href="http://jsconf.us/2010/">JSConf 2010</a>, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\r\n\r\n<strong>JSConf 2010 Organizer Chris Williams</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\r\n\r\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\r\n\r\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Pete Higgins - Lead Developer of the <a href="http://dojotoolkit.org/">Dojo Toolkit</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\nJohn David-Dalton, creator of FuseJS Part 1 of 2\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\nJohn David-Dalton, creator of FuseJS Part 2 of 2\r\n\r\n<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/146W7k5byIA&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/146W7k5byIA&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-13', '', '', '2010-04-21 00:34:18', '2010-04-21 04:34:18', '', 643, 'http://blog.reybango.com/2010/04/21/643-revision-13/', 0, 'revision', '', 0),
(657, 3, '2010-04-21 00:34:30', '2010-04-21 04:34:30', 'While at <a href="http://jsconf.us/2010/">JSConf 2010</a>, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\r\n\r\n<strong>JSConf 2010 Organizer Chris Williams</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\r\n\r\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\r\n\r\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Pete Higgins - Lead Developer of the <a href="http://dojotoolkit.org/">Dojo Toolkit</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\nJohn David-Dalton, creator of FuseJS Part 1 of 2\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\nJohn David-Dalton, creator of FuseJS Part 2 of 2\r\n\r\n<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/146W7k5byIA&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/146W7k5byIA&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-14', '', '', '2010-04-21 00:34:30', '2010-04-21 04:34:30', '', 643, 'http://blog.reybango.com/2010/04/21/643-revision-14/', 0, 'revision', '', 0);
INSERT INTO `wp_dyxkdh_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_category`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES
(658, 3, '2010-04-21 00:35:21', '2010-04-21 04:35:21', 'While at <a href="http://jsconf.us/2010/">JSConf 2010</a>, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\r\n\r\n<strong>JSConf 2010 Organizer Chris Williams</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\r\n\r\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\r\n\r\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Pete Higgins - Lead Developer of the <a href="http://dojotoolkit.org/">Dojo Toolkit</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\nJohn David-Dalton, creator of FuseJS Part 1 of 2\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\nJohn David-Dalton, creator of FuseJS Part 2 of 2\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/146W7k5byIA&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/146W7k5byIA&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-15', '', '', '2010-04-21 00:35:21', '2010-04-21 04:35:21', '', 643, 'http://blog.reybango.com/2010/04/21/643-revision-15/', 0, 'revision', '', 0),
(659, 3, '2010-04-21 00:35:27', '2010-04-21 04:35:27', 'While at <a href="http://jsconf.us/2010/">JSConf 2010</a>, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\r\n\r\n<strong>JSConf 2010 Organizer Chris Williams</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\r\n\r\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\r\n\r\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Pete Higgins - Lead Developer of the <a href="http://dojotoolkit.org/">Dojo Toolkit</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\nJohn David-Dalton, creator of FuseJS Part 1 of 2\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\nJohn David-Dalton, creator of FuseJS Part 2 of 2\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/146W7k5byIA&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/146W7k5byIA&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-16', '', '', '2010-04-21 00:35:27', '2010-04-21 04:35:27', '', 643, 'http://blog.reybango.com/2010/04/21/643-revision-16/', 0, 'revision', '', 0),
(660, 3, '2010-04-21 00:36:11', '2010-04-21 04:36:11', 'While at <a href="http://jsconf.us/2010/">JSConf 2010</a>, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\r\n\r\n<strong>JSConf 2010 Organizer Chris Williams</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\r\n\r\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\r\n\r\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Pete Higgins - Lead Developer of the <a href="http://dojotoolkit.org/">Dojo Toolkit</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\nJohn David-Dalton, creator of FuseJS Part 1 of 2\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>John David-Dalton, creator of FuseJS Part 2 of 2</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/146W7k5byIA&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/146W7k5byIA&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-17', '', '', '2010-04-21 00:36:11', '2010-04-21 04:36:11', '', 643, 'http://blog.reybango.com/2010/04/21/643-revision-17/', 0, 'revision', '', 0),
(661, 3, '2010-04-21 00:36:32', '2010-04-21 04:36:32', 'While at <a href="http://jsconf.us/2010/">JSConf 2010</a>, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\r\n\r\n<strong>JSConf 2010 Organizer Chris Williams</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\r\n\r\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\r\n\r\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Pete Higgins - Lead Developer of the <a href="http://dojotoolkit.org/">Dojo Toolkit</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\nJohn David-Dalton, creator of FuseJS Part 1 of 2\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>John David-Dalton, creator of FuseJS Part 2 of 2</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/146W7k5byIA&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/146W7k5byIA&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-18', '', '', '2010-04-21 00:36:32', '2010-04-21 04:36:32', '', 643, 'http://blog.reybango.com/2010/04/21/643-revision-18/', 0, 'revision', '', 0),
(662, 3, '2010-04-21 00:36:41', '2010-04-21 04:36:41', 'While at <a href="http://jsconf.us/2010/">JSConf 2010</a>, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\r\n\r\n<strong>JSConf 2010 Organizer Chris Williams</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Tom Ochinno & Makinde Adeagbo of Facebook</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\r\n\r\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\r\n\r\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Pete Higgins - Lead Developer of the <a href="http://dojotoolkit.org/">Dojo Toolkit</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\nJohn David-Dalton, creator of FuseJS Part 1 of 2\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>John David-Dalton, creator of FuseJS Part 2 of 2</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/146W7k5byIA&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/146W7k5byIA&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-19', '', '', '2010-04-21 00:36:41', '2010-04-21 04:36:41', '', 643, 'http://blog.reybango.com/2010/04/21/643-revision-19/', 0, 'revision', '', 0),
(663, 3, '2010-04-21 10:14:36', '2010-04-21 14:14:36', 'While at <a href="http://jsconf.us/2010/">JSConf 2010</a>, I was able to interview some great developers who are really making an impact on client-side development. I''ve posted the video interviews below and I hope you like them. I want to thank all of my guests for taking the time to speak with me and share some great insights into what they''re working on.\r\n\r\n<strong>JSConf 2010 Organizer Chris Williams</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lylsqx7Mg8E&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Tom Occhino & Makinde Adeagbo of Facebook</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5NuldQqDJqY&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong><a href="http://twitter.com/getify">Kyle Simpson</a> - Creator of <a href="http://labjs.com/">LabJS</a></strong>\r\n\r\n<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11089453&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/11089453">JSConf Interview - Kyle Simpson</a> from <a href="http://vimeo.com/user290683">Rey Bango</a> on <a href="http://vimeo.com">Vimeo</a>.</p>\r\n\r\n<strong>Jeffrey Van Gogh & Matthew Podwysocki talk about <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">RxJS - Reactive Extensions for JavaScript</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1XaFMOyBxno&hl=en_US&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>Pete Higgins - Lead Developer of the <a href="http://dojotoolkit.org/">Dojo Toolkit</a></strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/imDgzrMzhWc&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\nJohn David-Dalton, creator of FuseJS Part 1 of 2\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QE3ZcbFH54s&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>\r\n\r\n<strong>John David-Dalton, creator of FuseJS Part 2 of 2</strong>\r\n\r\n<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/146W7k5byIA&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/146W7k5byIA&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>', 'JSConf 2010 - Video Interviews with Top JavaScript Developers', 0, '', 'inherit', 'open', 'open', '', '643-revision-20', '', '', '2010-04-21 10:14:36', '2010-04-21 14:14:36', '', 643, 'http://blog.reybango.com/2010/04/21/643-revision-20/', 0, 'revision', '', 0);
INSERT INTO `wp_dyxkdh_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_category`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES
(664, 3, '2010-04-29 14:55:43', '2010-04-29 18:55:43', '<p><strong><em>NOTE: I''ve moved the list to it''s own dedicated page so that I can manage it a little easier so for the most up-to-date list, <a href="http://blog.reybango.com/the-big-list-of-javascript-css-and-html-development-tools-libraries-projects-and-books/">go to the following page</a></em>.</strong></p>\r\n\r\nI''ve been meaning to do a roll-up of top JavaScript, CSS & HTML development tools that I use or have been recommended to me and after having lunch with my bud Brian Wilpon today, I realized I just needed to do it. He asked me what some of the newer tools are and I think this is the best way to help him (and the community in general). It''s definitely not an all-inclusive list so if you see some that you feel I should add or remove, let me know in the comments.\r\n\r\nHere they are by category:\r\n\r\n<strong>Debugging Tools That Make Life MUCH Easier:</strong>\r\n\r\nEffectively debugging JavaScript applications is a royal pain in the derriere and to compile that, the available tools just don''t stand up to those used by managed code developers. Luckily, we do have a decent set of tools that lessens the pain substantially. Firebug is definitely a must have since it incorporates so much DOM & XHR introspection as well as the Web Developer Toolbar. Both are simply awesome. I also love Charles for HTTP sniffing and it''s saved my butt when Firebug couldn''t handle it. \r\n\r\n<a href="http://msdn.microsoft.com/en-us/library/dd565628%28VS.85%29.aspx">IE8 Developer Tools</a> - Microsoft''s browser debugger tools\r\n<a href="http://getfirebug.com/">Firebug</a> - Mozilla''s browser debugger add-on \r\n<a href="http://trac.webkit.org/wiki/WebInspector">WebKit Web Inspector</a> - Webkit''s browser debugger tools\r\n<a href="http://www.fiddler2.com/fiddler2/">Fiddler</a> - HTTP Sniffer. Great for seeing Ajax requests.\r\n<a href="http://www.charlesproxy.com/">Charles</a> - HTTP Sniffer. Great for seeing Ajax requests. (my personal fav)\r\n<a href="http://kevinlangdon.com/serviceCapture/">Service Capture</a> - HTTP Sniffer. Great for seeing Ajax requests.\r\n<a href="http://ajax.dynatrace.com/pages/">dynaTrace Ajax</a> - HTTP performance analyzer\r\n<a href="http://chrispederick.com/work/web-developer/">Web Developer’s Toolbar</a> - All purpose Firefox toolbar to inspect everything on a page\r\n<a href="http://developer.yahoo.com/yslow/">YSlow</a> - Analyzes page performance based on accepted industry best practices.\r\n<a href="http://code.google.com/speed/page-speed/">PageSpeed</a> - Analyzes page performance based on accepted industry best practices.\r\n<a href="http://www.debugbar.com/">DebugBar</a> - An IE plugin that brings advanced debugging features to IE including JS, DOM & HTTP inspection\r\n\r\n<strong>CSS Editors:</strong>\r\n\r\nI prefer to write my CSS code by hand. Call me old-school but many swear by the following CSS editors. CSSEdit by MacRabbit (Mac only) is especially loved by many designers.\r\n\r\n<a href="http://www.topstyle4.com/">TopStyle</a>\r\n<a href="http://www.blumentals.net/rapidcss/">Rapid CSS</a>\r\n<a href="http://www.culturedcode.com/xyle/">Xyle</a>\r\n<a href="http://www.skybound.ca/">Stylizer</a>\r\n<a href="http://www.macrabbit.com/cssedit/">CSSEdit</a>\r\n\r\n<strong>CSS Frameworks:</strong>\r\n\r\nThese frameworks have really taken off. Like their JavaScript brethren, they help to abstract much of the complexity of building consistent layouts in cross-browser fashion. They''re definitely something I need to look into more and from what I''ve read, 960 GS & Blueprint are the ones people are looking at.\r\n\r\n<a href="http://960.gs">960 Grid System</a>\r\n<a href="http://blueprintcss.org/">Blueprint CSS Framework</a>\r\n<a href="http://www.yaml.de/en/">YAML</a>\r\n<a href="http://developer.yahoo.com/yui/grids/">Yahoo YUI Grids CSS</a>\r\n<a href="http://devkick.com/lab/tripoli/">Tripoli</a>\r\n<a href="http://net.tutsplus.com/tutorials/html-css-techniques/object-oriented-css-what-how-and-why/">Object-Oriented CSS</a>\r\n\r\n<strong>CSS Resets:</strong>\r\n\r\nWant to minimize browser inconsistencies? Then use a CSS reset stylesheet to specify baseline CSS styles that make browser presentation defaults more consistent. \r\n\r\n<a href="http://meyerweb.com/eric/tools/css/reset/">Meyer Reset by Eric Meyer</a>\r\n<a href="http://developer.yahoo.com/yui/reset/">YUI2: Reset CSS</a>\r\n<a href="http://www.iecss.com/">IECSS</a>\r\n\r\n<strong>JavaScript Libraries:</strong>\r\n\r\nI definitely recommend everyone to learn JavaScript as you''ll need it to be a really effective client-side developer. With that said, a good JS library will go a long way to making your development faster and much more stable. These libraries are all very mature and dramatically help to abstract the complexities of cross-browser development. My personal favorite is <a href="http://jquery.com/">jQuery</a>, of which I''m a member of the project team.\r\n\r\n<a href="http://jquery.com/">jQuery</a>\r\n<a href="http://jqueryui.com">jQuery UI</a>\r\n<a href="http://prototypejs.org/">Prototype</a>\r\n<a href="http://mootools.net/">MooTools</a>\r\n<a href="http://dojotoolkit.org/">Dojo</a>\r\n<a href="http://developer.yahoo.com/yui/">YUI</a>\r\n<a href="http://javascriptmvc.com/">JavaScriptMVC</a>\r\n<a href="http://qooxdoo.org/">qooxdoo</a>\r\n<a href="http://extjs.com">Ext JS</a>\r\n<a href="http://labs.adobe.com/technologies/spry/">Adobe Spry</a>\r\n<a href="http://raphaeljs.com/">Raphael.js</a> - simplifies working with vector graphics on the web\r\n<a href="http://labjs.com/">LabJS Dynamic Script Loader</a> - Allows execution and load management of JavaScript files\r\n<a href="http://brianleroux.github.com/lawnchair/">Lawnchair</a> - A lightweight client-side JSON document store\r\n<a href="http://www.thomasfrank.se/sessionvars.html">Sessvars.js</a> - Client-side session data management solution\r\n<a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/16/introduction-to-the-reactive-extensions-to-javascript.aspx">Reactive Extensions For JS</a>\r\n<a href="http://beebole.com/pure">PURE JS Templating Lib</a>\r\n<a href="http://documentcloud.github.com/underscore/">Underscore.js</a> - Utility lib for jQuery that provides a ton of extended functionality\r\n\r\n<strong>JavaScript Minifiers</strong>\r\n\r\nEvery byte counts when you''re sending files via HTTP and best practices dictate that on a production, you need to optimize all of your files to minimize page load times. Compressing JavaScript code is one of the easiest ways to do that and these tools will help. On the jQuery project, we''ve started using Google''s Closure compiler because it''s generated the best compression. Try all of them out to see which suits you best.\r\n\r\n<a href="http://developer.yahoo.com/yui/compressor/">YUI compressor</a>\r\n<a href="http://code.google.com/closure/compiler/">Closure compiler</a>\r\n<a href="http://www.crockford.com/javascript/jsmin.html">JSMIN</a>\r\n<a href="http://dean.edwards.name/packer/">Dean Edward''s Packer</a>\r\n<a href="http://aspnet.codeplex.com/releases/view/40584">Microsoft Ajax Minifer</a> \r\n<a href="http://shrinksafe.dojotoolkit.org/">Dojo Shrinksafe</a>\r\n\r\n<strong>JavaScript Shells</strong>\r\n\r\nThere are times when you just want to test a snippet of code without actually going through the trouble of creating a full page. That''s where JavaScript shells shine. JSFiddle and JSBin both rock because apart from supporting plain ole JS, they also allow you to include a host of libraries including jQuery, MooTools, & Dojo. \r\n\r\n<a href="http://jsfiddle.net/">jsfiddle.net</a> \r\n<a href="http://jsbin.com/">JSBin</a>\r\n<a href="http://mootools.net/shell/">mootools.net/shell</a> <em>(MooTools-specific)</em>\r\n\r\n<strong>Color Management:</strong>\r\n\r\nAs a programmer, I''m insanely color scheme challenged. I''m inclined to mix yellow with mauve causing a concerted moan to occur across the design community. Luckily, these tools help you choose web safe color schemes that are not only consistent but won''t burn the eyeballs off your site visitors. :)\r\n\r\n<a href="http://www.colourlovers.com/">Colourlovers</a>\r\n<a href="http://kuler.adobe.com/">Kuler</a>\r\n\r\n<strong>Editors and IDEs:</strong>\r\n\r\nI work at Microsoft so you would expect me to be a Visual Studio whiz. Not so. Only recently starting at MS, I''ve only dipped my toe in the VS waters. What I''ve seen though has impressed me but I still have a long way to go before I understand it. If you''re on a Mac, though, I do highly recommend both TextMate and Coda. Both are truly awesome. I''ve used Coda a little more because I liked the UI of it a little better than TextMate''s but TM''s bundle system and ecosystem is amazing. You can get code-complete for just about anything via bundles. For Windows, Notepad++ has been just awesome. I wish it had built-in FTP support like UltraEdit. \r\n\r\n<a href="http://msdn.microsoft.com/en-us/vstudio/default.aspx">Visual Studio</a>\r\n<a href="http://www.microsoft.com/expression/">Expression</a>\r\n<a href="http://macromates.com/">TextMate</a>\r\n<a href="http://panic.com/coda/">Coda</a>\r\n<a href="http://www.ultraedit.com/">UltraEdit</a>\r\n<a href="http://www.activestate.com/komodo/">Komodo IDE</a>\r\n<a href="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a>\r\n<a href="http://notepad2.com/">Notepad2</a>\r\n<a href="http://www.barebones.com/products/bbedit/">BBEdit</a>\r\n<a href="http://www.aptana.org/">Aptana</a>\r\n<a href="http://macrabbit.com/espresso/">Espresso</a>\r\n<a href="http://www.sublimetext.com/">Sublime Text</a>\r\n<a href="http://www.jetbrains.com/webstorm/index.html">WebStorm</a>\r\n<a href="http://www.vim.org/">VIM</a>\r\n<a href="http://www.eclipse.org/">Eclipse</a>\r\n<a href="http://netbeans.org/">Netbeans</a>\r\n<a href="http://www.geany.org/">Geany</a>\r\n\r\n<strong>Wireframing:</strong>\r\n\r\nI know some of you are cowboys (or cowgirls) and you just want to start hacking. Well, for the truly impatient, these tools at least let you wireframe your pages quickly and easily. I''ve used Balsamiq and FlairBuilder and both rock. It seems that FlairBuilder is really cranking it up with some nice features. Both are Adobe AIR apps which means they''re cross-platform.\r\n\r\n<a href="http://www.omnigroup.com/">Omnigraffle</a>\r\n<a href="http://www.balsamiq.com/">Balsamiq</a>\r\n<a href="http://www.flairbuilder.com/">FlairBuilder</a>\r\n<a href="http://office.microsoft.com/en-us/visio/default.aspx">Visio</a>\r\n<a href="http://www.axure.com/">Axure</a>\r\n<a href="http://wireframesketcher.com/">WireframeSketcher</a>\r\n\r\n<strong>Browser Testing:</strong>\r\n\r\nI''ve been fortunate to have multiple OS versions over the years. My wife would definitely prefer for me to have a couple of less PCs sitting around but it''s let me test out my web apps on a variety of platforms, browsers and OSes. Shoot, I even have a version of IE6! For those with less hardware, these services should definitely help. Note that services like BrowserCam & Gomez are subscription-based but worth the cash if you can afford it.\r\n\r\n<a href="http://www.browsercam.com/Default2.aspx">BrowserCam</a>\r\n<a href="https://browserlab.adobe.com/index.html">Adobe BrowserLab</a>\r\n<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&displaylang=en">Microsoft Expression Web SuperPreview for IE</a>\r\n<a href="http://www.gomez.com/products-solutions/products/cross-browser-testing/">Gomez</a>\r\n<a href="http://tredosoft.com/Multiple_IE">TredoSoft MultipleIE</a>\r\n<a href="http://crossbrowsertesting.com/">CrossBrowserTesting</a>\r\n<a href="http://michelf.com/projects/multi-safari/">Multi-Safari</a>\r\n<a href="http://www.browserscope.org/">Browserscope</a>\r\n<a href="http://stevesouders.com/cuzillion/help.php">Cuzillion</a>\r\n<a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a>\r\n\r\n<strong>Testing (based on the <a href="http://ejohn.org/blog/which-unit-testing-framework/">list by John Resig</a>):</strong>\r\n\r\nThis was a list I snagged from John Resig. Obviously, he''s done a boatload of testing so I know this list rocks. JSLint is the old mainstay created by Douglas Crockford but other have really become increasingly essential to good testing. jQuery developers should definitely be looking at QUnit & jQuery-Lint. The most complete tool is Selenium but it does have a bit of a learning curve. If you''re into determining JS performance, checkout SunSpider, Dromaeo, Google''s V8 Benchmark and JSLitmus. These measure the performance of the JS engine, not your apps.\r\n\r\n<a href="http://jslint.com/">JSLint</a>\r\n<a href="http://github.com/jamespadolsey/jQuery-Lint">jQuery Lint</a>\r\n<a href="http://www.jsunit.net/">JSUnit</a>\r\n<a href="http://seleniumhq.org/projects/core/">Selenium Core</a>\r\n<a href="http://jania.pe.kr/aw/moin.cgi/JSSpec">JSSpec (MooTools)</a>\r\n<a href="http://github.com/tobie/unittest_js/tree/master">UnitTestJS (Prototype)</a>\r\n<a href="http://docs.jquery.com/QUnit">QUnit (jQuery)</a>\r\n<a href="http://docs.dojocampus.org/quickstart/doh">DOH Unit Testing (Dojo)</a>\r\n<a href="http://developer.yahoo.com/yui/yuitest/">YUITest 2</a>\r\n<a href="http://developer.yahoo.com/yui/3/test/">YUITest 3</a>\r\n<a href="https://developer.mozilla.org/En/Mochitest">Mochitest</a>\r\n<a href="http://github.com/nkallen/screw-unit/tree/master">ScrewUnit</a>\r\n<a href="http://jsunittest.com/">JsUnitTest</a>\r\n<a href="http://jsunity.com/">jsUnity</a> \r\n<a href="http://code.google.com/p/js-test-driver/">JsTestDriver</a>\r\n<a href="http://www.thefrontside.net/crosscheck">Crosscheck</a>\r\n<a href="http://groups.google.com/group/envjs">Env.js</a> \r\n<a href="http://fireunit.org/">FireUnit</a>\r\n<a href="http://validator.w3.org/">W3C Markup Validation Service</a>\r\n<a href="http://jigsaw.w3.org/css-validator/">W3C CSS Validation Service</a>\r\n<a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html">SunSpider</a>\r\n<a href="http://code.google.com/apis/v8/run.html">V8 Benchmark</a>\r\n<a href="http://v2.dromaeo.com/">Dromaeo</a>\r\n<a href="http://broofa.com/Tools/JSLitmus/">JSLitmus</a>\r\n<a href="http://users.skynet.be/mgueury/mozilla/">HTML Validator Firefox Add-on</a>\r\n\r\n<strong>Documentation:</strong>\r\n\r\n<a href="http://developer.yahoo.com/yui/">Yahoo UI Docs</a>\r\n<a href="http://www.programmableweb.com/">APIs</a> - Most comprehensive list of APIs on the web\r\n<a href="http://api.jquery.com/">jQuery Docs</a>\r\n<a href="http://jqueryui.com/demos/">jQuery UI Docs</a>\r\n<a href="http://mootools.net/docs/core">MooTools Docs</a>\r\n<a href="http://api.prototypejs.org/">Prototype Docs</a>\r\n<a href="http://dojotoolkit.org/documentation/">Dojo Docs</a>\r\n<a href="http://json.org/">JSON Reference</a>\r\n<a href="http://en.wikipedia.org/wiki/JSON#JSONP">JSONP</a>\r\n\r\n<h2>Server-Side JavaScript</h2>\r\n\r\n<a href="http://www.mozilla.org/rhino/">Rhino</a>\r\n<a href="http://nodejs.org/">Node.js</a>\r\n<a href="http://narwhaljs.org/">Narwhal.js</a>\r\n<a href="http://commonjs.org/">CommonJS Standards Project</a>\r\n<a href="http://o.sitepen.com/labs/persevere.php">Persevere</a>\r\n<a href="http://en.wikipedia.org/wiki/Comet_%28programming%29">Comet</a>\r\n\r\n<h2>Books</h2>\r\n\r\nThe books below are really a great selection. I have many in my own library and every so often re-read them I''m currently reading <a href="http://www.amazon.com/gp/product/059680279X?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=059680279X">High Performance JavaScript</a> by Nicholas Zakas. Another great book is Stoyan Stefanov''s <a href="http://www.amazon.com/gp/product/1847194141?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1847194141">Object-Oriented JavaScript: Create scalable, reusable high-quality JavaScript applications and libraries</a>. I also highly recommend Steve Souders performance book at the bottom of the list. They''re basically the definitive sources for optimizing your web apps.\r\n\r\n<strong>JavaScript/DOM:</strong>\r\n<ul>\r\n<li><a href="http://www.amazon.com/gp/product/0596101996?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596101996">JavaScript: The Definitive Guide</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=0596101996" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/0596517742?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596517742">JavaScript: The Good Parts</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=0596517742" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/047022780X?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=047022780X">Professional JavaScript for Web Developers (Wrox Programmer to Programmer)</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=047022780X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/1590595335?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1590595335">DOM Scripting: Web Design with JavaScript and the Document Object Model</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1590595335" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/1590598563?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1590598563">AdvancED DOM Scripting: Dynamic Web Design Techniques</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1590598563" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/1590596803?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1590596803">Beginning JavaScript with DOM Scripting and Ajax: From Novice to Professional (Beginning: from Novice to Professional)</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1590596803" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/1847194141?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1847194141">Object-Oriented JavaScript: Create scalable, reusable high-quality JavaScript applications and libraries</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1847194141" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/1590597273?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1590597273">Pro JavaScript Techniques</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1590597273" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/193398869X?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=193398869X">Secrets of the JavaScript Ninja</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=193398869X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/0321491939?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0321491939">Ajax Security</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=0321491939" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/0321423305?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0321423305">ppk on JavaScript, 1/e</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=0321423305" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/1590597648?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1590597648">Accelerated DOM Scripting with Ajax, APIs, and Libraries</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1590597648" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/059680279X?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=059680279X">High Performance JavaScript (Build Faster Web Application Interfaces)</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=059680279X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />\r\n</li>\r\n</ul>\r\n\r\n<strong>JavaScript Libraries:</strong>\r\n<ul>\r\n<li><a href="http://www.amazon.com/gp/product/0596159773?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596159773">jQuery Cookbook: Solutions & Examples for jQuery Developers (Animal Guide)</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=0596159773" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/1847196705?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1847196705">Learning jQuery 1.3</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1847196705" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/1935182323?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1935182323">jQuery in Action, Second Edition</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1935182323" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/1847199720?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1847199720">jQuery UI 1.7: The User Interface Library for jQuery</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1847199720" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n	<li><a href="http://www.rebeccamurphey.com/jqfundamentals/">Rebecca Murphey''s jQuery Fundamentals Training Materials (Creative Commons License)</a></li>\r\n\r\n\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/1934356115?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1934356115">Mastering Dojo: JavaScript and Ajax Tools for Great Web Experiences (Pragmatic Programmers)</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1934356115" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/1430210664?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430210664">Practical Dojo Projects (Practical Projects)</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1430210664" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/0470452021?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0470452021">Concise Guide to Dojo (Wrox Programmer to Programmer)</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=0470452021" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/0596516487?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596516487">Dojo: The Definitive Guide</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=0596516487" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/0321605128?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0321605128">The Dojo Toolkit: Visual QuickStart Guide</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=0321605128" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/1430225211?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430225211">Getting StartED with Dojo</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1430225211" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/1847194583?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1847194583">MooTools 1.2 Beginner''s Guide</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1847194583" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/1430209836?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430209836">MooTools Essentials: The Official MooTools Reference for JavaScript™ and Ajax Development (Firstpress)</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1430209836" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />\r\n</li>\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/1590599195?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1590599195">Practical Prototype and script.aculo.us (Expert''s Voice in Web Development)</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1590599195" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/1934356018?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1934356018">Prototype and script.aculo.us: You Never Knew JavaScript Could Do This! (Pragmatic Programmers)</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1934356018" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />\r\n</li>\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/1933988037?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1933988037">Prototype and Scriptaculous in Action [Ajax]</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1933988037" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/1847192327?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1847192327">Learning the Yahoo! User Interface library: Develop your next generation web applications with the YUI JavaScript development library.</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1847192327" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/1847195148?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1847195148">Learning Ext JS</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1847195148" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />\r\n</li>\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/1847198708?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1847198708">Ext JS 3.0 Cookbook</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1847198708" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n	<li><a href="http://www.amazon.com/gp/product/1935182110?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1935182110">Ext JS in Action</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1935182110" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />\r\n</li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/047038459X?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=047038459X">Professional JavaScript Frameworks: Prototype,YUI, ExtJS, Dojo and MooTools (Wrox Programmer to Programmer)</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=047038459X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n</ul>\r\n\r\n\r\n\r\n<strong>HTML & CSS:</strong>\r\n<ul>\r\n<li><a href="http://www.amazon.com/gp/product/1590598040?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1590598040">Pro CSS and HTML Design Patterns</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1590598040" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/1430219203?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430219203">Web Standards Solutions: The Markup and Style Handbook, Special Edition</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1430219203" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/0321509021?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0321509021">Bulletproof Web Design: Improving flexibility and protecting against worst-case scenarios with XHTML and CSS (2nd Edition)</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=0321509021" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.sitepoint.com/books/cssdesign1/?SID=82b54f50488243b44b6b9c7acb10731a">The Art & Science Of CSS</a>\r\n<a href="http://www.sitepoint.com/books/css2/?SID=82b54f50488243b44b6b9c7acb10731a">HTML Utopia: Designing Without Tables Using CSS</a></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/0980455278?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0980455278">Build Your Own Website The Right Way Using HTML & CSS, 2nd Edition</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=0980455278" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/1600330045?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1600330045">Head First HTML with CSS & XHTML</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=1600330045" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n	<li><a href="http://www.webstepbook.com/">Web Programming Step by Step</a></li>\r\n\r\n</ul>\r\n\r\n<strong>Performance:</strong>\r\n<ul>\r\n<li><a href="http://www.amazon.com/gp/product/0596529309?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596529309">High Performance Web Sites: Essential Knowledge for Front-End Engineers</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=0596529309" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n\r\n<li><a href="http://www.amazon.com/gp/product/0596522304?ie=UTF8&tag=rebasbl-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596522304">Even Faster Web Sites: Performance Best Practices for Web Developers</a><img src="http://www.assoc-amazon.com/e/ir?t=rebasbl-20&l=as2&o=1&a=0596522304" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>\r\n</ul>\r\n', 'The Big List of JavaScript, CSS, and HTML Development Tools, Libraries, Projects, and Books', 0, '', 'publish', 'open', 'open', '', 'the-big-list-of-javascript-css-and-html-development-tools-libraries-projects-and-books', '', 'http://blog.reybango.com/the-big-list-of-javascript-css-and-html-development-tools-libraries-projects-and-books/\nhttp://jqueryui.com/demos/', '2012-11-13 21:57:50', '2012-11-14 01:57:50', '', 0, 'http://blog.reybango.com/?p=664', 0, 'post', '', 57),
(665, 3, '2010-04-29 13:26:58', '2010-04-29 17:26:58', 'I''ve been meaning to do a roll-up of top JavaScript, CSS & HTML development tools that I use or have been recommended to me and after having lunch with my bud Brian Wilpon today, I realized I just needed to do it. He asked me what some of the newer tools are and I think this is the best way to help him (and the community in general). Here they are by category:\n\nDebugging Tools:\n\nIE 8 Developer Tools (<a href="http://msdn.microsoft.com/en-us/library/dd565628%28VS.85%29.aspx">http://msdn.microsoft.com/en-us/library/dd565628%28VS.85%29.aspx</a>)\nFirebug (<a href="http://getfirebug.com/">http://getfirebug.com/</a>)\nWebKit Web Inspector (<a href="http://trac.webkit.org/wiki/WebInspector">http://trac.webkit.org/wiki/WebInspector</a>)\nFiddler (<a href="http://www.fiddler2.com/fiddler2/">http://www.fiddler2.com/fiddler2/</a>)\nCharles (<a href="http://www.charlesproxy.com/">http://www.charlesproxy.com/</a>)\nService Capture (<a href="http://kevinlangdon.com/serviceCapture/">http://kevinlangdon.com/serviceCapture/</a>)\ndynaTrace (<a href="http://www.dynatrace.com/en/application-performance-management-product.aspx">http://www.dynatrace.com/en/application-performance-management-product.aspx</a>)\ndynaTrace Ajax (<a href="http://ajax.dynatrace.com/pages/">http://ajax.dynatrace.com/pages/</a>)\nWeb Developer’s Toolbar (<a href="http://chrispederick.com/work/web-developer/">http://chrispederick.com/work/web-developer/</a>)\nYSlow <a href="http://developer.yahoo.com/yslow/">http://developer.yahoo.com/yslow/</a>\nPageSpeed <a href="http://code.google.com/speed/page-speed/">http://code.google.com/speed/page-speed/</a>\nLive HTTP Headers <a href="https://addons.mozilla.org/en-US/firefox/addon/3829">https://addons.mozilla.org/en-US/firefox/addon/3829\n</a>\nCSS:\n\nTopStyle http://www.topstyle4.com/\nRapid CSS http://www.blumentals.net/rapidcss/\nXyle http://www.culturedcode.com/xyle/\nStylizer http://www.skybound.ca/stylizer/\nCSSEdit http://www.macrabbit.com/cssedit/\n\nCSS Frameworks:\n\n960 Grid System http://960.gs\nBlueprint CSS Framework http://blueprintcss.org/\nYAML http://www.yaml.de/en/\nYahoo YUI Grids CSS http://developer.yahoo.com/yui/grids/\nTripoli http://devkick.com/lab/tripoli/\n\nCSS Resets:\n\nMeyer Reset by Eric Meyer http://meyerweb.com/eric/tools/css/reset/\nYUI2: Reset CSS http://developer.yahoo.com/yui/reset/\nIECSS http://www.iecss.com/\n\nJavaScript Libraries:\n\njQuery http://jquery.com/\njQuery UI http://jqueryui.com/\nPrototype http://prototypejs.org/\nMooTools http://mootools.net/\nDojo http://dojotoolkit.org/\nYUI http://developer.yahoo.com/yui/\n\nColor Management:\n\nColourlovers http://www.colourlovers.com/\nKuler http://kuler.adobe.com/\n\nEditors and IDEs:\n\nVisual Studio http://msdn.microsoft.com/en-us/vstudio/default.aspx\nExpression http://www.microsoft.com/expression/\nTextMate http://macromates.com/\nCoda http://panic.com/coda/\nUltraEdit http://www.ultraedit.com/\nKomodo IDE http://www.activestate.com/komodo/\nNotepad++ http://notepad-plus.sourceforge.net/uk/site.htm\nBBEdit http://www.barebones.com/products/bbedit/\n\nWireframing:\n\nOmnigraffle http://www.omnigroup.com/\nBalsamiq http://www.balsamiq.com/\nFlairBuilder http://www.flairbuilder.com/\nVisio http://office.microsoft.com/en-us/visio/default.aspx\n\nBrowser Testing:\n\nBrowserCam http://www.browsercam.com/Default2.aspx\nAdobe BrowserLab https://browserlab.adobe.com/index.html\nMicrosoft Expression Web SuperPreview for IE http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&displaylang=en\nGomez http://www.gomez.com/products-solutions/products/cross-browser-testing/\nTredoSoft MultipleIE http://tredosoft.com/Multiple_IE\nCrossBrowserTesting http://crossbrowsertesting.com/\nMulti-Safari http://michelf.com/projects/multi-safari/\nMozilla Labs TestSwarm http://testswarm.com/\nBrowserscope http://www.browserscope.org/\nCuzillion http://stevesouders.com/cuzillion/help.php\nIETester http://www.my-debugbar.com/wiki/IETester/HomePage\n\n\nTesting:\n\nJSLint http://jslint.com/\njQuery Lint http://github.com/jamespadolsey/jQuery-Lint\nJSUnit http://www.jsunit.net/\nSelenium Core http://seleniumhq.org/projects/core/\nJSSpec (MooTools) http://jania.pe.kr/aw/moin.cgi/JSSpec\nUnitTestJS (Prototype) http://github.com/tobie/unittest_js/tree/master\nQUnit (jQuery) http://docs.jquery.com/QUnit\nDOH Unit Testing (Dojo) http://docs.dojocampus.org/quickstart/doh\nYUITest 2 http://developer.yahoo.com/yui/yuitest/\nYUITest 3 http://developer.yahoo.com/yui/3/test/\nMochitest https://developer.mozilla.org/En/Mochitest\nScrewUnit http://github.com/nkallen/screw-unit/tree/master\nJsUnitTest http://jsunittest.com/\njsUnity http://jsunity.com/ \nJsTestDriver http://code.google.com/p/js-test-driver/\nCrosscheck http://www.thefrontside.net/crosscheck\nEnv.js http://groups.google.com/group/envjs \nFireUnit http://fireunit.org/\nW3C Markup Validation Service http://validator.w3.org/\nW3C CSS Validation Service http://jigsaw.w3.org/css-validator/\nSunSpider http://www2.webkit.org/perf/sunspider-0.9/sunspider.html\nV8 Benchmark http://code.google.com/apis/v8/run.html\nDromaeo http://v2.dromaeo.com/\nJSLitmus http://broofa.com/Tools/JSLitmus/\n\nMisc:\n\nAPIs: http://www.programmableweb.com/\njQuery Docs: http://api.jquery.com/\njQuery UI Docs: http://jqueryui.com/demos/\nMooTools Docs: http://mootools.net/docs/core\nPrototype Docs: http://api.prototypejs.org/\nDojo Docs: http://dojotoolkit.org/documentation/\nJavaScript & HTML Reference http://www.w3schools.com/jsref/default.asp\nJSON Reference http://json.org/\nJSONP http://en.wikipedia.org/wiki/JSON#JSONP\n', '', 0, '', 'inherit', 'open', 'open', '', '664-revision', '', '', '2010-04-29 13:26:58', '2010-04-29 17:26:58', '', 664, 'http://blog.reybango.com/2010/04/29/664-revision/', 0, 'revision', '', 0),
(671, 3, '2010-04-29 14:03:36', '2010-04-29 18:03:36', 'I''ve been meaning to do a roll-up of top JavaScript, CSS & HTML development tools that I use or have been recommended to me and after having lunch with my bud Brian Wilpon today, I realized I just needed to do it. He asked me what some of the newer tools are and I think this is the best way to help him (and the community in general). It''s definitely not an all-inclusive list so if you see some that you feel I should add or remove, let me know in the comments.\n\nHere they are by category:\n\n<strong>Debugging Tools:</strong>\n\n<a href="http://msdn.microsoft.com/en-us/library/dd565628%28VS.85%29.aspx">IE 8 Developer Tools</a>\n<a href="http://getfirebug.com/">Firebug</a>\n<a href="http://trac.webkit.org/wiki/WebInspector">WebKit Web Inspector</a>\n<a href="http://www.fiddler2.com/fiddler2/">Fiddler</a> - HTTP Sniffer. Great for seeing Ajax requests.\n<a href="http://www.charlesproxy.com/">Charles</a> - HTTP Sniffer. Great for seeing Ajax requests. (my personal fav)\n<a href="http://kevinlangdon.com/serviceCapture/">Service Capture</a> - HTTP Sniffer. Great for seeing Ajax requests.\n<a href="http://ajax.dynatrace.com/pages/">dynaTrace Ajax</a>\n<a href="http://chrispederick.com/work/web-developer/">Web Developer’s Toolbar</a> - All purpose Firefox toolbar to inspect every\n<a href="http://developer.yahoo.com/yslow/">YSlow</a>\n<a href="http://code.google.com/speed/page-speed/">PageSpeed</a>\n<a href="https://addons.mozilla.org/en-US/firefox/addon/3829">Live HTTP Headers</a>\n\n<strong>CSS Editors:</strong>\n\n<a href="http://www.topstyle4.com/">TopStyle</a>\n<a href="http://www.blumentals.net/rapidcss/">Rapid CSS</a>\n<a href="http://www.culturedcode.com/xyle/">Xyle</a>\n<a href="http://www.culturedcode.com/xyle/">Stylizer</a>\n<a href="http://www.macrabbit.com/cssedit/">CSSEdit</a>\n\nCSS Frameworks:\n\n<a href="http://960.gs">960 Grid System</a>\n<a href="http://blueprintcss.org/">Blueprint CSS Framework</a>\n<a href="http://www.yaml.de/en/">YAML</a>\n<a href="http://developer.yahoo.com/yui/grids/">Yahoo YUI Grids CSS</a>\n<a href="http://devkick.com/lab/tripoli/">Tripoli</a>\n\nCSS Resets:\n\n<a href="http://meyerweb.com/eric/tools/css/reset/">Meyer Reset by Eric Meyer</a>\n<a href="http://developer.yahoo.com/yui/reset/">YUI2: Reset CSS</a>\n<a href="http://www.iecss.com/">IECSS</a>\n\nJavaScript Libraries:\n\n<a href="http://jquery.com/">jQuery</a>\n<a href="http://jqueryui.com">jQuery UI</a>\n<a href="http://prototypejs.org/">Prototype</a>\n<a href="http://mootools.net/">MooTools</a>\n<a href="http://dojotoolkit.org/">Dojo</a>\n<a href="http://developer.yahoo.com/yui/">YUI</a>\n<a href="http://javascriptmvc.com/">JavaScriptMVC</a>\n<a href="http://raphaeljs.com/">Raphael.js</a> - simplifies working with vector graphics on the web\n<a href="http://labjs.com/">LabJS Dynamic Script Loader</a> - Allows execution and load management of JavaScript files\n\nColor Management:\n\n<a href="http://www.colourlovers.com/">Colourlovers</a>\n<a href="http://kuler.adobe.com/">Kuler</a>\n\nEditors and IDEs:\n\n<a href="http://msdn.microsoft.com/en-us/vstudio/default.aspx">Visual Studio</a>\n<a href="http://www.microsoft.com/expression/">Expression</a>\n<a href="http://macromates.com/">TextMate</a>\n<a href="http://panic.com/coda/">Coda</a>\n<a href="http://www.ultraedit.com/">UltraEdit</a>\n<a href="http://www.activestate.com/komodo/">Komodo IDE</a>\n<a href="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a>\n<a href="http://www.barebones.com/products/bbedit/">BBEdit</a>\n\nWireframing:\n\n<a href="http://www.omnigroup.com/">Omnigraffle</a>\n<a href="http://www.balsamiq.com/">Balsamiq</a>\n<a href="http://www.flairbuilder.com/">FlairBuilder</a>\n\nBrowser Testing:\n\n<a href="http://www.browsercam.com/Default2.aspx">BrowserCam</a>\n<a href="https://browserlab.adobe.com/index.html">Adobe BrowserLab</a>\n<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&displaylang=en">Microsoft Expression Web SuperPreview for IE</a>\n<a href="http://www.gomez.com/products-solutions/products/cross-browser-testing/">Gomez</a>\n<a href="http://tredosoft.com/Multiple_IE">TredoSoft MultipleIE</a>\n<a href="http://crossbrowsertesting.com/">CrossBrowserTesting</a>\n<a href="http://michelf.com/projects/multi-safari/">Multi-Safari</a>\n<a href="http://www.browserscope.org/">Browserscope</a>\n<a href="http://stevesouders.com/cuzillion/help.php">Cuzillion</a>\n<a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a>\n\nTesting:\n\n<a href="http://jslint.com/">JSLint</a>\n<a href="http://github.com/jamespadolsey/jQuery-Lint">jQuery Lint</a>\n<a href="http://www.jsunit.net/">JSUnit</a>\n<a href="http://seleniumhq.org/projects/core/">Selenium Core</a>\n<a href="http://jania.pe.kr/aw/moin.cgi/JSSpec">JSSpec (MooTools)</a>\n<a href="http://github.com/tobie/unittest_js/tree/master">UnitTestJS (Prototype)</a>\n<a href="http://docs.jquery.com/QUnit">QUnit (jQuery)</a>\n<a href="http://docs.dojocampus.org/quickstart/doh">DOH Unit Testing (Dojo)</a>\n<a href="http://developer.yahoo.com/yui/yuitest/">YUITest 2</a>\n<a href="http://developer.yahoo.com/yui/3/test/">YUITest 3</a>\n<a href="https://developer.mozilla.org/En/Mochitest">Mochitest</a>\n<a href="http://github.com/nkallen/screw-unit/tree/master">ScrewUnit</a>\n<a href="http://jsunittest.com/">JsUnitTest</a>\n<a href="http://jsunity.com/">jsUnity</a> \n<a href="http://code.google.com/p/js-test-driver/">JsTestDriver</a>\n<a href="http://www.thefrontside.net/crosscheck">Crosscheck</a>\n<a href="http://groups.google.com/group/envjs">Env.js</a> \n<a href="http://fireunit.org/">FireUnit</a>\n<a href="http://validator.w3.org/">W3C Markup Validation Service</a>\n<a href="http://jigsaw.w3.org/css-validator/">W3C CSS Validation Service</a>\n<a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html">SunSpider</a>\n<a href="http://code.google.com/apis/v8/run.html">V8 Benchmark</a>\n<a href="http://v2.dromaeo.com/">Dromaeo</a>\n<a href="http://broofa.com/Tools/JSLitmus/">JSLitmus</a>\n\nDocumentation:\n\n<a href="http://www.programmableweb.com/">APIs</a>\n<a href="http://api.jquery.com/">jQuery Docs</a>\n<a href="http://jqueryui.com/demos/">jQuery UI Docs</a>\n<a href="http://mootools.net/docs/core">MooTools Docs</a>\n<a href="http://api.prototypejs.org/">Prototype Docs</a>\n<a href="http://dojotoolkit.org/documentation/">Dojo Docs</a>\n<a href="http://json.org/">JSON Reference</a>\n<a href="http://en.wikipedia.org/wiki/JSON#JSONP">JSONP</a>', 'The Big List of JavaScript, CSS & HTML Development Tools, Libraries and Projects', 0, '', 'inherit', 'open', 'open', '', '664-revision-7', '', '', '2010-04-29 14:03:36', '2010-04-29 18:03:36', '', 664, 'http://blog.reybango.com/2010/04/29/664-revision-7/', 0, 'revision', '', 0);
INSERT INTO `wp_dyxkdh_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_category`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES
(669, 3, '2010-04-29 13:53:51', '2010-04-29 17:53:51', 'I''ve been meaning to do a roll-up of top JavaScript, CSS & HTML development tools that I use or have been recommended to me and after having lunch with my bud Brian Wilpon today, I realized I just needed to do it. He asked me what some of the newer tools are and I think this is the best way to help him (and the community in general). It''s definitely not an all-inclusive list so if you see some that you feel I should add or remove, let me know in the comments.\r\n\r\nHere they are by category:\r\n\r\nDebugging Tools:\r\n\r\n<a href="http://msdn.microsoft.com/en-us/library/dd565628%28VS.85%29.aspx">IE 8 Developer Tools</a>\r\n<a href="http://getfirebug.com/">Firebug</a>\r\n<a href="http://trac.webkit.org/wiki/WebInspector">WebKit Web Inspector</a>\r\n<a href="http://www.fiddler2.com/fiddler2/">Fiddler</strong> - http://www.fiddler2.com/fiddler2/</a>\r\n<a href="http://www.charlesproxy.com/">Charles</a> - http://www.charlesproxy.com/</a>\r\n<a href="http://kevinlangdon.com/serviceCapture/">Service Capture</a>\r\n<a href="http://ajax.dynatrace.com/pages/">dynaTrace Ajax</a>\r\n<a href="http://chrispederick.com/work/web-developer/">Web Developer’s Toolbar</a>\r\n<a href="http://developer.yahoo.com/yslow/">YSlow</a>\r\n<a href="http://code.google.com/speed/page-speed/">PageSpeed</a>\r\n<a href="https://addons.mozilla.org/en-US/firefox/addon/3829">Live HTTP Headers</a>\r\n\r\nCSS Editors:\r\n\r\n<a href="http://www.topstyle4.com/">TopStyle</a>\r\n<a href="http://www.blumentals.net/rapidcss/">Rapid CSS</a>\r\n<a href="http://www.culturedcode.com/xyle/">Xyle</a>\r\n<a href="http://www.culturedcode.com/xyle/">Stylizer</a>\r\n<a href="http://www.macrabbit.com/cssedit/">CSSEdit</a>\r\n\r\nCSS Frameworks:\r\n\r\n<a href="http://960.gs">960 Grid System</a>\r\n<a href="http://blueprintcss.org/">Blueprint CSS Framework</a>\r\n<a href="http://www.yaml.de/en/">YAML</a>\r\n<a href="http://developer.yahoo.com/yui/grids/">Yahoo YUI Grids CSS</a>\r\n<a href="http://devkick.com/lab/tripoli/">Tripoli</a>\r\n\r\nCSS Resets:\r\n\r\n<a href="http://meyerweb.com/eric/tools/css/reset/">Meyer Reset by Eric Meyer</a>\r\n<a href="http://developer.yahoo.com/yui/reset/">YUI2: Reset CSS</a>\r\n<a href="http://www.iecss.com/">IECSS</a>\r\n\r\nJavaScript Libraries:\r\n\r\n<a href="http://jquery.com/">jQuery</a>\r\n<a href="http://jqueryui.com">jQuery UI</a>\r\n<a href="http://prototypejs.org/">Prototype</a>\r\n<a href="http://mootools.net/">MooTools</a>\r\n<a href="http://dojotoolkit.org/">Dojo</a>\r\n<a href="http://developer.yahoo.com/yui/">YUI</a>\r\n<a href="http://labjs.com/">LabJS Dynamic Script Loader</a>\r\n\r\nColor Management:\r\n\r\n<a href="http://www.colourlovers.com/">Colourlovers</a>\r\n<a href="http://kuler.adobe.com/">Kuler</a>\r\n\r\nEditors and IDEs:\r\n\r\n<a href="http://msdn.microsoft.com/en-us/vstudio/default.aspx">Visual Studio</a>\r\n<a href="http://www.microsoft.com/expression/">Expression</a>\r\n<a href="http://macromates.com/">TextMate</a>\r\n<a href="http://panic.com/coda/">Coda</a>\r\n<a href="http://www.ultraedit.com/">UltraEdit</a>\r\n<a href="http://www.activestate.com/komodo/">Komodo IDE</a>\r\n<a href="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a>\r\n<a href="http://www.barebones.com/products/bbedit/">BBEdit</a>\r\n\r\nWireframing:\r\n\r\n<a href="http://www.omnigroup.com/">Omnigraffle</a>\r\n<a href="http://www.balsamiq.com/">Balsamiq</a>\r\n<a href="http://www.flairbuilder.com/">FlairBuilder</a>\r\n\r\nBrowser Testing:\r\n\r\n<a href="http://www.browsercam.com/Default2.aspx">BrowserCam</a>\r\n<a href="https://browserlab.adobe.com/index.html">Adobe BrowserLab</a>\r\n<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&displaylang=en">Microsoft Expression Web SuperPreview for IE</a>\r\n<a href="http://www.gomez.com/products-solutions/products/cross-browser-testing/">Gomez</a>\r\n<a href="http://tredosoft.com/Multiple_IE">TredoSoft MultipleIE</a>\r\n<a href="http://crossbrowsertesting.com/">CrossBrowserTesting</a>\r\n<a href="http://michelf.com/projects/multi-safari/">Multi-Safari</a>\r\n<a href="http://www.browserscope.org/">Browserscope</a>\r\n<a href="http://stevesouders.com/cuzillion/help.php">Cuzillion</a>\r\n<a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a>\r\n\r\nTesting:\r\n\r\nJSLint <a href="http://jslint.com/">http://jslint.com/</a>\r\njQuery Lint <a href="http://github.com/jamespadolsey/jQuery-Lint">http://github.com/jamespadolsey/jQuery-Lint</a>\r\nJSUnit <a href="http://www.jsunit.net/">http://www.jsunit.net/</a>\r\nSelenium Core <a href="http://seleniumhq.org/projects/core/">http://seleniumhq.org/projects/core/</a>\r\nJSSpec (MooTools) <a href="http://jania.pe.kr/aw/moin.cgi/JSSpec">http://jania.pe.kr/aw/moin.cgi/JSSpec</a>\r\nUnitTestJS (Prototype) <a href="http://github.com/tobie/unittest_js/tree/master">http://github.com/tobie/unittest_js/tree/master</a>\r\nQUnit (jQuery) <a href="http://docs.jquery.com/QUnit">http://docs.jquery.com/QUnit</a>\r\nDOH Unit Testing (Dojo) <a href="http://docs.dojocampus.org/quickstart/doh">http://docs.dojocampus.org/quickstart/doh</a>\r\nYUITest 2 <a href="http://developer.yahoo.com/yui/yuitest/">http://developer.yahoo.com/yui/yuitest/</a>\r\nYUITest 3 <a href="http://developer.yahoo.com/yui/3/test/">http://developer.yahoo.com/yui/3/test/</a>\r\nMochitest https://developer.mozilla.org/En/Mochitest\r\nScrewUnit <a href="http://github.com/nkallen/screw-unit/tree/master">http://github.com/nkallen/screw-unit/tree/master</a>\r\nJsUnitTest <a href="http://jsunittest.com/">http://jsunittest.com/</a>\r\njsUnity <a href="http://jsunity.com/">http://jsunity.com/</a> \r\nJsTestDriver <a href="http://code.google.com/p/js-test-driver/">http://code.google.com/p/js-test-driver/</a>\r\nCrosscheck <a href="http://www.thefrontside.net/crosscheck">http://www.thefrontside.net/crosscheck</a>\r\nEnv.js <a href="http://groups.google.com/group/envjs">http://groups.google.com/group/envjs</a> \r\nFireUnit <a href="http://fireunit.org/">http://fireunit.org/</a>\r\nW3C Markup Validation Service <a href="http://validator.w3.org/">http://validator.w3.org/</a>\r\nW3C CSS Validation Service <a href="http://jigsaw.w3.org/css-validator/">http://jigsaw.w3.org/css-validator/</a>\r\nSunSpider <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html">http://www2.webkit.org/perf/sunspider-0.9/sunspider.html</a>\r\nV8 Benchmark <a href="http://code.google.com/apis/v8/run.html">http://code.google.com/apis/v8/run.html</a>\r\nDromaeo <a href="http://v2.dromaeo.com/">http://v2.dromaeo.com/</a>\r\nJSLitmus <a href="http://broofa.com/Tools/JSLitmus/">http://broofa.com/Tools/JSLitmus/</a>\r\n\r\nMisc:\r\n\r\nAPIs: <a href="http://www.programmableweb.com/">http://www.programmableweb.com/</a>\r\njQuery Docs: <a href="http://api.jquery.com/">http://api.jquery.com/</a>\r\njQuery UI Docs: <a href="http://jqueryui.com/demos/">http://jqueryui.com/demos/</a>\r\nMooTools Docs: <a href="http://mootools.net/docs/core">http://mootools.net/docs/core</a>\r\nPrototype Docs: <a href="http://api.prototypejs.org/">http://api.prototypejs.org/</a>\r\nDojo Docs: <a href="http://dojotoolkit.org/documentation/">http://dojotoolkit.org/documentation/</a>\r\nJSON Reference <a href="http://json.org/">http://json.org/\r\n</a>\r\nJSONP <a href="http://en.wikipedia.org/wiki/JSON#JSONP">http://en.wikipedia.org/wiki/JSON#JSONP</a>\r\n', 'The Big List of JavaScript, CSS & HTML Development Tools, Libraries and Projects', 0, '', 'inherit', 'open', 'open', '', '664-revision-5', '', '', '2010-04-29 13:53:51', '2010-04-29 17:53:51', '', 664, 'http://blog.reybango.com/2010/04/29/664-revision-5/', 0, 'revision', '', 0),
(666, 3, '2010-04-29 13:34:01', '2010-04-29 17:34:01', 'I''ve been meaning to do a roll-up of top JavaScript, CSS & HTML development tools that I use or have been recommended to me and after having lunch with my bud Brian Wilpon today, I realized I just needed to do it. He asked me what some of the newer tools are and I think this is the best way to help him (and the community in general). Here they are by category:\n\nDebugging Tools:\n\nIE 8 Developer Tools (<a href="http://msdn.microsoft.com/en-us/library/dd565628%28VS.85%29.aspx">http://msdn.microsoft.com/en-us/library/dd565628%28VS.85%29.aspx</a>)\nFirebug (<a href="http://getfirebug.com/">http://getfirebug.com/</a>)\nWebKit Web Inspector (<a href="http://trac.webkit.org/wiki/WebInspector">http://trac.webkit.org/wiki/WebInspector</a>)\nFiddler (<a href="http://www.fiddler2.com/fiddler2/">http://www.fiddler2.com/fiddler2/</a>)\nCharles (<a href="http://www.charlesproxy.com/">http://www.charlesproxy.com/</a>)\nService Capture (<a href="http://kevinlangdon.com/serviceCapture/">http://kevinlangdon.com/serviceCapture/</a>)\ndynaTrace (<a href="http://www.dynatrace.com/en/application-performance-management-product.aspx">http://www.dynatrace.com/en/application-performance-management-product.aspx</a>)\ndynaTrace Ajax (<a href="http://ajax.dynatrace.com/pages/">http://ajax.dynatrace.com/pages/</a>)\nWeb Developer’s Toolbar (<a href="http://chrispederick.com/work/web-developer/">http://chrispederick.com/work/web-developer/</a>)\nYSlow <a href="http://developer.yahoo.com/yslow/">http://developer.yahoo.com/yslow/</a>\nPageSpeed <a href="http://code.google.com/speed/page-speed/">http://code.google.com/speed/page-speed/</a>\nLive HTTP Headers <a href="https://addons.mozilla.org/en-US/firefox/addon/3829">https://addons.mozilla.org/en-US/firefox/addon/3829\n</a>\nCSS:\n\nTopStyle <a href="http://www.topstyle4.com/">http://www.topstyle4.com/</a>\nRapid CSS <a href="http://www.blumentals.net/rapidcss/">http://www.blumentals.net/rapidcss/</a>\nXyle <a href="http://www.culturedcode.com/xyle/">http://www.culturedcode.com/xyle/</a>\nStylizer <a href="http://www.skybound.ca/stylizer/">http://www.skybound.ca/stylizer/</a>\nCSSEdit <a href="http://www.macrabbit.com/cssedit/">http://www.macrabbit.com/cssedit/</a>\n\nCSS Frameworks:\n\n960 Grid System <a href="http://960.gs">http://960.gs</a>\nBlueprint CSS Framework <a href="http://blueprintcss.org/">http://blueprintcss.org/</a>\nYAML <a href="http://www.yaml.de/en/">http://www.yaml.de/en/</a>\nYahoo YUI Grids CSS <a href="http://developer.yahoo.com/yui/grids/">http://developer.yahoo.com/yui/grids/</a>\nTripoli <a href="http://devkick.com/lab/tripoli/">http://devkick.com/lab/tripoli/</a>\n\nCSS Resets:\n\nMeyer Reset by Eric Meyer <a href="http://meyerweb.com/eric/tools/css/reset/">http://meyerweb.com/eric/tools/css/reset/</a>\nYUI2: Reset CSS <a href="http://developer.yahoo.com/yui/reset/">http://developer.yahoo.com/yui/reset/</a>\nIECSS <a href="http://www.iecss.com/">http://www.iecss.com/</a>\n\nJavaScript Libraries:\n\njQuery <a href="http://jquery.com/">http://jquery.com/</a>\njQuery UI <a href="http://jqueryui.com">http://jqueryui.com/</a>\nPrototype <a href="http://prototypejs.org/">http://prototypejs.org/</a>\nMooTools <a href="http://mootools.net/">http://mootools.net/</a>\nDojo <a href="http://dojotoolkit.org/">http://dojotoolkit.org/</a>\nYUI <a href="http://developer.yahoo.com/yui/">http://developer.yahoo.com/yui/</a>\n\nColor Management:\n\nColourlovers <a href="http://www.colourlovers.com/">http://www.colourlovers.com/</a>\nKuler <a href="http://kuler.adobe.com/">http://kuler.adobe.com/</a>\n\nEditors and IDEs:\n\nVisual Studio <a href="http://msdn.microsoft.com/en-us/vstudio/default.aspx">http://msdn.microsoft.com/en-us/vstudio/default.aspx</a>\nExpression <a href="http://www.microsoft.com/expression/">http://www.microsoft.com/expression/</a>\nTextMate <a href="http://macromates.com/">http://macromates.com/</a>\nCoda <a href="http://panic.com/coda/">http://panic.com/coda/</a>\nUltraEdit <a href="http://www.ultraedit.com/">http://www.ultraedit.com/</a>\nKomodo IDE <a href="http://www.activestate.com/komodo/">http://www.activestate.com/komodo/</a>\nNotepad++ <a href="http://notepad-plus.sourceforge.net/uk/site.htm">http://notepad-plus.sourceforge.net/uk/site.htm</a>\nBBEdit <a href="http://www.barebones.com/products/bbedit/">http://www.barebones.com/products/bbedit/</a>\n\nWireframing:\n\nOmnigraffle <a href="http://www.omnigroup.com/">http://www.omnigroup.com/</a>\nBalsamiq <a href="http://www.balsamiq.com/">http://www.balsamiq.com/</a>\nFlairBuilder <a href="http://www.flairbuilder.com/">http://www.flairbuilder.com/</a>\n\nBrowser Testing:\n\nBrowserCam <a href="http://www.browsercam.com/Default2.aspx">http://www.browsercam.com/Default2.aspx</a>\nAdobe BrowserLab <a href="https://browserlab.adobe.com/index.html">https://browserlab.adobe.com/index.html</a>\nMicrosoft Expression Web SuperPreview for IE <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&displaylang=en</a>\nGomez <a href="http://www.gomez.com/products-solutions/products/cross-browser-testing/">http://www.gomez.com/products-solutions/products/cross-browser-testing/</a>\nTredoSoft MultipleIE <a href="http://tredosoft.com/Multiple_IE">http://tredosoft.com/Multiple_IE</a>\nCrossBrowserTesting <a href="http://crossbrowsertesting.com/">http://crossbrowsertesting.com/</a>\nMulti-Safari <a href="http://michelf.com/projects/multi-safari/">http://michelf.com/projects/multi-safari/</a>\nBrowserscope <a href="http://www.browserscope.org/">http://www.browserscope.org/</a>\nCuzillion <a href="http://stevesouders.com/cuzillion/help.php">http://stevesouders.com/cuzillion/help.php</a>\nIETester <a href="http://www.my-debugbar.com/wiki/IETester/HomePage">http://www.my-debugbar.com/wiki/IETester/HomePage</a>\n\nTesting:\n\nJSLint <a href="http://jslint.com/">http://jslint.com/</a>\njQuery Lint <a href="http://github.com/jamespadolsey/jQuery-Lint">http://github.com/jamespadolsey/jQuery-Lint</a>\nJSUnit <a href="http://www.jsunit.net/">http://www.jsunit.net/</a>\nSelenium Core <a href="http://seleniumhq.org/projects/core/">http://seleniumhq.org/projects/core/</a>\nJSSpec (MooTools) <a href="http://jania.pe.kr/aw/moin.cgi/JSSpec">http://jania.pe.kr/aw/moin.cgi/JSSpec</a>\nUnitTestJS (Prototype) <a href="http://github.com/tobie/unittest_js/tree/master">http://github.com/tobie/unittest_js/tree/master</a>\nQUnit (jQuery) <a href="http://docs.jquery.com/QUnit">http://docs.jquery.com/QUnit</a>\nDOH Unit Testing (Dojo) <a href="http://docs.dojocampus.org/quickstart/doh">http://docs.dojocampus.org/quickstart/doh</a>\nYUITest 2 <a href="http://developer.yahoo.com/yui/yuitest/">http://developer.yahoo.com/yui/yuitest/</a>\nYUITest 3 <a href="http://developer.yahoo.com/yui/3/test/">http://developer.yahoo.com/yui/3/test/</a>\nMochitest https://developer.mozilla.org/En/Mochitest\nScrewUnit <a href="http://github.com/nkallen/screw-unit/tree/master">http://github.com/nkallen/screw-unit/tree/master</a>\nJsUnitTest <a href="http://jsunittest.com/">http://jsunittest.com/</a>\njsUnity <a href="http://jsunity.com/">http://jsunity.com/</a> \nJsTestDriver <a href="http://code.google.com/p/js-test-driver/">http://code.google.com/p/js-test-driver/</a>\nCrosscheck <a href="http://www.thefrontside.net/crosscheck">http://www.thefrontside.net/crosscheck</a>\nEnv.js <a href="http://groups.google.com/group/envjs">http://groups.google.com/group/envjs</a> \nFireUnit http://fireunit.org/\nW3C Markup Validation Service http://validator.w3.org/\nW3C CSS Validation Service http://jigsaw.w3.org/css-validator/\nSunSpider http://www2.webkit.org/perf/sunspider-0.9/sunspider.html\nV8 Benchmark http://code.google.com/apis/v8/run.html\nDromaeo http://v2.dromaeo.com/\nJSLitmus http://broofa.com/Tools/JSLitmus/\n\nMisc:\n\nAPIs: http://www.programmableweb.com/\njQuery Docs: http://api.jquery.com/\njQuery UI Docs: http://jqueryui.com/demos/\nMooTools Docs: http://mootools.net/docs/core\nPrototype Docs: http://api.prototypejs.org/\nDojo Docs: http://dojotoolkit.org/documentation/\nJavaScript & HTML Reference http://www.w3schools.com/jsref/default.asp\nJSON Reference http://json.org/\nJSONP http://en.wikipedia.org/wiki/JSON#JSONP\n', '', 0, '', 'inherit', 'open', 'open', '', '664-revision-2', '', '', '2010-04-29 13:34:01', '2010-04-29 17:34:01', '', 664, 'http://blog.reybango.com/2010/04/29/664-revision-2/', 0, 'revision', '', 0),
(668, 3, '2010-04-29 13:49:36', '2010-04-29 17:49:36', 'I''ve been meaning to do a roll-up of top JavaScript, CSS & HTML development tools that I use or have been recommended to me and after having lunch with my bud Brian Wilpon today, I realized I just needed to do it. He asked me what some of the newer tools are and I think this is the best way to help him (and the community in general). It''s definitely not an all-inclusive list so if you see some that you feel I should add or remove, let me know in the comments.\n\nHere they are by category:\n\nDebugging Tools:\n\n<a href="http://msdn.microsoft.com/en-us/library/dd565628%28VS.85%29.aspx">IE 8 Developer Tools</a>\n<a href="http://getfirebug.com/">Firebug</a>\n<a href="http://trac.webkit.org/wiki/WebInspector">WebKit Web Inspector</a>\n<a href="http://www.fiddler2.com/fiddler2/">Fiddler</strong> - http://www.fiddler2.com/fiddler2/</a>\n<a href="http://www.charlesproxy.com/">Charles</a> - http://www.charlesproxy.com/</a>\n<a href="http://kevinlangdon.com/serviceCapture/">Service Capture</a>\n<a href="http://ajax.dynatrace.com/pages/">dynaTrace Ajax</a>\n<a href="http://chrispederick.com/work/web-developer/">Web Developer’s Toolbar</a>\n<a href="http://developer.yahoo.com/yslow/">YSlow</a>\n<a href="http://code.google.com/speed/page-speed/">PageSpeed</a>\n<a href="https://addons.mozilla.org/en-US/firefox/addon/3829">Live HTTP Headers</a>\n\nCSS Editors:\n\n<a href="http://www.topstyle4.com/">TopStyle</a>\n<a href="http://www.blumentals.net/rapidcss/">Rapid CSS</a>\n<a href="http://www.culturedcode.com/xyle/">Xyle</a>\n<a href="http://www.culturedcode.com/xyle/">Stylizer</a>\n<a href="http://www.macrabbit.com/cssedit/">CSSEdit</a>\n\nCSS Frameworks:\n\n<a href="http://960.gs">960 Grid System</a>\n<a href="http://blueprintcss.org/">Blueprint CSS Framework</a>\n<a href="http://www.yaml.de/en/">YAML</a>\n<a href="http://developer.yahoo.com/yui/grids/">Yahoo YUI Grids CSS</a>\n<a href="http://devkick.com/lab/tripoli/">Tripoli</a>\n\nCSS Resets:\n\n<a href="http://meyerweb.com/eric/tools/css/reset/">Meyer Reset by Eric Meyer</a>\n<a href="http://developer.yahoo.com/yui/reset/">YUI2: Reset CSS</a>\n<a href="http://www.iecss.com/">IECSS</a>\n\nJavaScript Libraries:\n\n<a href="http://jquery.com/">jQuery</a>\n<a href="http://jqueryui.com">jQuery UI</a>\n<a href="http://prototypejs.org/">Prototype</a>\n<a href="http://mootools.net/">MooTools</a>\n<a href="http://dojotoolkit.org/">Dojo</a>\n<a href="http://developer.yahoo.com/yui/">YUI</a>\n<a href="http://labjs.com/">LabJS Dynamic Script Loader</a>\n\nColor Management:\n\nColourlovers <a href="http://www.colourlovers.com/">http://www.colourlovers.com/</a>\nKuler <a href="http://kuler.adobe.com/">http://kuler.adobe.com/</a>\n\nEditors and IDEs:\n\nVisual Studio <a href="http://msdn.microsoft.com/en-us/vstudio/default.aspx">http://msdn.microsoft.com/en-us/vstudio/default.aspx</a>\nExpression <a href="http://www.microsoft.com/expression/">http://www.microsoft.com/expression/</a>\nTextMate <a href="http://macromates.com/">http://macromates.com/</a>\nCoda <a href="http://panic.com/coda/">http://panic.com/coda/</a>\nUltraEdit <a href="http://www.ultraedit.com/">http://www.ultraedit.com/</a>\nKomodo IDE <a href="http://www.activestate.com/komodo/">http://www.activestate.com/komodo/</a>\nNotepad++ <a href="http://notepad-plus.sourceforge.net/uk/site.htm">http://notepad-plus.sourceforge.net/uk/site.htm</a>\nBBEdit <a href="http://www.barebones.com/products/bbedit/">http://www.barebones.com/products/bbedit/</a>\n\nWireframing:\n\nOmnigraffle <a href="http://www.omnigroup.com/">http://www.omnigroup.com/</a>\nBalsamiq <a href="http://www.balsamiq.com/">http://www.balsamiq.com/</a>\nFlairBuilder <a href="http://www.flairbuilder.com/">http://www.flairbuilder.com/</a>\n\nBrowser Testing:\n\nBrowserCam <a href="http://www.browsercam.com/Default2.aspx">http://www.browsercam.com/Default2.aspx</a>\nAdobe BrowserLab <a href="https://browserlab.adobe.com/index.html">https://browserlab.adobe.com/index.html</a>\nMicrosoft Expression Web SuperPreview for IE <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&displaylang=en</a>\nGomez <a href="http://www.gomez.com/products-solutions/products/cross-browser-testing/">http://www.gomez.com/products-solutions/products/cross-browser-testing/</a>\nTredoSoft MultipleIE <a href="http://tredosoft.com/Multiple_IE">http://tredosoft.com/Multiple_IE</a>\nCrossBrowserTesting <a href="http://crossbrowsertesting.com/">http://crossbrowsertesting.com/</a>\nMulti-Safari <a href="http://michelf.com/projects/multi-safari/">http://michelf.com/projects/multi-safari/</a>\nBrowserscope <a href="http://www.browserscope.org/">http://www.browserscope.org/</a>\nCuzillion <a href="http://stevesouders.com/cuzillion/help.php">http://stevesouders.com/cuzillion/help.php</a>\nIETester <a href="http://www.my-debugbar.com/wiki/IETester/HomePage">http://www.my-debugbar.com/wiki/IETester/HomePage</a>\n\nTesting:\n\nJSLint <a href="http://jslint.com/">http://jslint.com/</a>\njQuery Lint <a href="http://github.com/jamespadolsey/jQuery-Lint">http://github.com/jamespadolsey/jQuery-Lint</a>\nJSUnit <a href="http://www.jsunit.net/">http://www.jsunit.net/</a>\nSelenium Core <a href="http://seleniumhq.org/projects/core/">http://seleniumhq.org/projects/core/</a>\nJSSpec (MooTools) <a href="http://jania.pe.kr/aw/moin.cgi/JSSpec">http://jania.pe.kr/aw/moin.cgi/JSSpec</a>\nUnitTestJS (Prototype) <a href="http://github.com/tobie/unittest_js/tree/master">http://github.com/tobie/unittest_js/tree/master</a>\nQUnit (jQuery) <a href="http://docs.jquery.com/QUnit">http://docs.jquery.com/QUnit</a>\nDOH Unit Testing (Dojo) <a href="http://docs.dojocampus.org/quickstart/doh">http://docs.dojocampus.org/quickstart/doh</a>\nYUITest 2 <a href="http://developer.yahoo.com/yui/yuitest/">http://developer.yahoo.com/yui/yuitest/</a>\nYUITest 3 <a href="http://developer.yahoo.com/yui/3/test/">http://developer.yahoo.com/yui/3/test/</a>\nMochitest https://developer.mozilla.org/En/Mochitest\nScrewUnit <a href="http://github.com/nkallen/screw-unit/tree/master">http://github.com/nkallen/screw-unit/tree/master</a>\nJsUnitTest <a href="http://jsunittest.com/">http://jsunittest.com/</a>\njsUnity <a href="http://jsunity.com/">http://jsunity.com/</a> \nJsTestDriver <a href="http://code.google.com/p/js-test-driver/">http://code.google.com/p/js-test-driver/</a>\nCrosscheck <a href="http://www.thefrontside.net/crosscheck">http://www.thefrontside.net/crosscheck</a>\nEnv.js <a href="http://groups.google.com/group/envjs">http://groups.google.com/group/envjs</a> \nFireUnit <a href="http://fireunit.org/">http://fireunit.org/</a>\nW3C Markup Validation Service <a href="http://validator.w3.org/">http://validator.w3.org/</a>\nW3C CSS Validation Service <a href="http://jigsaw.w3.org/css-validator/">http://jigsaw.w3.org/css-validator/</a>\nSunSpider <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html">http://www2.webkit.org/perf/sunspider-0.9/sunspider.html</a>\nV8 Benchmark <a href="http://code.google.com/apis/v8/run.html">http://code.google.com/apis/v8/run.html</a>\nDromaeo <a href="http://v2.dromaeo.com/">http://v2.dromaeo.com/</a>\nJSLitmus <a href="http://broofa.com/Tools/JSLitmus/">http://broofa.com/Tools/JSLitmus/</a>\n\nMisc:\n\nAPIs: <a href="http://www.programmableweb.com/">http://www.programmableweb.com/</a>\njQuery Docs: <a href="http://api.jquery.com/">http://api.jquery.com/</a>\njQuery UI Docs: <a href="http://jqueryui.com/demos/">http://jqueryui.com/demos/</a>\nMooTools Docs: <a href="http://mootools.net/docs/core">http://mootools.net/docs/core</a>\nPrototype Docs: <a href="http://api.prototypejs.org/">http://api.prototypejs.org/</a>\nDojo Docs: <a href="http://dojotoolkit.org/documentation/">http://dojotoolkit.org/documentation/</a>\nJSON Reference <a href="http://json.org/">http://json.org/\n</a>\nJSONP <a href="http://en.wikipedia.org/wiki/JSON#JSONP">http://en.wikipedia.org/wiki/JSON#JSONP</a>\n', 'The Big List of JavaScript, CSS & HTML Development Tools, Libraries and Projects', 0, '', 'inherit', 'open', 'open', '', '664-revision-4', '', '', '2010-04-29 13:49:36', '2010-04-29 17:49:36', '', 664, 'http://blog.reybango.com/2010/04/29/664-revision-4/', 0, 'revision', '', 0),
(667, 3, '2010-04-29 13:42:54', '2010-04-29 17:42:54', 'I''ve been meaning to do a roll-up of top JavaScript, CSS & HTML development tools that I use or have been recommended to me and after having lunch with my bud Brian Wilpon today, I realized I just needed to do it. He asked me what some of the newer tools are and I think this is the best way to help him (and the community in general). It''s definitely not an all-inclusive list so if you see some that you feel I should add or remove, let me know in the comments.\n\nHere they are by category:\n\nDebugging Tools:\n\n<a href="http://msdn.microsoft.com/en-us/library/dd565628%28VS.85%29.aspx">IE 8 Developer Tools</a>\n<a href="http://getfirebug.com/">Firebug</a>\n<a href="http://trac.webkit.org/wiki/WebInspector">WebKit Web Inspector</a>\n<a href="http://www.fiddler2.com/fiddler2/">Fiddler</strong> - http://www.fiddler2.com/fiddler2/</a>\n<strong>Charles</strong> - <a href="http://www.charlesproxy.com/">http://www.charlesproxy.com/</a>\n<strong>Service Capture (<a href="http://kevinlangdon.com/serviceCapture/">http://kevinlangdon.com/serviceCapture/</a>)\n<strong>dynaTrace (<a href="http://www.dynatrace.com/en/application-performance-management-product.aspx">http://www.dynatrace.com/en/application-performance-management-product.aspx</a>)\n<strong>dynaTrace Ajax (<a href="http://ajax.dynatrace.com/pages/">http://ajax.dynatrace.com/pages/</a>)\n<strong>Web Developer’s Toolbar (<a href="http://chrispederick.com/work/web-developer/">http://chrispederick.com/work/web-developer/</a>)\n<strong>YSlow <a href="http://developer.yahoo.com/yslow/">http://developer.yahoo.com/yslow/</a>\n<strong>PageSpeed <a href="http://code.google.com/speed/page-speed/">http://code.google.com/speed/page-speed/</a>\n<strong>Live HTTP Headers <a href="https://addons.mozilla.org/en-US/firefox/addon/3829">https://addons.mozilla.org/en-US/firefox/addon/3829\n</a>\nCSS:\n\n<strong>TopStyle <a href="http://www.topstyle4.com/">http://www.topstyle4.com/</a>\n<strong>Rapid CSS <a href="http://www.blumentals.net/rapidcss/">http://www.blumentals.net/rapidcss/</a>\n<strong>Xyle <a href="http://www.culturedcode.com/xyle/">http://www.culturedcode.com/xyle/</a>\n<strong>Stylizer <a href="http://www.skybound.ca/stylizer/">http://www.skybound.ca/stylizer/</a>\n<strong>CSSEdit <a href="http://www.macrabbit.com/cssedit/">http://www.macrabbit.com/cssedit/</a>\n\nCSS Frameworks:\n\n960 Grid System <a href="http://960.gs">http://960.gs</a>\nBlueprint CSS Framework <a href="http://blueprintcss.org/">http://blueprintcss.org/</a>\nYAML <a href="http://www.yaml.de/en/">http://www.yaml.de/en/</a>\nYahoo YUI Grids CSS <a href="http://developer.yahoo.com/yui/grids/">http://developer.yahoo.com/yui/grids/</a>\nTripoli <a href="http://devkick.com/lab/tripoli/">http://devkick.com/lab/tripoli/</a>\n\nCSS Resets:\n\nMeyer Reset by Eric Meyer <a href="http://meyerweb.com/eric/tools/css/reset/">http://meyerweb.com/eric/tools/css/reset/</a>\nYUI2: Reset CSS <a href="http://developer.yahoo.com/yui/reset/">http://developer.yahoo.com/yui/reset/</a>\nIECSS <a href="http://www.iecss.com/">http://www.iecss.com/</a>\n\nJavaScript Libraries:\n\njQuery <a href="http://jquery.com/">http://jquery.com/</a>\njQuery UI <a href="http://jqueryui.com">http://jqueryui.com/</a>\nPrototype <a href="http://prototypejs.org/">http://prototypejs.org/</a>\nMooTools <a href="http://mootools.net/">http://mootools.net/</a>\nDojo <a href="http://dojotoolkit.org/">http://dojotoolkit.org/</a>\nYUI <a href="http://developer.yahoo.com/yui/">http://developer.yahoo.com/yui/</a>\n\nColor Management:\n\nColourlovers <a href="http://www.colourlovers.com/">http://www.colourlovers.com/</a>\nKuler <a href="http://kuler.adobe.com/">http://kuler.adobe.com/</a>\n\nEditors and IDEs:\n\nVisual Studio <a href="http://msdn.microsoft.com/en-us/vstudio/default.aspx">http://msdn.microsoft.com/en-us/vstudio/default.aspx</a>\nExpression <a href="http://www.microsoft.com/expression/">http://www.microsoft.com/expression/</a>\nTextMate <a href="http://macromates.com/">http://macromates.com/</a>\nCoda <a href="http://panic.com/coda/">http://panic.com/coda/</a>\nUltraEdit <a href="http://www.ultraedit.com/">http://www.ultraedit.com/</a>\nKomodo IDE <a href="http://www.activestate.com/komodo/">http://www.activestate.com/komodo/</a>\nNotepad++ <a href="http://notepad-plus.sourceforge.net/uk/site.htm">http://notepad-plus.sourceforge.net/uk/site.htm</a>\nBBEdit <a href="http://www.barebones.com/products/bbedit/">http://www.barebones.com/products/bbedit/</a>\n\nWireframing:\n\nOmnigraffle <a href="http://www.omnigroup.com/">http://www.omnigroup.com/</a>\nBalsamiq <a href="http://www.balsamiq.com/">http://www.balsamiq.com/</a>\nFlairBuilder <a href="http://www.flairbuilder.com/">http://www.flairbuilder.com/</a>\n\nBrowser Testing:\n\nBrowserCam <a href="http://www.browsercam.com/Default2.aspx">http://www.browsercam.com/Default2.aspx</a>\nAdobe BrowserLab <a href="https://browserlab.adobe.com/index.html">https://browserlab.adobe.com/index.html</a>\nMicrosoft Expression Web SuperPreview for IE <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&displaylang=en</a>\nGomez <a href="http://www.gomez.com/products-solutions/products/cross-browser-testing/">http://www.gomez.com/products-solutions/products/cross-browser-testing/</a>\nTredoSoft MultipleIE <a href="http://tredosoft.com/Multiple_IE">http://tredosoft.com/Multiple_IE</a>\nCrossBrowserTesting <a href="http://crossbrowsertesting.com/">http://crossbrowsertesting.com/</a>\nMulti-Safari <a href="http://michelf.com/projects/multi-safari/">http://michelf.com/projects/multi-safari/</a>\nBrowserscope <a href="http://www.browserscope.org/">http://www.browserscope.org/</a>\nCuzillion <a href="http://stevesouders.com/cuzillion/help.php">http://stevesouders.com/cuzillion/help.php</a>\nIETester <a href="http://www.my-debugbar.com/wiki/IETester/HomePage">http://www.my-debugbar.com/wiki/IETester/HomePage</a>\n\nTesting:\n\nJSLint <a href="http://jslint.com/">http://jslint.com/</a>\njQuery Lint <a href="http://github.com/jamespadolsey/jQuery-Lint">http://github.com/jamespadolsey/jQuery-Lint</a>\nJSUnit <a href="http://www.jsunit.net/">http://www.jsunit.net/</a>\nSelenium Core <a href="http://seleniumhq.org/projects/core/">http://seleniumhq.org/projects/core/</a>\nJSSpec (MooTools) <a href="http://jania.pe.kr/aw/moin.cgi/JSSpec">http://jania.pe.kr/aw/moin.cgi/JSSpec</a>\nUnitTestJS (Prototype) <a href="http://github.com/tobie/unittest_js/tree/master">http://github.com/tobie/unittest_js/tree/master</a>\nQUnit (jQuery) <a href="http://docs.jquery.com/QUnit">http://docs.jquery.com/QUnit</a>\nDOH Unit Testing (Dojo) <a href="http://docs.dojocampus.org/quickstart/doh">http://docs.dojocampus.org/quickstart/doh</a>\nYUITest 2 <a href="http://developer.yahoo.com/yui/yuitest/">http://developer.yahoo.com/yui/yuitest/</a>\nYUITest 3 <a href="http://developer.yahoo.com/yui/3/test/">http://developer.yahoo.com/yui/3/test/</a>\nMochitest https://developer.mozilla.org/En/Mochitest\nScrewUnit <a href="http://github.com/nkallen/screw-unit/tree/master">http://github.com/nkallen/screw-unit/tree/master</a>\nJsUnitTest <a href="http://jsunittest.com/">http://jsunittest.com/</a>\njsUnity <a href="http://jsunity.com/">http://jsunity.com/</a> \nJsTestDriver <a href="http://code.google.com/p/js-test-driver/">http://code.google.com/p/js-test-driver/</a>\nCrosscheck <a href="http://www.thefrontside.net/crosscheck">http://www.thefrontside.net/crosscheck</a>\nEnv.js <a href="http://groups.google.com/group/envjs">http://groups.google.com/group/envjs</a> \nFireUnit <a href="http://fireunit.org/">http://fireunit.org/</a>\nW3C Markup Validation Service <a href="http://validator.w3.org/">http://validator.w3.org/</a>\nW3C CSS Validation Service <a href="http://jigsaw.w3.org/css-validator/">http://jigsaw.w3.org/css-validator/</a>\nSunSpider <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html">http://www2.webkit.org/perf/sunspider-0.9/sunspider.html</a>\nV8 Benchmark <a href="http://code.google.com/apis/v8/run.html">http://code.google.com/apis/v8/run.html</a>\nDromaeo <a href="http://v2.dromaeo.com/">http://v2.dromaeo.com/</a>\nJSLitmus <a href="http://broofa.com/Tools/JSLitmus/">http://broofa.com/Tools/JSLitmus/</a>\n\nMisc:\n\nAPIs: <a href="http://www.programmableweb.com/">http://www.programmableweb.com/</a>\njQuery Docs: <a href="http://api.jquery.com/">http://api.jquery.com/</a>\njQuery UI Docs: <a href="http://jqueryui.com/demos/">http://jqueryui.com/demos/</a>\nMooTools Docs: <a href="http://mootools.net/docs/core">http://mootools.net/docs/core</a>\nPrototype Docs: <a href="http://api.prototypejs.org/">http://api.prototypejs.org/</a>\nDojo Docs: <a href="http://dojotoolkit.org/documentation/">http://dojotoolkit.org/documentation/</a>\nJSON Reference <a href="http://json.org/">http://json.org/\n</a>\nJSONP <a href="http://en.wikipedia.org/wiki/JSON#JSONP">http://en.wikipedia.org/wiki/JSON#JSONP</a>\n', 'The Big List of JavaScript, CSS & HTML Development Tools, Libraries and Projects', 0, '', 'inherit', 'open', 'open', '', '664-revision-3', '', '', '2010-04-29 13:42:54', '2010-04-29 17:42:54', '', 664, 'http://blog.reybango.com/2010/04/29/664-revision-3/', 0, 'revision', '', 0),
(670, 3, '2010-04-29 13:54:04', '2010-04-29 17:54:04', 'I''ve been meaning to do a roll-up of top JavaScript, CSS & HTML development tools that I use or have been recommended to me and after having lunch with my bud Brian Wilpon today, I realized I just needed to do it. He asked me what some of the newer tools are and I think this is the best way to help him (and the community in general). It''s definitely not an all-inclusive list so if you see some that you feel I should add or remove, let me know in the comments.\r\n\r\nHere they are by category:\r\n\r\nDebugging Tools:\r\n\r\n<a href="http://msdn.microsoft.com/en-us/library/dd565628%28VS.85%29.aspx">IE 8 Developer Tools</a>\r\n<a href="http://getfirebug.com/">Firebug</a>\r\n<a href="http://trac.webkit.org/wiki/WebInspector">WebKit Web Inspector</a>\r\n<a href="http://www.fiddler2.com/fiddler2/">Fiddler</strong> - http://www.fiddler2.com/fiddler2/</a>\r\n<a href="http://www.charlesproxy.com/">Charles</a> - http://www.charlesproxy.com/</a>\r\n<a href="http://kevinlangdon.com/serviceCapture/">Service Capture</a>\r\n<a href="http://ajax.dynatrace.com/pages/">dynaTrace Ajax</a>\r\n<a href="http://chrispederick.com/work/web-developer/">Web Developer’s Toolbar</a>\r\n<a href="http://developer.yahoo.com/yslow/">YSlow</a>\r\n<a href="http://code.google.com/speed/page-speed/">PageSpeed</a>\r\n<a href="https://addons.mozilla.org/en-US/firefox/addon/3829">Live HTTP Headers</a>\r\n\r\nCSS Editors:\r\n\r\n<a href="http://www.topstyle4.com/">TopStyle</a>\r\n<a href="http://www.blumentals.net/rapidcss/">Rapid CSS</a>\r\n<a href="http://www.culturedcode.com/xyle/">Xyle</a>\r\n<a href="http://www.culturedcode.com/xyle/">Stylizer</a>\r\n<a href="http://www.macrabbit.com/cssedit/">CSSEdit</a>\r\n\r\nCSS Frameworks:\r\n\r\n<a href="http://960.gs">960 Grid System</a>\r\n<a href="http://blueprintcss.org/">Blueprint CSS Framework</a>\r\n<a href="http://www.yaml.de/en/">YAML</a>\r\n<a href="http://developer.yahoo.com/yui/grids/">Yahoo YUI Grids CSS</a>\r\n<a href="http://devkick.com/lab/tripoli/">Tripoli</a>\r\n\r\nCSS Resets:\r\n\r\n<a href="http://meyerweb.com/eric/tools/css/reset/">Meyer Reset by Eric Meyer</a>\r\n<a href="http://developer.yahoo.com/yui/reset/">YUI2: Reset CSS</a>\r\n<a href="http://www.iecss.com/">IECSS</a>\r\n\r\nJavaScript Libraries:\r\n\r\n<a href="http://jquery.com/">jQuery</a>\r\n<a href="http://jqueryui.com">jQuery UI</a>\r\n<a href="http://prototypejs.org/">Prototype</a>\r\n<a href="http://mootools.net/">MooTools</a>\r\n<a href="http://dojotoolkit.org/">Dojo</a>\r\n<a href="http://developer.yahoo.com/yui/">YUI</a>\r\n<a href="http://labjs.com/">LabJS Dynamic Script Loader</a>\r\n\r\nColor Management:\r\n\r\n<a href="http://www.colourlovers.com/">Colourlovers</a>\r\n<a href="http://kuler.adobe.com/">Kuler</a>\r\n\r\nEditors and IDEs:\r\n\r\n<a href="http://msdn.microsoft.com/en-us/vstudio/default.aspx">Visual Studio</a>\r\n<a href="http://www.microsoft.com/expression/">Expression</a>\r\n<a href="http://macromates.com/">TextMate</a>\r\n<a href="http://panic.com/coda/">Coda</a>\r\n<a href="http://www.ultraedit.com/">UltraEdit</a>\r\n<a href="http://www.activestate.com/komodo/">Komodo IDE</a>\r\n<a href="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a>\r\n<a href="http://www.barebones.com/products/bbedit/">BBEdit</a>\r\n\r\nWireframing:\r\n\r\n<a href="http://www.omnigroup.com/">Omnigraffle</a>\r\n<a href="http://www.balsamiq.com/">Balsamiq</a>\r\n<a href="http://www.flairbuilder.com/">FlairBuilder</a>\r\n\r\nBrowser Testing:\r\n\r\n<a href="http://www.browsercam.com/Default2.aspx">BrowserCam</a>\r\n<a href="https://browserlab.adobe.com/index.html">Adobe BrowserLab</a>\r\n<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&displaylang=en">Microsoft Expression Web SuperPreview for IE</a>\r\n<a href="http://www.gomez.com/products-solutions/products/cross-browser-testing/">Gomez</a>\r\n<a href="http://tredosoft.com/Multiple_IE">TredoSoft MultipleIE</a>\r\n<a href="http://crossbrowsertesting.com/">CrossBrowserTesting</a>\r\n<a href="http://michelf.com/projects/multi-safari/">Multi-Safari</a>\r\n<a href="http://www.browserscope.org/">Browserscope</a>\r\n<a href="http://stevesouders.com/cuzillion/help.php">Cuzillion</a>\r\n<a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a>\r\n\r\nTesting:\r\n\r\nJSLint <a href="http://jslint.com/">http://jslint.com/</a>\r\njQuery Lint <a href="http://github.com/jamespadolsey/jQuery-Lint">http://github.com/jamespadolsey/jQuery-Lint</a>\r\nJSUnit <a href="http://www.jsunit.net/">http://www.jsunit.net/</a>\r\nSelenium Core <a href="http://seleniumhq.org/projects/core/">http://seleniumhq.org/projects/core/</a>\r\nJSSpec (MooTools) <a href="http://jania.pe.kr/aw/moin.cgi/JSSpec">http://jania.pe.kr/aw/moin.cgi/JSSpec</a>\r\nUnitTestJS (Prototype) <a href="http://github.com/tobie/unittest_js/tree/master">http://github.com/tobie/unittest_js/tree/master</a>\r\nQUnit (jQuery) <a href="http://docs.jquery.com/QUnit">http://docs.jquery.com/QUnit</a>\r\nDOH Unit Testing (Dojo) <a href="http://docs.dojocampus.org/quickstart/doh">http://docs.dojocampus.org/quickstart/doh</a>\r\nYUITest 2 <a href="http://developer.yahoo.com/yui/yuitest/">http://developer.yahoo.com/yui/yuitest/</a>\r\nYUITest 3 <a href="http://developer.yahoo.com/yui/3/test/">http://developer.yahoo.com/yui/3/test/</a>\r\nMochitest https://developer.mozilla.org/En/Mochitest\r\nScrewUnit <a href="http://github.com/nkallen/screw-unit/tree/master">http://github.com/nkallen/screw-unit/tree/master</a>\r\nJsUnitTest <a href="http://jsunittest.com/">http://jsunittest.com/</a>\r\njsUnity <a href="http://jsunity.com/">http://jsunity.com/</a> \r\nJsTestDriver <a href="http://code.google.com/p/js-test-driver/">http://code.google.com/p/js-test-driver/</a>\r\nCrosscheck <a href="http://www.thefrontside.net/crosscheck">http://www.thefrontside.net/crosscheck</a>\r\nEnv.js <a href="http://groups.google.com/group/envjs">http://groups.google.com/group/envjs</a> \r\nFireUnit <a href="http://fireunit.org/">http://fireunit.org/</a>\r\nW3C Markup Validation Service <a href="http://validator.w3.org/">http://validator.w3.org/</a>\r\nW3C CSS Validation Service <a href="http://jigsaw.w3.org/css-validator/">http://jigsaw.w3.org/css-validator/</a>\r\nSunSpider <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html">http://www2.webkit.org/perf/sunspider-0.9/sunspider.html</a>\r\nV8 Benchmark <a href="http://code.google.com/apis/v8/run.html">http://code.google.com/apis/v8/run.html</a>\r\nDromaeo <a href="http://v2.dromaeo.com/">http://v2.dromaeo.com/</a>\r\nJSLitmus <a href="http://broofa.com/Tools/JSLitmus/">http://broofa.com/Tools/JSLitmus/</a>\r\n\r\nMisc:\r\n\r\nAPIs: <a href="http://www.programmableweb.com/">http://www.programmableweb.com/</a>\r\njQuery Docs: <a href="http://api.jquery.com/">http://api.jquery.com/</a>\r\njQuery UI Docs: <a href="http://jqueryui.com/demos/">http://jqueryui.com/demos/</a>\r\nMooTools Docs: <a href="http://mootools.net/docs/core">http://mootools.net/docs/core</a>\r\nPrototype Docs: <a href="http://api.prototypejs.org/">http://api.prototypejs.org/</a>\r\nDojo Docs: <a href="http://dojotoolkit.org/documentation/">http://dojotoolkit.org/documentation/</a>\r\nJSON Reference <a href="http://json.org/">http://json.org/\r\n</a>\r\nJSONP <a href="http://en.wikipedia.org/wiki/JSON#JSONP">http://en.wikipedia.org/wiki/JSON#JSONP</a>\r\n', 'The Big List of JavaScript, CSS & HTML Development Tools, Libraries and Projects', 0, '', 'inherit', 'open', 'open', '', '664-revision-6', '', '', '2010-04-29 13:54:04', '2010-04-29 17:54:04', '', 664, 'http://blog.reybango.com/2010/04/29/664-revision-6/', 0, 'revision', '', 0),
(672, 3, '2010-04-29 14:04:24', '2010-04-29 18:04:24', 'I''ve been meaning to do a roll-up of top JavaScript, CSS & HTML development tools that I use or have been recommended to me and after having lunch with my bud Brian Wilpon today, I realized I just needed to do it. He asked me what some of the newer tools are and I think this is the best way to help him (and the community in general). It''s definitely not an all-inclusive list so if you see some that you feel I should add or remove, let me know in the comments.\r\n\r\nHere they are by category:\r\n\r\n<strong>Debugging Tools:</strong>\r\n\r\n<a href="http://msdn.microsoft.com/en-us/library/dd565628%28VS.85%29.aspx">IE 8 Developer Tools</a>\r\n<a href="http://getfirebug.com/">Firebug</a>\r\n<a href="http://trac.webkit.org/wiki/WebInspector">WebKit Web Inspector</a>\r\n<a href="http://www.fiddler2.com/fiddler2/">Fiddler</a> - HTTP Sniffer. Great for seeing Ajax requests.\r\n<a href="http://www.charlesproxy.com/">Charles</a> - HTTP Sniffer. Great for seeing Ajax requests. (my personal fav)\r\n<a href="http://kevinlangdon.com/serviceCapture/">Service Capture</a> - HTTP Sniffer. Great for seeing Ajax requests.\r\n<a href="http://ajax.dynatrace.com/pages/">dynaTrace Ajax</a>\r\n<a href="http://chrispederick.com/work/web-developer/">Web Developer’s Toolbar</a> - All purpose Firefox toolbar to inspect everything on a page\r\n<a href="http://developer.yahoo.com/yslow/">YSlow</a> - Analyzes page performance based on accepted industry best practices.\r\n<a href="http://code.google.com/speed/page-speed/">PageSpeed</a> - Analyzes page performance based on accepted industry best practices.\r\n<a href="https://addons.mozilla.org/en-US/firefox/addon/3829">Live HTTP Headers</a>\r\n\r\n<strong>CSS Editors:</strong>\r\n\r\n<a href="http://www.topstyle4.com/">TopStyle</a>\r\n<a href="http://www.blumentals.net/rapidcss/">Rapid CSS</a>\r\n<a href="http://www.culturedcode.com/xyle/">Xyle</a>\r\n<a href="http://www.culturedcode.com/xyle/">Stylizer</a>\r\n<a href="http://www.macrabbit.com/cssedit/">CSSEdit</a>\r\n\r\nCSS Frameworks:\r\n\r\n<a href="http://960.gs">960 Grid System</a>\r\n<a href="http://blueprintcss.org/">Blueprint CSS Framework</a>\r\n<a href="http://www.yaml.de/en/">YAML</a>\r\n<a href="http://developer.yahoo.com/yui/grids/">Yahoo YUI Grids CSS</a>\r\n<a href="http://devkick.com/lab/tripoli/">Tripoli</a>\r\n\r\nCSS Resets:\r\n\r\n<a href="http://meyerweb.com/eric/tools/css/reset/">Meyer Reset by Eric Meyer</a>\r\n<a href="http://developer.yahoo.com/yui/reset/">YUI2: Reset CSS</a>\r\n<a href="http://www.iecss.com/">IECSS</a>\r\n\r\nJavaScript Libraries:\r\n\r\n<a href="http://jquery.com/">jQuery</a>\r\n<a href="http://jqueryui.com">jQuery UI</a>\r\n<a href="http://prototypejs.org/">Prototype</a>\r\n<a href="http://mootools.net/">MooTools</a>\r\n<a href="http://dojotoolkit.org/">Dojo</a>\r\n<a href="http://developer.yahoo.com/yui/">YUI</a>\r\n<a href="http://javascriptmvc.com/">JavaScriptMVC</a>\r\n<a href="http://raphaeljs.com/">Raphael.js</a> - simplifies working with vector graphics on the web\r\n<a href="http://labjs.com/">LabJS Dynamic Script Loader</a> - Allows execution and load management of JavaScript files\r\n\r\nColor Management:\r\n\r\n<a href="http://www.colourlovers.com/">Colourlovers</a>\r\n<a href="http://kuler.adobe.com/">Kuler</a>\r\n\r\nEditors and IDEs:\r\n\r\n<a href="http://msdn.microsoft.com/en-us/vstudio/default.aspx">Visual Studio</a>\r\n<a href="http://www.microsoft.com/expression/">Expression</a>\r\n<a href="http://macromates.com/">TextMate</a>\r\n<a href="http://panic.com/coda/">Coda</a>\r\n<a href="http://www.ultraedit.com/">UltraEdit</a>\r\n<a href="http://www.activestate.com/komodo/">Komodo IDE</a>\r\n<a href="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a>\r\n<a href="http://www.barebones.com/products/bbedit/">BBEdit</a>\r\n\r\nWireframing:\r\n\r\n<a href="http://www.omnigroup.com/">Omnigraffle</a>\r\n<a href="http://www.balsamiq.com/">Balsamiq</a>\r\n<a href="http://www.flairbuilder.com/">FlairBuilder</a>\r\n\r\nBrowser Testing:\r\n\r\n<a href="http://www.browsercam.com/Default2.aspx">BrowserCam</a>\r\n<a href="https://browserlab.adobe.com/index.html">Adobe BrowserLab</a>\r\n<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&displaylang=en">Microsoft Expression Web SuperPreview for IE</a>\r\n<a href="http://www.gomez.com/products-solutions/products/cross-browser-testing/">Gomez</a>\r\n<a href="http://tredosoft.com/Multiple_IE">TredoSoft MultipleIE</a>\r\n<a href="http://crossbrowsertesting.com/">CrossBrowserTesting</a>\r\n<a href="http://michelf.com/projects/multi-safari/">Multi-Safari</a>\r\n<a href="http://www.browserscope.org/">Browserscope</a>\r\n<a href="http://stevesouders.com/cuzillion/help.php">Cuzillion</a>\r\n<a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a>\r\n\r\nTesting:\r\n\r\n<a href="http://jslint.com/">JSLint</a>\r\n<a href="http://github.com/jamespadolsey/jQuery-Lint">jQuery Lint</a>\r\n<a href="http://www.jsunit.net/">JSUnit</a>\r\n<a href="http://seleniumhq.org/projects/core/">Selenium Core</a>\r\n<a href="http://jania.pe.kr/aw/moin.cgi/JSSpec">JSSpec (MooTools)</a>\r\n<a href="http://github.com/tobie/unittest_js/tree/master">UnitTestJS (Prototype)</a>\r\n<a href="http://docs.jquery.com/QUnit">QUnit (jQuery)</a>\r\n<a href="http://docs.dojocampus.org/quickstart/doh">DOH Unit Testing (Dojo)</a>\r\n<a href="http://developer.yahoo.com/yui/yuitest/">YUITest 2</a>\r\n<a href="http://developer.yahoo.com/yui/3/test/">YUITest 3</a>\r\n<a href="https://developer.mozilla.org/En/Mochitest">Mochitest</a>\r\n<a href="http://github.com/nkallen/screw-unit/tree/master">ScrewUnit</a>\r\n<a href="http://jsunittest.com/">JsUnitTest</a>\r\n<a href="http://jsunity.com/">jsUnity</a> \r\n<a href="http://code.google.com/p/js-test-driver/">JsTestDriver</a>\r\n<a href="http://www.thefrontside.net/crosscheck">Crosscheck</a>\r\n<a href="http://groups.google.com/group/envjs">Env.js</a> \r\n<a href="http://fireunit.org/">FireUnit</a>\r\n<a href="http://validator.w3.org/">W3C Markup Validation Service</a>\r\n<a href="http://jigsaw.w3.org/css-validator/">W3C CSS Validation Service</a>\r\n<a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html">SunSpider</a>\r\n<a href="http://code.google.com/apis/v8/run.html">V8 Benchmark</a>\r\n<a href="http://v2.dromaeo.com/">Dromaeo</a>\r\n<a href="http://broofa.com/Tools/JSLitmus/">JSLitmus</a>\r\n\r\nDocumentation:\r\n\r\n<a href="http://www.programmableweb.com/">APIs</a>\r\n<a href="http://api.jquery.com/">jQuery Docs</a>\r\n<a href="http://jqueryui.com/demos/">jQuery UI Docs</a>\r\n<a href="http://mootools.net/docs/core">MooTools Docs</a>\r\n<a href="http://api.prototypejs.org/">Prototype Docs</a>\r\n<a href="http://dojotoolkit.org/documentation/">Dojo Docs</a>\r\n<a href="http://json.org/">JSON Reference</a>\r\n<a href="http://en.wikipedia.org/wiki/JSON#JSONP">JSONP</a>', 'The Big List of JavaScript, CSS & HTML Development Tools, Libraries and Projects', 0, '', 'inherit', 'open', 'open', '', '664-revision-8', '', '', '2010-04-29 14:04:24', '2010-04-29 18:04:24', '', 664, 'http://blog.reybango.com/2010/04/29/664-revision-8/', 0, 'revision', '', 0);
