<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pathfinder Software &#187; Brian Dillard</title>
	<atom:link href="http://pathfindersoftware.com/author/brian-dillard/feed/" rel="self" type="application/rss+xml" />
	<link>http://pathfindersoftware.com</link>
	<description>The Fastest Way to Launch Successful Software</description>
	<lastBuildDate>Thu, 19 Jan 2012 16:31:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Chicago JavaScript Meetup Group draws a big audience with varied skill levels</title>
		<link>http://pathfindersoftware.com/2009/01/chicago-javascript-meetup-group-draws-a-big-audience-with-varied-skill-levels/</link>
		<comments>http://pathfindersoftware.com/2009/01/chicago-javascript-meetup-group-draws-a-big-audience-with-varied-skill-levels/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 18:17:51 +0000</pubDate>
		<dc:creator>Brian Dillard</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Rich Internet Apps]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[Chicago]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[user groups]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1386</guid>
		<description><![CDATA[The Chicago JavaScript Meetup Group spurred more than 50 of its members to brave harsh weather Thursday night for the group&#8217;s fourth free get-together since its founding last October. Organizer Vlad Didenko led the charge with an in-depth look at Firebug, while assistant organizer Justin Meyer contributed a discussion of Ajax fundamentals. Pizza, soda and ...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fchicago-javascript-meetup-group-draws-a-big-audience-with-varied-skill-levels%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fchicago-javascript-meetup-group-draws-a-big-audience-with-varied-skill-levels%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><img src="http://photos1.meetupstatic.com/photos/event/7/9/2/0/global_5731008.jpeg" alt="Chicago JavaScript Meetup Group" class="right" /></p>
<p>The <a href="http://www.meetup.com/js-chi/">Chicago JavaScript Meetup Group</a> spurred more than 50 of its members to brave harsh weather Thursday night for the group&#8217;s fourth free get-together since its founding last October.</p>
<p>Organizer <a href="http://www.meetup.com/js-chi/members/8140175/">Vlad Didenko</a> led the charge with an in-depth look at Firebug, while assistant organizer <a href="http://www.meetup.com/js-chi/members/6038412/">Justin Meyer</a> contributed a discussion of Ajax fundamentals.</p>
<p><span id="more-1386"></span></p>
<p>Pizza, soda and an O&#8217;Reilly book giveaway helped fuel the event, which also included time for conversation and networking. Kudos to the organizers for overcoming a last-minute, gas leak-related scheduling snafu and relocating their event from DePaul to the CBOE.</p>
<p>Thursday&#8217;s event marked my first opportunity to attend one of these meetups. I was impressed with the turnout and the quality of the presentations despite a fairly basic target skill level. In its current configuration, the Chicago JavaScript Meetup Group probably best serves developers with at a beginner or intermediate level looking to explore the Ajax world further.</p>
<p>Based on the discussion taking place on the group&#8217;s Meetup.com page, I&#8217;m not the only person who&#8217;s eager for some more advanced topics at future installments. It looks as if the organizers are leaning toward a multi-track approach to accommodate all skill levels. Assuming that happens, count me in.</p>
<p>Didenko has posted <a href="http://didenko.com/files/firebug_demo.mp4">a screencast of his Firebug talk</a> online. <a href="http://www.meetup.com/js-chi/">Anyone can join the group</a>, which requires only a Meetup.com registration for your troubles.
<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fchicago-javascript-meetup-group-draws-a-big-audience-with-varied-skill-levels%2F&amp;linkname=Chicago%20JavaScript%20Meetup%20Group%20draws%20a%20big%20audience%20with%20varied%20skill%20levels" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fchicago-javascript-meetup-group-draws-a-big-audience-with-varied-skill-levels%2F&amp;linkname=Chicago%20JavaScript%20Meetup%20Group%20draws%20a%20big%20audience%20with%20varied%20skill%20levels" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fchicago-javascript-meetup-group-draws-a-big-audience-with-varied-skill-levels%2F&amp;linkname=Chicago%20JavaScript%20Meetup%20Group%20draws%20a%20big%20audience%20with%20varied%20skill%20levels" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fchicago-javascript-meetup-group-draws-a-big-audience-with-varied-skill-levels%2F&amp;linkname=Chicago%20JavaScript%20Meetup%20Group%20draws%20a%20big%20audience%20with%20varied%20skill%20levels" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fchicago-javascript-meetup-group-draws-a-big-audience-with-varied-skill-levels%2F&amp;linkname=Chicago%20JavaScript%20Meetup%20Group%20draws%20a%20big%20audience%20with%20varied%20skill%20levels" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fchicago-javascript-meetup-group-draws-a-big-audience-with-varied-skill-levels%2F&amp;linkname=Chicago%20JavaScript%20Meetup%20Group%20draws%20a%20big%20audience%20with%20varied%20skill%20levels" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fchicago-javascript-meetup-group-draws-a-big-audience-with-varied-skill-levels%2F&amp;linkname=Chicago%20JavaScript%20Meetup%20Group%20draws%20a%20big%20audience%20with%20varied%20skill%20levels" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fchicago-javascript-meetup-group-draws-a-big-audience-with-varied-skill-levels%2F&amp;title=Chicago%20JavaScript%20Meetup%20Group%20draws%20a%20big%20audience%20with%20varied%20skill%20levels" id="wpa2a_2">Share/Bookmark</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pathfindersoftware.com/2009/01/chicago-javascript-meetup-group-draws-a-big-audience-with-varied-skill-levels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://didenko.com/files/firebug_demo.mp4" length="72472576" type="video/mp4" />
<enclosure url="http://didenko.com/files/firebug_demo.mp4" length="72472576" type="video/mp4" />
<enclosure url="http://didenko.com/files/firebug_demo.mp4" length="72472576" type="video/mp4" />
<enclosure url="http://didenko.com/files/firebug_demo.mp4" length="72472576" type="video/mp4" />
		</item>
		<item>
		<title>jQuery 1.3: Good stuff, but the API browser&#039;s the real news</title>
		<link>http://pathfindersoftware.com/2009/01/jquery-13-good-stuff-but-the-api-browsers-the-real-news/</link>
		<comments>http://pathfindersoftware.com/2009/01/jquery-13-good-stuff-but-the-api-browsers-the-real-news/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 18:51:26 +0000</pubDate>
		<dc:creator>Brian Dillard</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Rich Internet Apps]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Ajax library]]></category>
		<category><![CDATA[Ajax toolkit]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1365</guid>
		<description><![CDATA[I&#8217;m as geeked about jQuery&#8217;s 1.3 release as the next developer. But I&#8217;m even more excited about the new API browser developed by Remy Sharp and available here. For as long as I&#8217;ve been a jQuery user &#8211; going on 18 months now &#8211; I&#8217;ve been frustrated by the slow speed and sometimes intermittent availability ...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-good-stuff-but-the-api-browsers-the-real-news%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-good-stuff-but-the-api-browsers-the-real-news%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://pathfindersoftware.com/wp-content/uploads/jquery-logo2.jpg"><img src="http://pathfindersoftware.com/wp-content/uploads/jquery-logo2.jpg" alt="jQuery logo" title="jQuery logo" width="217" height="57" class="right" /></a></p>
<p><a href="http://www.pathf.com/blogs/2009/01/jquery-13-plugins-continue-to-migrate-to-the-core/">I&#8217;m as geeked</a> about <a href="http://blog.jquery.com/2009/01/14/jquery-13-and-the-jquery-foundation/">jQuery&#8217;s 1.3 release</a> as the next developer. But I&#8217;m even more excited about the new API browser developed by <a href="http://remysharp.com/">Remy Sharp</a> and <a href="http://api.jquery.com/">available here</a>.</p>
<p>For as long as I&#8217;ve been a jQuery user &#8211; going on 18 months now &#8211; I&#8217;ve been frustrated by the slow speed and sometimes intermittent availability of <a href="http://docs.jquery.com/Main_Page">the jQuery documentation site</a>. Now we&#8217;ve got a blazing-fast API browser that presents jQuery Core and jQuery UI side by side in the same cool interface. Better yet, it&#8217;s available as an Adobe AIR app for offline viewing. Sweet!</p>
<p>I could quibble about the lack of bookmarkable URLs and the occasionally sparse documentation of corner cases. Instead, I&#8217;ll just remain upbeat about this huge step in the right direction. No matter how intuitive jQuery&#8217;s API, it&#8217;s a powerful library whose roster of methods continues to grow. Nothing speeds up development faster than quick, persistent access to quality API documentation.
<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-good-stuff-but-the-api-browsers-the-real-news%2F&amp;linkname=jQuery%201.3%3A%20Good%20stuff%2C%20but%20the%20API%20browser%26%23039%3Bs%20the%20real%20news" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-good-stuff-but-the-api-browsers-the-real-news%2F&amp;linkname=jQuery%201.3%3A%20Good%20stuff%2C%20but%20the%20API%20browser%26%23039%3Bs%20the%20real%20news" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-good-stuff-but-the-api-browsers-the-real-news%2F&amp;linkname=jQuery%201.3%3A%20Good%20stuff%2C%20but%20the%20API%20browser%26%23039%3Bs%20the%20real%20news" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-good-stuff-but-the-api-browsers-the-real-news%2F&amp;linkname=jQuery%201.3%3A%20Good%20stuff%2C%20but%20the%20API%20browser%26%23039%3Bs%20the%20real%20news" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-good-stuff-but-the-api-browsers-the-real-news%2F&amp;linkname=jQuery%201.3%3A%20Good%20stuff%2C%20but%20the%20API%20browser%26%23039%3Bs%20the%20real%20news" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-good-stuff-but-the-api-browsers-the-real-news%2F&amp;linkname=jQuery%201.3%3A%20Good%20stuff%2C%20but%20the%20API%20browser%26%23039%3Bs%20the%20real%20news" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-good-stuff-but-the-api-browsers-the-real-news%2F&amp;linkname=jQuery%201.3%3A%20Good%20stuff%2C%20but%20the%20API%20browser%26%23039%3Bs%20the%20real%20news" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-good-stuff-but-the-api-browsers-the-real-news%2F&amp;title=jQuery%201.3%3A%20Good%20stuff%2C%20but%20the%20API%20browser%26%23039%3Bs%20the%20real%20news" id="wpa2a_4">Share/Bookmark</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pathfindersoftware.com/2009/01/jquery-13-good-stuff-but-the-api-browsers-the-real-news/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery 1.3: Plugins continue to migrate to the core</title>
		<link>http://pathfindersoftware.com/2009/01/jquery-13-plugins-continue-to-migrate-to-the-core/</link>
		<comments>http://pathfindersoftware.com/2009/01/jquery-13-plugins-continue-to-migrate-to-the-core/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 18:51:01 +0000</pubDate>
		<dc:creator>Brian Dillard</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Rich Internet Apps]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[Ajax library]]></category>
		<category><![CDATA[Ajax toolkit]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Scriptaculous]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1367</guid>
		<description><![CDATA[jQuery celebrated its third birthday Wednesday with the release of the brand-new 1.3 version. This latest release includes a bunch of cool new stuff which has already been discussed to death elsewhere. To me, however, the most interesting aspect of jQuery 1.3 is the movement of former plugin functionality to the core library. Live events ...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-plugins-continue-to-migrate-to-the-core%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-plugins-continue-to-migrate-to-the-core%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://pathfindersoftware.com/wp-content/uploads/jquery-logo1.jpg"><img src="http://pathfindersoftware.com/wp-content/uploads/jquery-logo1.jpg" alt="jQuery logo" title="jQuery logo" width="217" height="57" class="left" /></a></p>
<p>jQuery celebrated its third birthday Wednesday with the release of the brand-new <a href="http://blog.jquery.com/2009/01/14/jquery-13-and-the-jquery-foundation/">1.3 version</a>. This latest release includes a bunch of cool new stuff which has already been <a href="http://ajaxian.com/archives/happy-birthday-jquery-v13-is-released">discussed to death elsewhere.</a> To me, however, the most interesting aspect of jQuery 1.3 is the movement of former plugin functionality to the core library.</p>
<p>Live events are a new twist on the venerable, and indispensable, <a href="http://brandonaaron.net/docs/livequery/">Live Query plugin</a>, while the upgraded, more granular effects queues were <a href="http://plugins.jquery.com/project/fxqueues">previously tackled by add-on authors</a>. IMHO, this kind of migration is A Good Thing, providing greater parity with other core JavaScript and effects libraries (such as Scriptaculous&#8217;s FX queue) while offering compelling feature differentiation (event binding throughout the full lifecycle of an Ajax page).
<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-plugins-continue-to-migrate-to-the-core%2F&amp;linkname=jQuery%201.3%3A%20Plugins%20continue%20to%20migrate%20to%20the%20core" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-plugins-continue-to-migrate-to-the-core%2F&amp;linkname=jQuery%201.3%3A%20Plugins%20continue%20to%20migrate%20to%20the%20core" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-plugins-continue-to-migrate-to-the-core%2F&amp;linkname=jQuery%201.3%3A%20Plugins%20continue%20to%20migrate%20to%20the%20core" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-plugins-continue-to-migrate-to-the-core%2F&amp;linkname=jQuery%201.3%3A%20Plugins%20continue%20to%20migrate%20to%20the%20core" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-plugins-continue-to-migrate-to-the-core%2F&amp;linkname=jQuery%201.3%3A%20Plugins%20continue%20to%20migrate%20to%20the%20core" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-plugins-continue-to-migrate-to-the-core%2F&amp;linkname=jQuery%201.3%3A%20Plugins%20continue%20to%20migrate%20to%20the%20core" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-plugins-continue-to-migrate-to-the-core%2F&amp;linkname=jQuery%201.3%3A%20Plugins%20continue%20to%20migrate%20to%20the%20core" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fjquery-13-plugins-continue-to-migrate-to-the-core%2F&amp;title=jQuery%201.3%3A%20Plugins%20continue%20to%20migrate%20to%20the%20core" id="wpa2a_6">Share/Bookmark</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pathfindersoftware.com/2009/01/jquery-13-plugins-continue-to-migrate-to-the-core/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ask the readers: How do you keep DRY when exposing your Rails apps to iGoogle?</title>
		<link>http://pathfindersoftware.com/2009/01/ask-the-readers-how-do-you-keep-dry-when-exposing-your-rails-apps-to-igoogle/</link>
		<comments>http://pathfindersoftware.com/2009/01/ask-the-readers-how-do-you-keep-dry-when-exposing-your-rails-apps-to-igoogle/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 19:47:37 +0000</pubDate>
		<dc:creator>Brian Dillard</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[iGoogle]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1358</guid>
		<description><![CDATA[My most recent Pathfinder project calls for a pretty typical Ruby on Rails web application with two interesting additional components: a Facebook application and an iGoogle gadget. Though a Rails Facebook plugin was easy to find, Rails development tools for iGoogle weren&#8217;t as thick on the ground. First, a bit of background: iGoogle, Google&#8217;s personalized-homepage ...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fask-the-readers-how-do-you-keep-dry-when-exposing-your-rails-apps-to-igoogle%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fask-the-readers-how-do-you-keep-dry-when-exposing-your-rails-apps-to-igoogle%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>My most recent Pathfinder project calls for a pretty typical Ruby on Rails web application with two interesting additional components: a Facebook application and an iGoogle gadget. Though <a href="http://www.pathf.com/blogs/2008/07/getting-started-with-facebooker/">a Rails Facebook plugin</a> was easy to find, Rails development tools for iGoogle weren&#8217;t as thick on the ground.</p>
<p>First, a bit of background: iGoogle, Google&#8217;s personalized-homepage service, offers developers two methods of application development:</p>
<ul>
<li>build a native gadget by wrapping custom HTML, CSS and JavaScript in an XML wrapper.</li>
<li>build a sandboxed gadget by wrapping an externally hosted web application in an iframe.</li>
</ul>
<p>Because of cross-domain security issues, gadgets that require authentication must be built using the iframe sandbox method. As it turns out, this method&#8217;s a lot easier. Instead of building a whole new interface, you can just tart up your existing app with an iGoogle-optimized user interface. Why replicate your existing view logic with a bunch of iGoogle-specific JavaScript when you can just reskin and call it a day?</p>
<p>As it turns out, though, reskinning a Rails app for iGoogle isn&#8217;t as simple as it might seem at first glance. I can think of three options. All have drawbacks:</p>
<p><span id="more-1358"></span></p>
<ol>
<li>Serve up your existing application using all the same controllers and actions. Just build a new iGoogle layout that works well within the small viewport of an iframed gadget. Of course, you&#8217;ll need a mechanism to distinguish between iGoogle requests and normal requests. Your gadget could initially call up a one-off iGoogle controller that sets a session flag (<code>session[:igoogle] => true</code>) so that all subsequent requests get the iGoogle layout. The only problem is that visits to your normal application in the same browser will get polluted by the iGoogle flag. The iGoogle interface that works so well in a tiny iframe renders your main application almost unusable in a full browser window.</li>
<li>Use the same approach as above, but use a URL flag or a URL rewriting scheme to differentiate between iGoogle and normal requests. This keeps your normal application from having its layout accidentally toggled to the iGoogle one. But it&#8217;s a lot of work. Accepting requests with an iGoogle flag is easy, but it&#8217;s much harder to make sure that every link or form submittal within your application propagates that flag.</li>
<li>Build out a complete iGoogle controller that replicates every action from your normal application that you wish to expose to the iGoogle gadget. Depending on the number of actions and the complexity of each, this could require a lot of duplicated controller code. Of course, smart use of partials would reduce the amount of view-layer effort. Still, you&#8217;ve now got a ton of essentially identical controller actions that have to be maintained in two places.</li>
</ol>
<p><strong>None of these solutions is ideal, so let&#8217;s hear from you, readers. How do you build Rails apps that lend themselves to efficient re-use within iGoogle or other sandboxed &#8220;gadget&#8221; contexts? Let us know in the comments.</strong></p>
<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fask-the-readers-how-do-you-keep-dry-when-exposing-your-rails-apps-to-igoogle%2F&amp;linkname=Ask%20the%20readers%3A%20How%20do%20you%20keep%20DRY%20when%20exposing%20your%20Rails%20apps%20to%20iGoogle%3F" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fask-the-readers-how-do-you-keep-dry-when-exposing-your-rails-apps-to-igoogle%2F&amp;linkname=Ask%20the%20readers%3A%20How%20do%20you%20keep%20DRY%20when%20exposing%20your%20Rails%20apps%20to%20iGoogle%3F" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fask-the-readers-how-do-you-keep-dry-when-exposing-your-rails-apps-to-igoogle%2F&amp;linkname=Ask%20the%20readers%3A%20How%20do%20you%20keep%20DRY%20when%20exposing%20your%20Rails%20apps%20to%20iGoogle%3F" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fask-the-readers-how-do-you-keep-dry-when-exposing-your-rails-apps-to-igoogle%2F&amp;linkname=Ask%20the%20readers%3A%20How%20do%20you%20keep%20DRY%20when%20exposing%20your%20Rails%20apps%20to%20iGoogle%3F" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fask-the-readers-how-do-you-keep-dry-when-exposing-your-rails-apps-to-igoogle%2F&amp;linkname=Ask%20the%20readers%3A%20How%20do%20you%20keep%20DRY%20when%20exposing%20your%20Rails%20apps%20to%20iGoogle%3F" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fask-the-readers-how-do-you-keep-dry-when-exposing-your-rails-apps-to-igoogle%2F&amp;linkname=Ask%20the%20readers%3A%20How%20do%20you%20keep%20DRY%20when%20exposing%20your%20Rails%20apps%20to%20iGoogle%3F" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fask-the-readers-how-do-you-keep-dry-when-exposing-your-rails-apps-to-igoogle%2F&amp;linkname=Ask%20the%20readers%3A%20How%20do%20you%20keep%20DRY%20when%20exposing%20your%20Rails%20apps%20to%20iGoogle%3F" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fask-the-readers-how-do-you-keep-dry-when-exposing-your-rails-apps-to-igoogle%2F&amp;title=Ask%20the%20readers%3A%20How%20do%20you%20keep%20DRY%20when%20exposing%20your%20Rails%20apps%20to%20iGoogle%3F" id="wpa2a_8">Share/Bookmark</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pathfindersoftware.com/2009/01/ask-the-readers-how-do-you-keep-dry-when-exposing-your-rails-apps-to-igoogle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to serve static websites and Passenger Rails projects from the same Mac OS X Apache instance</title>
		<link>http://pathfindersoftware.com/2009/01/how-to-serve-static-websites-and-passenger-rails-projects-from-the-same-mac-os-x-apache-instance/</link>
		<comments>http://pathfindersoftware.com/2009/01/how-to-serve-static-websites-and-passenger-rails-projects-from-the-same-mac-os-x-apache-instance/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 20:22:58 +0000</pubDate>
		<dc:creator>Brian Dillard</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[mod_rails]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Phusion Passenger]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1344</guid>
		<description><![CDATA[When your http://localhost/~username/ sites go haywire, it&#8217;s time to dig into your Apache config files As Rails pros know, Phusion Passenger allows you to serve multiple Rails apps on the same Apache webserver instance with few configuration or deployment headaches. When you install it in your local Mac dev environment, you can easily work on ...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fhow-to-serve-static-websites-and-passenger-rails-projects-from-the-same-mac-os-x-apache-instance%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fhow-to-serve-static-websites-and-passenger-rails-projects-from-the-same-mac-os-x-apache-instance%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<h3>When your <code>http://localhost/~username/</code> sites go haywire, it&#8217;s time to dig into your Apache config files</h3>
<p><a href="http://pathfindersoftware.com/wp-content/uploads/apache1.jpg"><img src="http://pathfindersoftware.com/wp-content/uploads/apache1.jpg" alt="OS X Apache default" title="OS X Apache default" width="300" height="264" class="right" /></a></p>
<p>As Rails pros know, <a href="http://www.modrails.com/">Phusion Passenger</a> allows you to serve multiple Rails apps on the same Apache webserver instance with few configuration or deployment headaches. When you install it in your local Mac dev environment, you can easily work on a bunch of Rails projects simultaneously without having to manually start and stop individual server instances all the time. The OS X <a href="http://www.fngtps.com/passenger-preference-pane">Passenger preference pane</a> makes deployment even easier. Just add a project, give it a custom local URL, and point it at a directory. You&#8217;re good to go.</p>
<p>But what happens if you&#8217;re already using OS X&#8217;s built-in Apache webserver to dish up local content such as PHP applications or static HTML? When I first got Passenger up and running, all of my local sites in <code>/Users/&lt;username&gt;/Sites/</code> stopped working. It took a bunch of digging, but I eventually realized that something in my Apache configuration had gotten messed up during the Passenger installation process. I was missing the configuration file for my OS X user account. OS X generates this file the first time you enable web sharing for any individual user. It&#8217;s responsible for mapping your <code>/Sites</code> subdirectory to localhost URLs, so that <code>http://localhost/~&lt;username&gt;/myapplication/</code> points to <code>/Sites/myapplication/index.html</code>.</p>
<p><span id="more-1344"></span></p>
<p>The file should live here:</p>
<pre>
/private/etc/apache2/users/&lt;username&gt;.conf
</pre>
<p>If it gets blown away, all you need to do is replace it and populate it with meaningful instructions. The contents should look like this:</p>
<pre>
&lt;Directory &quot;/Users/&lt;username&gt;/Sites/&quot;&gt;
	Options Indexes MultiViews
	AllowOverride None
	Order allow,deny
	Allow from all
&lt;/Directory&gt;
</pre>
<p>Once you&#8217;ve created and populated the file, just bounce Apache by turning Web Sharing off and then on again in the Sharing prefpane of System Preferences. Voila, your <code>http://localhost/~username/</code> URLs should start working again.</p>
<p>Just in case you want a little more background, here&#8217;s how this file gets executed by Apache:</p>
<ul>
<li>
<p>The root Apache config file is here:</p>
<pre>
/private/etc/apache2/httpd.conf
</pre>
</li>
<li>
<p>It includes the userdir module for serving local user content:</p>
<pre>
LoadModule userdir_module libexec/apache2/mod_userdir.so
</pre>
</li>
<li>
<p>Further down, it includes a separate config file for user directories:</p>
<pre>
# User home directories
Include /private/etc/apache2/extra/httpd-userdir.conf
</pre>
</li>
<li>
<p>Inside that file, you should see code like this:</p>
<pre>
# Settings for user home directories
#
# Required module: mod_userdir

#
# UserDir: The name of the directory that is appended onto a user&#x27;s home
# directory if a ~user request is received.  Note that you must also set
# the default access control for these directories, as in the example below.
#
UserDir Sites

#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf
</pre>
</li>
<li>
<p>Finally the line <code>Include /private/etc/apache2/users/*.conf</code> calls the <code>&lt;username&gt;.conf</code> file we created above.</p>
</ul>
<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fhow-to-serve-static-websites-and-passenger-rails-projects-from-the-same-mac-os-x-apache-instance%2F&amp;linkname=How%20to%20serve%20static%20websites%20and%20Passenger%20Rails%20projects%20from%20the%20same%20Mac%20OS%20X%20Apache%20instance" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fhow-to-serve-static-websites-and-passenger-rails-projects-from-the-same-mac-os-x-apache-instance%2F&amp;linkname=How%20to%20serve%20static%20websites%20and%20Passenger%20Rails%20projects%20from%20the%20same%20Mac%20OS%20X%20Apache%20instance" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fhow-to-serve-static-websites-and-passenger-rails-projects-from-the-same-mac-os-x-apache-instance%2F&amp;linkname=How%20to%20serve%20static%20websites%20and%20Passenger%20Rails%20projects%20from%20the%20same%20Mac%20OS%20X%20Apache%20instance" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fhow-to-serve-static-websites-and-passenger-rails-projects-from-the-same-mac-os-x-apache-instance%2F&amp;linkname=How%20to%20serve%20static%20websites%20and%20Passenger%20Rails%20projects%20from%20the%20same%20Mac%20OS%20X%20Apache%20instance" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fhow-to-serve-static-websites-and-passenger-rails-projects-from-the-same-mac-os-x-apache-instance%2F&amp;linkname=How%20to%20serve%20static%20websites%20and%20Passenger%20Rails%20projects%20from%20the%20same%20Mac%20OS%20X%20Apache%20instance" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fhow-to-serve-static-websites-and-passenger-rails-projects-from-the-same-mac-os-x-apache-instance%2F&amp;linkname=How%20to%20serve%20static%20websites%20and%20Passenger%20Rails%20projects%20from%20the%20same%20Mac%20OS%20X%20Apache%20instance" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fhow-to-serve-static-websites-and-passenger-rails-projects-from-the-same-mac-os-x-apache-instance%2F&amp;linkname=How%20to%20serve%20static%20websites%20and%20Passenger%20Rails%20projects%20from%20the%20same%20Mac%20OS%20X%20Apache%20instance" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F01%2Fhow-to-serve-static-websites-and-passenger-rails-projects-from-the-same-mac-os-x-apache-instance%2F&amp;title=How%20to%20serve%20static%20websites%20and%20Passenger%20Rails%20projects%20from%20the%20same%20Mac%20OS%20X%20Apache%20instance" id="wpa2a_10">Share/Bookmark</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pathfindersoftware.com/2009/01/how-to-serve-static-websites-and-passenger-rails-projects-from-the-same-mac-os-x-apache-instance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Category and UI changes on Pathfinder blogs</title>
		<link>http://pathfindersoftware.com/2008/12/category-and-ui-changes-on-pathfinder-blogs/</link>
		<comments>http://pathfindersoftware.com/2008/12/category-and-ui-changes-on-pathfinder-blogs/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 16:50:45 +0000</pubDate>
		<dc:creator>Brian Dillard</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Mobile Apps]]></category>
		<category><![CDATA[Pathfinder News]]></category>
		<category><![CDATA[Product Strategy]]></category>
		<category><![CDATA[Rich Internet Apps]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[User Experience Design]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1338</guid>
		<description><![CDATA[If you read one or more of the Pathfinder blogs in our web interface, you may have noticed some tweaks to our navigation and top-level categories. Our goal in making these changes was to help different audiences drill down to the specific content that interests them. Instead of just a few top-level categories, we now ...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fcategory-and-ui-changes-on-pathfinder-blogs%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fcategory-and-ui-changes-on-pathfinder-blogs%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>If you read one or more of the Pathfinder blogs in our web interface, you may have noticed some tweaks to our navigation and top-level categories. Our goal in making these changes was to help different audiences drill down to the specific content that interests them. Instead of just a few top-level categories, we now boast around 20, though many posts appear in multiple categories. To subscribe via RSS to any specific category &#8211; or to our entire feed &#8211; just visit our <a href="http://www.pathf.com/blogs/feeds/">Feeds</a> page.
<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fcategory-and-ui-changes-on-pathfinder-blogs%2F&amp;linkname=Category%20and%20UI%20changes%20on%20Pathfinder%20blogs" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fcategory-and-ui-changes-on-pathfinder-blogs%2F&amp;linkname=Category%20and%20UI%20changes%20on%20Pathfinder%20blogs" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fcategory-and-ui-changes-on-pathfinder-blogs%2F&amp;linkname=Category%20and%20UI%20changes%20on%20Pathfinder%20blogs" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fcategory-and-ui-changes-on-pathfinder-blogs%2F&amp;linkname=Category%20and%20UI%20changes%20on%20Pathfinder%20blogs" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fcategory-and-ui-changes-on-pathfinder-blogs%2F&amp;linkname=Category%20and%20UI%20changes%20on%20Pathfinder%20blogs" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fcategory-and-ui-changes-on-pathfinder-blogs%2F&amp;linkname=Category%20and%20UI%20changes%20on%20Pathfinder%20blogs" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fcategory-and-ui-changes-on-pathfinder-blogs%2F&amp;linkname=Category%20and%20UI%20changes%20on%20Pathfinder%20blogs" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fcategory-and-ui-changes-on-pathfinder-blogs%2F&amp;title=Category%20and%20UI%20changes%20on%20Pathfinder%20blogs" id="wpa2a_12">Share/Bookmark</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pathfindersoftware.com/2008/12/category-and-ui-changes-on-pathfinder-blogs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Receive 10% off Web Form Design: Filling in the Blanks by Luke Wroblewski</title>
		<link>http://pathfindersoftware.com/2008/12/receive-10-off-web-form-design-filling-in-the-blanks-by-luke-wroblewski/</link>
		<comments>http://pathfindersoftware.com/2008/12/receive-10-off-web-form-design-filling-in-the-blanks-by-luke-wroblewski/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 16:41:50 +0000</pubDate>
		<dc:creator>Brian Dillard</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[User Experience Design]]></category>
		<category><![CDATA[book review]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[uxd]]></category>
		<category><![CDATA[web forms]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1337</guid>
		<description><![CDATA[Rosenfeld Media contacted me after I published my review of Luke Wroblewski&#8217;s &#8220;Web Form Design: Filling in the Blanks.&#8221; They offered Agile Ajax readers 10% off &#8220;Web Form Design&#8221; or any other purchase at rosenfeldmedia.com. To redeem, simply enter the code PATHFINDER at checkout.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Freceive-10-off-web-form-design-filling-in-the-blanks-by-luke-wroblewski%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Freceive-10-off-web-form-design-filling-in-the-blanks-by-luke-wroblewski%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://pathfindersoftware.com/wp-content/uploads/webforms-lg2.gif"><img src="http://pathfindersoftware.com/wp-content/uploads/webforms-lg2.gif" alt="Web Form Design cover image" title="Web Form Design cover image" width="80" height="117" class="right" /></a></p>
<p>Rosenfeld Media contacted me after I published <a href="http://www.pathf.com/blogs/2008/12/book-recommendation-web-form-design-filling-in-the-blanks-by-wroblewski/">my review of Luke Wroblewski&#8217;s &#8220;Web Form Design: Filling in the Blanks.&#8221;</a> They offered Agile Ajax readers 10% off &#8220;Web Form Design&#8221; or any other purchase at <a href="http://rosenfeldmedia.com">rosenfeldmedia.com</a>. To redeem, simply enter the code PATHFINDER at checkout.</p>
<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Freceive-10-off-web-form-design-filling-in-the-blanks-by-luke-wroblewski%2F&amp;linkname=Receive%2010%25%20off%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Luke%20Wroblewski" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Freceive-10-off-web-form-design-filling-in-the-blanks-by-luke-wroblewski%2F&amp;linkname=Receive%2010%25%20off%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Luke%20Wroblewski" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Freceive-10-off-web-form-design-filling-in-the-blanks-by-luke-wroblewski%2F&amp;linkname=Receive%2010%25%20off%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Luke%20Wroblewski" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Freceive-10-off-web-form-design-filling-in-the-blanks-by-luke-wroblewski%2F&amp;linkname=Receive%2010%25%20off%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Luke%20Wroblewski" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Freceive-10-off-web-form-design-filling-in-the-blanks-by-luke-wroblewski%2F&amp;linkname=Receive%2010%25%20off%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Luke%20Wroblewski" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Freceive-10-off-web-form-design-filling-in-the-blanks-by-luke-wroblewski%2F&amp;linkname=Receive%2010%25%20off%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Luke%20Wroblewski" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Freceive-10-off-web-form-design-filling-in-the-blanks-by-luke-wroblewski%2F&amp;linkname=Receive%2010%25%20off%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Luke%20Wroblewski" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Freceive-10-off-web-form-design-filling-in-the-blanks-by-luke-wroblewski%2F&amp;title=Receive%2010%25%20off%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Luke%20Wroblewski" id="wpa2a_14">Share/Bookmark</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pathfindersoftware.com/2008/12/receive-10-off-web-form-design-filling-in-the-blanks-by-luke-wroblewski/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book recommendation: Web Form Design: Filling in the Blanks by Wroblewski</title>
		<link>http://pathfindersoftware.com/2008/12/book-recommendation-web-form-design-filling-in-the-blanks-by-wroblewski/</link>
		<comments>http://pathfindersoftware.com/2008/12/book-recommendation-web-form-design-filling-in-the-blanks-by-wroblewski/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 21:15:09 +0000</pubDate>
		<dc:creator>Brian Dillard</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[User Experience Design]]></category>
		<category><![CDATA[book review]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[uxd]]></category>
		<category><![CDATA[web forms]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1328</guid>
		<description><![CDATA[Usability and design guru Luke Wroblewski knows that web forms suck. More importantly, he knows why &#8211; and how to make them suck less. For the past few years, the Yahoo! product design exec has been presenting his ongoing research into the humble HTML form at conferences and on his blog, Functioning Form. I attended ...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fbook-recommendation-web-form-design-filling-in-the-blanks-by-wroblewski%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fbook-recommendation-web-form-design-filling-in-the-blanks-by-wroblewski%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://pathfindersoftware.com/wp-content/uploads/webforms-lg1.gif"><img src="http://pathfindersoftware.com/wp-content/uploads/webforms-lg1.gif" alt="Web Form Design cover image" title="Web Form Design cover image" width="161" height="235" class="right" /></a></p>
<p>Usability and design guru Luke Wroblewski knows that web forms suck. More importantly, he knows why &#8211; and how to make them suck less.</p>
<p>For the past few years, the Yahoo! product design exec has been presenting his ongoing research into the humble HTML form at conferences and on his blog, <a href="http://www.lukew.com/ff/">Functioning Form</a>. I attended Wroblewski&#8217;s presentation at An Event Apart Chicago 2007 <a href="http://www.pathf.com/blogs/2007/11/luke-w-on-web-f/">and came away super-impressed</a>. His persuasive mixture of case studies, existing research and newly commissioned usability studies helped shed light on the patterns and anti-patterns that determine whether users successfully complete your forms or give up in disgust.</p>
<p>All of Wroblewski&#8217;s preparation came to fruition earlier this year when he published <a href="http://www.rosenfeldmedia.com/books/webforms/">&#8220;Web Form Design: Filling in the Blanks&#8221;</a> (Rosenfeld Media). After finally taking the time to read the book cover to cover, I&#8217;m mad at myself for waiting so long.</p>
<p><span id="more-1328"></span></p>
<p>Written in clear, neutral prose and bolstered by numerous real-world examples, &#8220;Web Form Design&#8221; mixes low-level implementation advice with high-level analysis of the role forms play in ecommerce and Web 2.0. As the author himself puts it:</p>
<blockquote><p>Web forms are often the last and most important mile in a long journey. Despite their importance, the design of forms is often poorly thought out and conceived. Your organization may have already invested heavily in opening a relationship with its customers through high-quality marketing, site design, and search engine optimization. But now it is time to &#8220;close the deal&#8221; by making sure those customers can complete your forms.&#8221;</p></blockquote>
<p>To that end, Wroblewski divides his examination of web form construction into three sections: &#8220;Form Structure,&#8221; &#8220;Form Elements&#8221; and &#8220;Form Interaction.&#8221; The first provides the theoretical underpinnings, while the second and third provide nuts-and-bolts advice. Sidebars from additional experts provide complementary viewpoints or delve further than the main text into technical details. Individual topics include the following:</p>
<ul>
<li>the proper visual treatment and interaction design of error and success messages.</li>
<li>the breakdown of long forms into individual pages.</li>
<li>the optimal amount of spacing between form fields and labels.</li>
<li>the use of subtle graphical design elements to group related inputs logically without generating too much visual noise.</li>
<li>the proper use of color, contrast and icons in error, success and help messages.</li>
<li>the best ways to offer contextual help messages.</li>
<li>the use of intelligent defaults in some situations and the improved usability of default-free inputs in other situations.</li>
<li>the proper use of top-, left- or right-aligned form labels depending on context and form length.</li>
<li>the elimination of unnecessary form fields.</li>
<li>the proper placement and design of marketing questions and other optional form fields.</li>
</ul>
<p>While examining these topics in detail, Wroblewski always assesses the relative strengths and weaknesses of a wide range of solutions. He offers an impressive amount of usability data, including detailed eye-tracking studies and form completion statistics conducted and compiled especially for the book.</p>
<p>In many cases, the author stresses that context determines the best solution to any given user-input scenario. Readers looking for one-size-fits-all solutions may come away disappointed. But I believe Wroblewski succeeds in his goal of forcing readers to think as deeply about the design of web forms as they do about other parts of their applications.</p>
<p>Among the many design patterns Wroblewski evaluates, many draw upon the interaction conventions of Ajax and Web 2.0. Autosuggest, visual transitions, inline validation and dynamic hide/show behaviors all play their part in the book&#8217;s suggested solutions. Yet the author&#8217;s viewpoint is always that of usability and consumer satisfaction; bells and whistles are but means to an end. In one example, Wroblewski points out that popup date pickers on travel websites were originally triggered only by explicit user interaction; it was only after their use had redefined user expectations that they began to auto-launch upon focus of the relevant form fields.</p>
<p>The book takes a deliberately non-technical approach to the material. Wroblewski assumes at least a basic familiarity with the HTML elements that make up web forms, but this isn&#8217;t a book about markup, CSS or JavaScript. Instead of showing how to code a set of selection-dependent inputs using Ajax or stylesheet mojo, Wroblewski focuses on the information architecture, interaction design and usability of such components. The result is a book as useful to product managers and business decision-makers as it is to back-end programmers, UI engineers and designers.</p>
<p>&#8220;Web Form Design: Filling in the Blanks&#8221; is <a href="http://www.rosenfeldmedia.com/books/webforms/">available in paperback or PDF format from the publisher</a>. Wroblewski, proprietor of <a href="http://www.lukew.com/">LukeW Interface Designs</a>, previously published <a href="http://www.lukew.com/resources/site_seeing.html">&#8220;Site Seeing: A Visual Approach to Web Usability&#8221;</a> (Wiley, 2002).</p>
<p><strong>Update: <a href="http://www.pathf.com/blogs/2008/12/receive-10-off-web-form-design-filling-in-the-blanks-by-luke-wroblewski/">You can now purchase this book directly from the publisher for 10% off.</a></strong></p>
<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fbook-recommendation-web-form-design-filling-in-the-blanks-by-wroblewski%2F&amp;linkname=Book%20recommendation%3A%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Wroblewski" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fbook-recommendation-web-form-design-filling-in-the-blanks-by-wroblewski%2F&amp;linkname=Book%20recommendation%3A%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Wroblewski" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fbook-recommendation-web-form-design-filling-in-the-blanks-by-wroblewski%2F&amp;linkname=Book%20recommendation%3A%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Wroblewski" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fbook-recommendation-web-form-design-filling-in-the-blanks-by-wroblewski%2F&amp;linkname=Book%20recommendation%3A%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Wroblewski" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fbook-recommendation-web-form-design-filling-in-the-blanks-by-wroblewski%2F&amp;linkname=Book%20recommendation%3A%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Wroblewski" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fbook-recommendation-web-form-design-filling-in-the-blanks-by-wroblewski%2F&amp;linkname=Book%20recommendation%3A%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Wroblewski" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fbook-recommendation-web-form-design-filling-in-the-blanks-by-wroblewski%2F&amp;linkname=Book%20recommendation%3A%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Wroblewski" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fbook-recommendation-web-form-design-filling-in-the-blanks-by-wroblewski%2F&amp;title=Book%20recommendation%3A%20Web%20Form%20Design%3A%20Filling%20in%20the%20Blanks%20by%20Wroblewski" id="wpa2a_16">Share/Bookmark</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pathfindersoftware.com/2008/12/book-recommendation-web-form-design-filling-in-the-blanks-by-wroblewski/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ask a UI Guy: How should I structure my stylesheets?</title>
		<link>http://pathfindersoftware.com/2008/12/ask-a-ui-guy-how-should-i-structure-my-stylesheets/</link>
		<comments>http://pathfindersoftware.com/2008/12/ask-a-ui-guy-how-should-i-structure-my-stylesheets/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 21:52:42 +0000</pubDate>
		<dc:creator>Brian Dillard</dc:creator>
				<category><![CDATA[Rich Internet Apps]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1317</guid>
		<description><![CDATA[Welcome to &#8220;Ask a UI Guy,&#8221; an occasional new feature in which we tackle JavaScript, markup and CSS questions for an audience of server-side developers. Today&#8217;s topic: strategies for organizing your style rules into reusable components. CSS doesn&#8217;t impose much structure on its practitioners. Individual developers must build their own structure if they wish to ...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-how-should-i-structure-my-stylesheets%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-how-should-i-structure-my-stylesheets%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Welcome to &#8220;Ask a UI Guy,&#8221; an occasional new feature in which we tackle JavaScript, markup and CSS questions for an audience of server-side developers. <strong>Today&#8217;s topic: strategies for organizing your style rules into reusable components.</strong></p>
<p>CSS doesn&#8217;t impose much structure on its practitioners. Individual developers must build their own structure if they wish to escape the trap of poorly organized, inefficient code.</p>
<p>If a project kicks off without a clear shape to its stylesheets, subsequent developers are likely to plop additional styles down wherever is convenient. It&#8217;s hard to build reusable components if every style is a one-off tied to an element <code>id</code>. Stylesheets with a strong skeleton and frequent signposts encourage conscientious code that&#8217;s easier to maintain.</p>
<p>And let&#8217;s face it: CSS tools hasn&#8217;t come as far as JavaScript ones. Sure, Firebug can help you track down why element X looks the way it does. But without a clear picture of a project&#8217;s overall CSS architecture, it&#8217;s hard to alter that element&#8217;s style properties with confidence.</p>
<p><span id="more-1317"></span></p>
<h3>Every stylesheet should tell a story</h3>
<p>In my projects, I use a few simple tricks to encourage what I call <strong>narrative CSS</strong>. My premise is that every stylesheet should tell a story. In other words, developers should understand the structure of an application&#8217;s markup just by looking at the CSS &#8211; and understand exactly where a specific declaration can and will be used without having to grep through the entire codebase.</p>
<p>This tenet is based on my observations of how people make changes to existing projects: They look at the few lines of markup affected by their change, then they find the style rules that affect that markup. If the context of those style rules isn&#8217;t immediately apparent, then it&#8217;s difficult to make changes without introducing bugs or creating inefficiencies.</p>
<p>To accomplish this, I use the following guidelines:</p>
<ul>
<li>Start with a good reset.css. I recommend <a href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/">the Eric Meyer version</a>.</li>
<li>Use signpost-style comments to create a superstruture in the stylesheet.</li>
<li>Use normal comments to create a substructure.</li>
<li>Order those signposts and comments &#8211; and the rules that appear between them &#8211; from general to specific; elements to <code>class</code>es to <code>id</code>s; baselines to overrides:</li>
<li>Create <code>id</code>-based style rules only for page-level containers: headers, footers, sidebars, main content areas. Use element- or <code>class</code>-level rules for everything else.</li>
<li>When creating reusable utility classes that could go anywhere on the page, scope them only to a <code>class</code> name unique enough to prevent common namespace collision.</li>
<li>When creating components that belong in a specific page-level container, scope them to the <code>id</code> of that container.</li>
</ul>
<p>All of that theory sounds, well, theoretical. How does it play out? Let&#8217;s look at the skeleton of a typical narrative stylesheet:</p>
<ol>
<li>
<h3>Basic HTML elements</h3>
<p>Your first section should include baseline style rules for all common HTML elements. I sometimes mix in a few class overrides on those element-level rules so I can get fine-grained control on, for instance, <code>input</code> elements, which vary wildly depending on their type attribute.</p>
<pre>/************************************************************
	base element declarations
************************************************************/

body{
	background: url(/sites/pfd/img/chrome/bg.png) top left repeat-x #000;
	color: #fff;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 12px;
	line-height: 1.5em;
}

h1,h2,h3,h4,h5,h6 {
	font-family: Helvetica, sans-serif;
	font-weight: bold;
	line-height: 1.4em;
}
h1 {
	font-size: 20px;
}
h2 {
	font-size: 16px;
}
h3,h4,h5,h6{
	font-size: 14px;
}

/* links */

a {
	color: #08c;
	text-decoration: none;
}
a:hover {
	color: #444;
	text-decoration: underline;
	cursor: pointer;
}

abbr,
acronym {
	text-decoration: underline;
}
abbr:hover,
acronym:hover {
	cursor: help;
}

/* standard text tags */

b,
strong {
	font-weight: bold;
}
i,
em {
	font-style: italic;
}

/* forms */

input,
textarea,
select,
.button {

	border: 1px solid #999;
}
/*
	you must give classes to input elements
	to work around limited CSS 2.1/3 support
	in some browsers
*/
input.radio {

}
input.checkbox {

}

label {
	display: block;
	font-weight: bold;
}
.button {
	background-color: #ddd;
	font-weight: bold;
}
.button:hover {
	cursor: pointer;
}
</pre>
</li>
<li>
<h3>Reusable utility classes</h3>
<p>Your next section should include class-based rules for reusable components that aren&#8217;t tied to a specific area of the page: pipe-delimited lists, tabs, menus, definition lists, etc.</p>
<pre>/************************************************************
	reusable utility classes
************************************************************/

/* pipe-delimited list */

ul.pipeDelimitedList {

}
ul.pipeDelimitedList li {

}
ul.pipeDelimitedList li.first-child,
ul.pipeDelimitedList li:first-child {

}

/* tab navigation */

ul.tabGroup {

}
ul.tabGroup li.tab {
	display: none;
}
ul.tabGroup li.tab.activeTab {
	display: block;
}
ul.tabGroup li.tab h1 {

}
</pre>
</li>
<li>
<h3>Page layout based on the <code>id</code>s of major page-level containers</h3>
<p>When building the superstructure of your page, use <code>id</code>s and scope them within each other to make the markup patterns explicit. Overkill? Maybe. But the goal here is CSS that reads like a blueprint.</p>
<pre>/************************************************************
	page layout
************************************************************/

#container {

}
#container #header {

}
#container #main {

}
#container #main #content {

}
#container #main #sidebar {

}
#container #footer {

}
</pre>
</li>
<li>
<h3>Module layout, one page-level container at a time</h3>
<p>Now we get to the heart of the stylesheet: The specific components that can appear within a given area of the page. The navigation in your header? The search box in your side navigation? The shopping cart interface? Think of each one as a reusable component that exists within the context of a page-level container.</p>
<pre>/************************************************************
	section: header
************************************************************/

/* global navigation */

#header .navigation {

}
#header .navigation ul {

}
#header .navigation .logo {

}
#header .navigation .logo a {

}

/* boilerplate */

#header .copyright {

}
#header .byline {

}

/* shopping cart */

#header .shoppingCart {

}
#header .shoppingCart ul {

}
#header .shoppingCart ul li {

}
#header .shoppingCart ul li.total {

}
</pre>
<pre>/************************************************************
	section: main content
************************************************************/

/* module: article */

#content .article {

}
#content .article h1 {

}
#content .article p {

}

/* module: product benefits */

#content ul.benefits {

}
#content ul.benefit li {

}
#content ul.benefit li a {

}
</pre>
<pre>/************************************************************
	section: sidebar
************************************************************/

#sidebar .section {

}
#sidebar .section dl {

}
#sidebar .section dl dt {

}
#sidebar .section dl dd {

}
</pre>
<pre>#footer {

}
#footer .copyright {

}
#footer a {

}
</pre>
</li>
<li>
<h3>Specialty code tied to float-clearing, JavaScript behaviors, or image scripts such as IEPNGFix</h3>
<p>Finally, deal with style rules likely to contain a grocery list of selectors, such as containers that need their floats cleared or images that need to have their alpha transparency set via script in IE. Since you&#8217;ll add selectors to these grocery lists over time, it&#8217;s convenient to have easy access without searching the entire file.</p>
<pre>/************************************************************
	utilities: float-clearing, png-fixing, javascript, etc.
************************************************************/

/* float-clearing */

/* IE6 */

* html #head,
* html #content,
* html #content .article,
* html #rail,
* html #nav{
	height: 1%;
	overflow: visible;

}

/* IE7 */

*+html #head,
*+html #content,
*+html #content .article,
*+html #rail,
*+html #nav{
	min-height: 1%;
}

/* good doggies*/

#head:after,
#content:after,
#content .article:after,
#rail:after,
#nav:after{
	clear: both;
	content: ".";
	display: block;
	height: 0;
	visibility: hidden;
}

/* IE6 hacks for image transparency */

img,
#content #rail .railBlock .header,
#content #rail .railBlock ul.icons li {
	behavior: url(/css/iepngfix.htc);
}

/* styles used exclusively by our jQuery plugins */

.curvyCorners {

}
.someAjaxPlugin {

}
</pre>
</li>
</ol>
<p>Does this make sense? Have a better solution to CSS organization? Let us know in the comments.
<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-how-should-i-structure-my-stylesheets%2F&amp;linkname=Ask%20a%20UI%20Guy%3A%20How%20should%20I%20structure%20my%20stylesheets%3F" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-how-should-i-structure-my-stylesheets%2F&amp;linkname=Ask%20a%20UI%20Guy%3A%20How%20should%20I%20structure%20my%20stylesheets%3F" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-how-should-i-structure-my-stylesheets%2F&amp;linkname=Ask%20a%20UI%20Guy%3A%20How%20should%20I%20structure%20my%20stylesheets%3F" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-how-should-i-structure-my-stylesheets%2F&amp;linkname=Ask%20a%20UI%20Guy%3A%20How%20should%20I%20structure%20my%20stylesheets%3F" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-how-should-i-structure-my-stylesheets%2F&amp;linkname=Ask%20a%20UI%20Guy%3A%20How%20should%20I%20structure%20my%20stylesheets%3F" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-how-should-i-structure-my-stylesheets%2F&amp;linkname=Ask%20a%20UI%20Guy%3A%20How%20should%20I%20structure%20my%20stylesheets%3F" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-how-should-i-structure-my-stylesheets%2F&amp;linkname=Ask%20a%20UI%20Guy%3A%20How%20should%20I%20structure%20my%20stylesheets%3F" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-how-should-i-structure-my-stylesheets%2F&amp;title=Ask%20a%20UI%20Guy%3A%20How%20should%20I%20structure%20my%20stylesheets%3F" id="wpa2a_18">Share/Bookmark</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pathfindersoftware.com/2008/12/ask-a-ui-guy-how-should-i-structure-my-stylesheets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ask a UI Guy: What&#039;s so bad about inline styles?</title>
		<link>http://pathfindersoftware.com/2008/12/ask-a-ui-guy-whats-so-bad-about-inline-styles/</link>
		<comments>http://pathfindersoftware.com/2008/12/ask-a-ui-guy-whats-so-bad-about-inline-styles/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 19:41:53 +0000</pubDate>
		<dc:creator>Brian Dillard</dc:creator>
				<category><![CDATA[Rich Internet Apps]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[ask a UI guy]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1295</guid>
		<description><![CDATA[Welcome to &#8220;Ask a UI Guy,&#8221; an occasional new feature in which we tackle JavaScript, markup and CSS questions for an audience of server-side developers. Today&#8217;s topic: the deceptive allure and subtle peril of inline styles. When you&#8217;re first cobbling together a new feature or content page, inline styles can seem like a great idea. ...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-whats-so-bad-about-inline-styles%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-whats-so-bad-about-inline-styles%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Welcome to &#8220;Ask a UI Guy,&#8221; an occasional new feature in which we tackle JavaScript, markup and CSS questions for an audience of server-side developers. <strong>Today&#8217;s topic: the deceptive allure and subtle peril of inline styles.</strong></p>
<p>When you&#8217;re first cobbling together a new feature or content page, inline styles can seem like a great idea. You&#8217;re already editing an ERB, JSP, PHP or ASP template, so why not just write your CSS code in the same file? Throw a few <code>style</code> attributes into your HTML tags, populate them, and voila: instant look-and-feel.</p>
<p>What seems good in theory, however, quickly falls apart in practice. Many seasoned CSS developers employ external stylesheets for even the most roughshod of skunkworks. They do so with a fervor approaching that of TDD adherents carefully writing tests before even thinking about tackling actual code. People have been arguing against the use of inline styles in production code for close to a decade now, but I argue against their use at <strong>any stage of a project</strong>. Here are some of the reasons why:</p>
<p><span id="more-1295"></span></p>
<ol>
<li><strong>Inline styles break the look and feel of your site</strong>: If every page gets styled in isolation, it&#8217;s difficult to achieve a uniform look and feel. Small differences in the inline styles of different components will accumulate over time, creating a look that&#8217;s either subtly or dramatically &#8220;off.&#8221;</li>
<li><strong>Inline styles are unmaintainable, turning even small site-wide design tweaks into huge chores</strong>: The promise of CSS is that you can re-skin your site without ever editing a single piece of markup. That&#8217;s true &#8211; as long as you don&#8217;t utilize inline styles. When your design director decides your site needs more white space, it&#8217;ll be a royal pain to find every element with an inline padding declaration. Let&#8217;s hope your RegEx skills are up to snuff.</li>
<li><strong>Once you&#8217;ve written inline styles, you&#8217;ll forget to move them to an external stylesheet</strong>: Most folks know styles should eventually live in an external stylesheet. Those who employ inline styles think they&#8217;re doing so on a temporary basis. But let&#8217;s face it, once you&#8217;ve got something working, how likely are you to carefully cut, past and reformat a bunch of code to a new location and file format just to satisfy an abstract ideal such as &#8220;all styles belong in an external stylesheet&#8221;? We all start coding with the best of intentions, but real life intervenes. If you never put those styles inline to begin with, you&#8217;ll never have to move them &#8211; or feel guilty months later when you come across your code and realize they&#8217;re still stranded inside <code>style</code> attributes.</li>
<li><strong>If you do move your styles, you&#8217;ll have to come up with the proper selectors</strong>: With inline styles, you don&#8217;t need to write selectors, just rules. The tag in which your rules are declared <strong>is</strong> the selector. Once you move the styles, you&#8217;ll have to examine your markup to figure out how best to target that element. Will you add a class? Add an id? Declare your styles on the base HTML element itself? It&#8217;s no fun having to think about that hours or days after you wrote the rules themselves.</li>
<li><strong>CSS rules won&#8217;t work the same once you move them to an external stylesheet</strong>: CSS stands for &#8220;Cascading Stylesheets.&#8221; The cascade is determined by not only the type of declaration, but also the location of the declaration. Inline styles trump rules in external stylesheets. Assuming you actually do eventually move your inline styles to an external stylesheet, you&#8217;ll almost certainly have to tweak them to get them to work with the new cascade weight they carry in their final location.</li>
<li><strong>Inline styles are confusing to debug</strong>: When you&#8217;re working on an existing application with well-established and -populated external stylesheets, your use of inline styles can generate cascade confusion. Individual elements will be controlled by both inline and external styles. Sure, Firebug can tell you which rules are affecting which elements at any given time, but the mixture still makes it harder to debug a visual issue.</li>
<li><strong>Inline styles violate the DRY principle</strong>: You can&#8217;t create compound declarations with inline styles. You can&#8217;t, for instance, use a single rule to cause all <code>p</code> children of <code>div#whatever</code> to have a padding of 5px and a left float. Instead, you have to include those rules in the <code>style</code> attribute of each individual <code>p</code> element. When and if you actually move these styles to a stylesheet, they&#8217;ll either be horribly inefficient or you&#8217;ll have to rewrite them. Either way, that&#8217;s a lot of extra typing. And of course, as long as the styles remain inline, if you want to change how three sibling <code>p</code> elements look, you&#8217;ll have to change your rules in three places. Invariably you&#8217;ll remove, say, a <code>float: left</code> from two of them but not the third, then scratch your head wondering why your layout is broken.</li>
<li><strong>Inline styles are hard to read and edit</strong>: Most CSS authors write external stylesheets with one rule per line; when placed inside HTML elements, they&#8217;re part of a jumble of markup, content, scripts and styles. It&#8217;s not hard to see the enhanced readability of the second example below:
<pre>&lt;p style="color: #fc0; font-weight: bold; display: none; position: relative; left: -50px; top: 200px; float: left;"&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. &lt;a href="http://www.google.com" style="text-decoration: underline; display: block; padding: 20px; background-color: #930; color: #fff;"&gt;Quisque nisl&lt;/a&gt;. Quisque velit leo, &lt;span style="font-style: italic; color: #ffc;"&gt;ultricies nec&lt;/span&gt;, lobortis quis, iaculis ac, est.&lt;/p&gt;</pre>
<pre>p {
	color: #fc0;
	font-weight: bold;
	display: none;
	position: relative;
	left: -50px; top: 200px;
	float: left;
}
a {
	text-decoration: underline;
	display: block;
	padding: 20px;
	background-color: #930;
	color: #fff;
}
span {
	font-style: italic;
	color: #ffc;
}</pre>
</li>
<li><strong>Inline styles encourage poorly structured markup and CSS</strong>: When you&#8217;re moving your inline styles to a stylesheet, you&#8217;re likely to replace every <code>style</code> attribute with a <code>class</code> or <code>id</code> attribute so you can apply your rules to the correct elements. This apparent time-saver will keep you from unlocking the real power and elegance of CSS: the cascade. You&#8217;ll think of every element on the page as a one-off, to be styled individually. You won&#8217;t think about how to organize your selectors to apply common rules to base HTML elements while saving special styling rules for classes and ids. The result will be verbose, poorly factored CSS that&#8217;s difficult to maintain.</li>
<li><strong>Inline styles won&#8217;t get much sympathy or help from your friendly neighborhood CSS expert</strong>: CSS experts employ a variety of tricks to minimize the pain of debugging. Religious devotion to external stylesheets is often the first line of defense. When you turn to your UI gal for help on a vexsome visual issue, she may well tell you to move all of the CSS to external stylesheets before she&#8217;ll even look at it.</li>
</ol>
<p>So if inline styles cause cancer and destroy lives, why are they part of the spec in the first place? As with any tool in our technological arsenal, inline styles do have a purpose. They&#8217;re best used to help you override your stylesheets in truly exceptional circumstances.</p>
<p>One example: Page elements to which visual effects will be applied with JavaScript. Many JavaScript animation frameworks perform even basic hide/show operations by manipulating the properties of individual DOM elements rather than classes. For your markup and styles to play nicely with such frameworks, you may well need to declare a small subset of style rules inline.</p>
<p><strong>CSS experts</strong>: Are there any arguments against inline styles that I&#8217;ve missed? Are there any exceptions that I overlooked?</p>
<p><strong>Developers</strong>: Have I converted you to the cause, or have you got convincing arguments to the contrary? And what other client-side questions can I answer in future installments?
<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-whats-so-bad-about-inline-styles%2F&amp;linkname=Ask%20a%20UI%20Guy%3A%20What%26%23039%3Bs%20so%20bad%20about%20inline%20styles%3F" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-whats-so-bad-about-inline-styles%2F&amp;linkname=Ask%20a%20UI%20Guy%3A%20What%26%23039%3Bs%20so%20bad%20about%20inline%20styles%3F" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-whats-so-bad-about-inline-styles%2F&amp;linkname=Ask%20a%20UI%20Guy%3A%20What%26%23039%3Bs%20so%20bad%20about%20inline%20styles%3F" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-whats-so-bad-about-inline-styles%2F&amp;linkname=Ask%20a%20UI%20Guy%3A%20What%26%23039%3Bs%20so%20bad%20about%20inline%20styles%3F" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-whats-so-bad-about-inline-styles%2F&amp;linkname=Ask%20a%20UI%20Guy%3A%20What%26%23039%3Bs%20so%20bad%20about%20inline%20styles%3F" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-whats-so-bad-about-inline-styles%2F&amp;linkname=Ask%20a%20UI%20Guy%3A%20What%26%23039%3Bs%20so%20bad%20about%20inline%20styles%3F" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-whats-so-bad-about-inline-styles%2F&amp;linkname=Ask%20a%20UI%20Guy%3A%20What%26%23039%3Bs%20so%20bad%20about%20inline%20styles%3F" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2008%2F12%2Fask-a-ui-guy-whats-so-bad-about-inline-styles%2F&amp;title=Ask%20a%20UI%20Guy%3A%20What%26%23039%3Bs%20so%20bad%20about%20inline%20styles%3F" id="wpa2a_20">Share/Bookmark</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pathfindersoftware.com/2008/12/ask-a-ui-guy-whats-so-bad-about-inline-styles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (User agent is rejected)
Page Caching using memcached (User agent is rejected)

Served from: pathfindersoftware.com @ 2012-02-09 19:40:29 -->
