<?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>Use All Five, Inc. &#187; Jason Farrell</title>
	<atom:link href="http://useallfive.com/author/jason-farrell/feed/" rel="self" type="application/rss+xml" />
	<link>http://useallfive.com</link>
	<description>Use All Five, Inc. is located in sunny Venice Beach, CA. Stop by for a surf lesson or follow us on Twitter</description>
	<lastBuildDate>Thu, 17 May 2012 22:40:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Photoshop Life-saver: New File From Selected Layers</title>
		<link>http://useallfive.com/photoshop-life-saver-new-file-from-selected-layers/</link>
		<comments>http://useallfive.com/photoshop-life-saver-new-file-from-selected-layers/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 19:22:19 +0000</pubDate>
		<dc:creator>Jason Farrell</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://useallfive.com/?p=832</guid>
		<description><![CDATA[When designing for the web, I often need to take pieces from bigger PSDs and create smaller Photoshop files out of them. My typical process involves creating a new file—one equal in size to the document I&#8217;m working on—and then dragging all the selected layers over. Afterwards, I go through a handful of more time-consuming [...]]]></description>
			<content:encoded><![CDATA[<p>When designing for the web, I often need to take pieces from bigger PSDs and create smaller Photoshop files out of them. </p>
<p>My typical process involves creating a new file—one equal in size to the document I&#8217;m working on—and then dragging all the selected layers over. Afterwards, I go through a handful of more time-consuming steps to crop it to the contents.</p>
<p>Thankfully, after some research, I was able to streamline the process. I recorded a Photoshop action to accomplish the task in a single click!</p>
<p><strong>May 14th Update:</strong> Now includes an additional action that exports guides to the new file.</p>
<h3>Install the Action</h3>
<h4 class="download">Download:</h4>
<p><a href="http://ua5.co/Gbkg" target="_blank" class="download"><img src="http://useallfive.com/wp-content/uploads/2011/09/action-icon.png" alt="" title="Action Icon" width="40" height="36" /><span>New File From Selected Layer</span><span class="size">529 bytes</span></a><br />
<img src="http://useallfive.com/wp-content/uploads/2011/09/01-install.png" alt="" title="01-install" width="516" height="400" class="alignleft size-full wp-image-837" /></p>
<h3>First Step: Select Your Layers</h3>
<p>In this case, I want to grab the red shape and the “Flying Standby” logotype.<img src="http://useallfive.com/wp-content/uploads/2011/09/02-select-layers.jpg" alt="" title="02-select-layers" width="510" height="332" class="alignleft size-full wp-image-839" /></p>
<h3>Second Step: Run the Action</h3>
<p>Select the &#8220;New File From Selected Layers&#8221; action, press the play button.<img src="http://useallfive.com/wp-content/uploads/2011/09/03-run-the-action.png" alt="" title="03-run-the-action" width="249" height="142" class="alignleft size-full wp-image-844" /></p>
<h3>Voilà!</h3>
<p>The layers open up in a new file, cropped to fit around the layers.<img src="http://useallfive.com/wp-content/uploads/2011/09/04-success.png" alt="" title="04-success" width="391" height="358" class="alignleft size-full wp-image-840" /></p>
]]></content:encoded>
			<wfw:commentRss>http://useallfive.com/photoshop-life-saver-new-file-from-selected-layers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>When is it OK to use Flash?</title>
		<link>http://useallfive.com/when-is-it-ok-to-use-flash/</link>
		<comments>http://useallfive.com/when-is-it-ok-to-use-flash/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 17:30:56 +0000</pubDate>
		<dc:creator>Jason Farrell</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://useallfive.com/?p=714</guid>
		<description><![CDATA[There&#8217;s been a lot of debate over the last year or so about ditching Flash for HTML5. It seems like every other article in the web design world is about how awesome HTML5 is. There have also been an uprise in Flash-to-HTML5 converters on the market (don&#8217;t even think about going that route). HTML5 has [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s been a lot of debate over the last year or so about ditching Flash for HTML5. It seems like every other article in the web design world is about how awesome HTML5 is. There have also been an uprise in Flash-to-HTML5 converters on the market (don&#8217;t even think about going that route). HTML5 has also become a misappropriated catchall for everything on the web besides Flash.</p>
<p>HTML5, like it&#8217;s predecessor HTML4, is a markup language that provides instructions to web browsers for displaying content. HTML5 contains an assortment of new &#8220;tags&#8221; or features that browsers can choose to implement. The lauded features are the video and audio tags, and also the support for vector graphics and animations. In theory, these new tags aim to supplant the need for Flash.</p>
<p>Flash developers appear to be making the switch to Javascript and HTML. Although I definitely agree this HTML5 switch is a great thing, there is a need for Flash on the web. I&#8217;ve compiled a list of when it&#8217;s good practice to use Flash.</p>
<h3>Here&#8217;s when it&#8217;s OK to use Flash:</h3>
<ol>
<li>
<h4>Video</h4>
<p>Flash soars with video because of hardware acceleration and active streaming, two features the HTML5 video tag does not support natively. Hardware acceleration allows Flash to take advantage of additional computing power for smooth video playback and streaming allows for selective playback and browsing in video. Lastly, while Flash works the same cross browser; the HTML5 video tag only excels in Safari and is limited in other browsers implementations.</p>
<p><div id="attachment_747" class="wp-caption alignnone" style="width: 496px"><a href="http://anonymouscontent.com" target="_blank"><img class="size-full wp-image-747 " title="Anonymous Content" src="http://useallfive.com/wp-content/uploads/2011/05/02-video.jpg" alt="" width="486" height="330" /></a><p class="wp-caption-text">Anonymous Content - uses Flash 10 video, and HTML5 video for the iPhone/iPad.</p></div></li>
<li>
<h4>Microsites</h4>
<p>Brands, creative agencies and movie/television promotions use microsites to create fully immersive experiences for users. Flash is the preferred medium as most of these sites are multimedia heavy and require game-like interactivity. Lastly, due to the inherent nature of Flash as graphic drawing tool, these sites allow for &#8220;boundless&#8221; design without concern for the technical limitations of HTML5 and CSS3.</p>
<p><div id="attachment_760" class="wp-caption alignnone" style="width: 496px"><a href="http://morphosis.net" target="_blank"><img class="size-full wp-image-760" title="Morphosis Architects" src="http://useallfive.com/wp-content/uploads/2011/05/microsite.jpg" alt="" width="486" height="309" /></a><p class="wp-caption-text">The Morphosis Architects microsite is the front-facing companion to their sister site, Morphopedia, which is an HTML archive of all of the studio&#39;s work.</p></div></li>
<li>
<h4>Infographics</h4>
<p>Nearly anything designed in Photoshop can be achieved in Flash; stackable vectors, knocked-out typography, and simultaneous 2D/3D support. While the HTML5 Canvas tag and SVG libraries are powerful there are many shortcomings. For instance, layering various tag content is extremely difficult in HTML5 with limited computability cross browser (notably Internet Explorer).</p>
<p><div id="attachment_770" class="wp-caption alignnone" style="width: 496px"><a href="http://togethercounts.com" target="_blank"><img class="size-full wp-image-770" title="Together Counts" src="http://useallfive.com/wp-content/uploads/2011/05/together-counts.jpg" alt="" width="486" height="292" /></a><p class="wp-caption-text">The Together Counts homepage uses Flash to the display recent activity of people using the site.</p></div></li>
<li>
<h4>Interactive Banner Ads</h4>
<p>Though annoying for some, Flash ads subsidize the cost of &#8220;free&#8221; content on most websites. Ads must be eye-catching with animation and motion is a critical part of that. Flash is the best tool for this, and digital content publishers are guaranteed <a href="http://www.adobe.com/products/player_census/flashplayer/version_penetration.html" target="_blank">99.6%</a> of users on a desktop will see them.</p>
<p><div id="attachment_771" class="wp-caption alignnone" style="width: 496px"><img class="size-full wp-image-771" title="Vanguard Banner Ads" src="http://useallfive.com/wp-content/uploads/2011/05/vanguard.jpg" alt="" width="486" height="197" /><p class="wp-caption-text">The Vanguard ads use algorithms in Flash to animate the datasets of the various packages.</p></div></li>
<li>
<h4>Desktop Applications</h4>
<p>With Adobe Air and Flash, developers can build applications that run in operating systems (OS X, Windows 7, Ubuntu) without the need for a browser. Certain products that require heavy file transfer (like FTP) perform better outside of a browser, Flash with Air does this quickly and effectively. Lastly, with Air, developers have access to hard components (audio/video devices, drives and inputs) that would be out of reach within a HTML5 browser.</p>
<p><div id="attachment_769" class="wp-caption alignnone" style="width: 496px"><img class="size-full wp-image-769" title="Morphosis Multimedia Air App Uploader" src="http://useallfive.com/wp-content/uploads/2011/05/air.jpg" alt="" width="486" height="324" /><p class="wp-caption-text">Built with Flash, our clients can use an Adobe Air app to batch upload to their CMS.</p></div></li>
<li>
<h4>Multimedia and Audio</h4>
<p>Flash supports both webcam and microphone access, as well as manipulation of the two. An example of this functionality in production is a multitrack audio recorder. A user records music while simultaneously listening to the playback, which demonstrates the power of Flash&#8217;s input/output functionality.</p>
<p><div id="attachment_752" class="wp-caption alignnone" style="width: 496px"><a href="http://mysongtoyou.com"><img class="size-full wp-image-752" title="My Song To You" src="http://useallfive.com/wp-content/uploads/2011/05/05-audio.jpg" alt="" width="486" height="390" /></a><p class="wp-caption-text">My Song To You utilizes the Audio Capabilities of Flash 10.1</p></div></li>
<li>
<h4>Games</h4>
<p>Some criticism of Flash games is that the browser was never meant to be a gaming platform—however, there are countless successful games to emerge from world of Flash: Bejeweled, Canabalt, Farmville to name a few. Flash games also have the ability to reach an unprecedented amount of users as a result of social gaming through Facebook.</li>
<li>
<h4>Special UI Elements</h4>
<p>There will always be circumstances where HTML/Javascript won&#8217;t cut it. With the recent emergence of game mechanics on the web, certain websites will need to have effects and an animation throughout. When these effects are translated into UI elements, it&#8217;s sometimes not feasible to create complex keyframe animations and sound-playback with Javascript. Flash makes it simple for developers to  rapidly build out UI elements and be confident that those elements are cross-browser compatible.</p>
<p><div id="attachment_766" class="wp-caption alignnone" style="width: 496px"><a rel="attachment wp-att-766" href="http://useallfive.com/when-is-it-ok-to-use-flash/custom-ui/" target="_blank"><img class="size-full wp-image-766" title="Together Counts - Custom UI" src="http://useallfive.com/wp-content/uploads/2011/05/custom-ui.jpg" alt="" width="486" height="279" /></a><p class="wp-caption-text">Together Counts uses Flash for custom UI</p></div></li>
</ol>
<h3 class="top">The Grey Area: Full Flash Websites</h3>
<p>Most websites don&#8217;t need to be entirely Flash. Occasionally, there will be the branded experience that needs to resonate emotionally with users. With the current state of HTML/CSS/Javascript, the technology is limited in what can be built with it. Sometimes these limitations can only be overcome by Flash.</p>
<p>There are still some great and innovative uses of Flash websites on the FWA, but even entries on there are moving to HTML/Javascript. Right now the features in HTML5 are too young to do everything that Flash does, and if web designers aren&#8217;t willing to budge and embrace the limitations of HTML5, Flash websites won&#8217;t be going anywhere any time soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://useallfive.com/when-is-it-ok-to-use-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>In Defense of Wireframes</title>
		<link>http://useallfive.com/in-defense-of-wireframes/</link>
		<comments>http://useallfive.com/in-defense-of-wireframes/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 18:29:39 +0000</pubDate>
		<dc:creator>Jason Farrell</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Strategy]]></category>

		<guid isPermaLink="false">http://useallfive.com/?p=680</guid>
		<description><![CDATA[Why wireframes won&#8217;t hurt your project, and why you should be using them I recently found an article floating around in the design community titled &#8220;Why wireframes can hurt your project&#8220;. It&#8217;s by Sacha Greif, who lists a handful of reasons why the common web designer shouldn&#8217;t worry about creating wireframes. To sum it up, [...]]]></description>
			<content:encoded><![CDATA[<h3 class="top">Why wireframes won&#8217;t hurt your project, and why you should be using them</h3>
<p>I recently found an article floating around in the design community titled &#8220;<a href="http://www.attackofdesign.com/why-wireframes-can-hurt-your-project/">Why wireframes can hurt your project</a>&#8220;. It&#8217;s by Sacha Greif, who lists a handful of reasons why the common web designer shouldn&#8217;t worry about creating wireframes. To sum it up, he basically states not only do wireframes waste time, they also can negatively affect the designer&#8217;s ability to make revisions, therefore hurting the website.</p>
<p>Greif goes on to state that there are new technologies and movements that push wireframes into irrelevancy. He explains that with jQuery, the lean startup movement, and 37Signals, it isn&#8217;t necessary anymore to wireframe. What this means is, you should jump into developing and worry about problems when they arise, because you can&#8217;t predict how people will be using your website or app. Fair enough, but I still disagree.</p>
<p>When you wireframe before delving into the design, you can quickly map out your website, pages, and pieces of functionality. It ends up being the blueprint. At Use All Five, every project begins with building wireframes. It&#8217;s the easiest way to set expectations with the client. Wireframes also allow our development team to commence work before a design is in place.</p>
<p>If we were to jump into design phase immediately, trivial things such as color can hold up the entire process from being signed off by the client. The wireframe brings focus to the functionality, without having to worry about design. The whole idea is to remove subjectivity completely while mapping out the site—we tend to keep design separate from the wireframe phase.</p>
<p>Wireframes give you a clear focus and vision. It&#8217;s a manifesto and a todo-list. It can be tempting to dive into a project immediately, but without a clear definition of what the website is, it can end up in production purgatory, with no end in sight.</p>
<p>You shouldn&#8217;t also base your website off of a specific technology, it should be designed around an idea. If you use JQuery or Rails without any sort of plan, you&#8217;re going to work your  design around what technologies can do, rather than finding what technologies will work best for your idea. </p>
<p>Greif&#8217;s wireframe alternative is to create a bulleted site map. I think this is an OK idea, but the depth we put into the functionality, page-flow and navigation is worth the extra hours.</p>
<p>Don&#8217;t be lazy, plan your website out fully, wireframe, and then get to the fun stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://useallfive.com/in-defense-of-wireframes/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>User Experience and Art Direction</title>
		<link>http://useallfive.com/user-experience-and-art-direction/</link>
		<comments>http://useallfive.com/user-experience-and-art-direction/#comments</comments>
		<pubDate>Wed, 08 Dec 2010 00:40:07 +0000</pubDate>
		<dc:creator>Jason Farrell</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[art direction]]></category>
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://useallfive.com/?p=615</guid>
		<description><![CDATA[There is a lot of recent discussion in the web design community about the topic of Art Direction. This is due the influx of individually designed blog posts, made popular by designers like Jason Santa Maria. Designers can control how individual blog posts and pages can look, similarly to the magazine format. This actually isn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>There is a lot of recent discussion in the web design community about the topic of Art Direction. This is due the influx of individually designed blog posts, made popular by designers like Jason Santa Maria. Designers can control how individual blog posts and pages can look, similarly to the magazine format. This actually isn&#8217;t what art direction is at all, and if web designers want to embrace art direction, they should start at User Experience.</p>
<p>Dan Mall from A List Apart wrote a <a href="http://www.alistapart.com/articles/art-direction-and-design/" target="_blank">wonderful post</a> that explains the differences between design and art direction. He gives a clear definition between the two practices: &#8220;Art direction gives substance to design. Art direction adds humanity to design.&#8221;  Basically, art direction is the overall feeling a person experiences when they interact with a touchpoint (such as a website or a magazine). In order to build successful interactions, one must posses the talent of art directing. Art direction is the vision, the story and strategy behind the design. It&#8217;s the defined set of rules before one can begin designing.</p>
<p>A great example of where art direction and user experience meets is the <a href="http://benthebodyguard.com/" target="_blank">Ben the Bodyguard website</a>. The creatives behind the site took the very basic user experience task of a page scroll, and guided a story along with it. As you scroll down the page, Ben the Bodyguard guides you through a grimy street. Text bubbles appear that describe situations that are definitely relatable if you or anyone you know has had anything stolen. When you reach the bottom of the page, it asks for your email address to get notified when the product launches. After being involved in the narrative, it&#8217;s difficult to say no to filling out the form. This is the epitome of art direction applied to user interface, which definitely yields a pleasurable user experience.<br />
<img src="http://useallfive.com/wp-content/uploads/2010/12/Screen-shot-2010-12-07-at-2.04.18-PM-520x246.png" alt="" title="Screen shot 2010-12-07 at 2.04.18 PM" width="520" height="246" class="alignnone size-medium wp-image-618" /></p>
<p>Another example of a user experience and art direction convergence is the website we built for AIA Los Angeles. Rather than being simply a content driven calendar website of all the architecture spots and events, the site plots everything on a giant google map. The idea is to invoke the feeling of &#8220;localization&#8221; to the user or member of the association. People recognize roads and landmarks which greatly contextualizes the event listing.<br />
<img src="http://useallfive.com/wp-content/uploads/2010/11/aia-lg-520x338.jpg" alt="" title="aia-lg" width="520" height="338" class="alignnone size-medium wp-image-587" /></p>
<p>Art direction is about bringing emotion, vision, and clarity to design. When it&#8217;s combined with user interface and user experience, it&#8217;s a dangerous weapon.</p>
]]></content:encoded>
			<wfw:commentRss>http://useallfive.com/user-experience-and-art-direction/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Use All Five Projects in the News</title>
		<link>http://useallfive.com/use-all-five-projects-in-the-news/</link>
		<comments>http://useallfive.com/use-all-five-projects-in-the-news/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 17:56:23 +0000</pubDate>
		<dc:creator>Jason Farrell</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Press]]></category>

		<guid isPermaLink="false">http://useallfive.com/blog/?p=135</guid>
		<description><![CDATA[Use All Five has launched some big websites this month: Nebul.us and AIA Los Angeles, and we&#8217;re excited to say these projects have been garnering some major press. Nebul.us is a social network that serves as a way to visualize and share how you’re spending your time online. It allows people to track their browser [...]]]></description>
			<content:encoded><![CDATA[<p>Use All Five has launched some big websites this month: <a href="http://nebul.us">Nebul.us</a> and <a href="http://aialosangeles.org/">AIA Los Angeles</a>, and we&#8217;re excited to say these projects have been garnering some major press.</p>
<p>Nebul.us is a social network that serves as a way to visualize and share how you’re spending your time online. It allows people to track their browser history privately and also share content to friends. Feel free to read about the details on the <a href="http://www.useallfive.com/projects/nebulus">UA5 Nebul.us page</a>. Nebul.us was <a href="http://www.techcrunch.com/2009/11/03/nebul-us-a-new-way-to-visualize-and-share-how-youre-spending-your-time-online/">officially announced</a> by Jason Kincaid on TechCrunch just this past Tuesday (11/3). Other online publications such as <a href="http://infosthetics.com/archives/2009/11/nebulus_visualizing_your_online_activities.html#extended">Infostetic</a> have since posted their own favorable reviews.</p>
<p><a href="http://nebul.us"><img src="http://useallfive.com/wp-content/uploads/2009/11/neb.jpg" alt="neb" title="neb" width="500" height="288" class="alignnone size-full wp-image-160" /></a></p>
<div class="gap"></div>
<p>Shortly after the launch, Fast Company picked it up and wrote a <a href="http://www.fastcompany.com/blog/cliff-kuang/design-innovation/infographic-day-nebulus">comprehensive review about Nebul.us</a>. They had many kind things to say about our design:</p>
<p><a href="http://www.fastcompany.com/blog/cliff-kuang/design-innovation/infographic-day-nebulus"><img src="http://useallfive.com/wp-content/uploads/2009/11/fast-company.jpg" alt="fast-company" title="fast-company" width="214" height="298" class="alignnone size-full wp-image-146" /></a></p>
<blockquote class="alignleftimage"><p>“Though the service seems a bit complex, all of its features become intuitively obvious, the second you play with the graphic.” — Cliff Kuang of Fast Company</p></blockquote>
<p><br style="clear:left" /></p>
<div class="gap"></div>
<p><a href="http://www.techcrunch.com/2009/11/03/nebul-us-a-new-way-to-visualize-and-share-how-youre-spending-your-time-online/"><img src="http://useallfive.com/wp-content/uploads/2009/11/tc.jpg" alt="tc" title="tc" width="200" height="176" class="alignnone size-full wp-image-154" /></a><a href="http://infosthetics.com/archives/2009/11/nebulus_visualizing_your_online_activities.html"><img src="http://useallfive.com/wp-content/uploads/2009/11/infostetic.jpg" alt="infostetic" title="infostetic" width="200" height="176" class="alignnone size-full wp-image-155" /></a></p>
<p><br style="clear:left" /></p>
<div class="gap"></div>
<p>We&#8217;re also proud to announce that we launched a new website for the <a href="http://aialosangeles.org/">American Institute of Architects&#8217; Los Angeles branch</a>. The branch includes prestigious members such as <a href="http://www.morphopedia.com/people/thom-mayne">Thom Mayne</a> and Frank Gehry. We built the site on top of the Google Map API — the background is a giant map that updates its location based on where calendar or news items are located in the Los Angeles area.</p>
<p><a href="http://aialosangeles.org/"><img src="http://useallfive.com/wp-content/uploads/2009/11/aia.jpg" alt="aia" title="aia" width="500" height="288" class="alignnone size-full wp-image-171" /></a></p>
<div class="gap"></div>
<p>In other news, our client Thom Mayne of Morphosis was recently appointed by President Obama to serve on the President’s Committee on the Arts and Humanities (<a href="http://morphopedia.com/news/president-obama-announces-that-he-has-ap">Link</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://useallfive.com/use-all-five-projects-in-the-news/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox Plugin Tips (and how to make them hot)</title>
		<link>http://useallfive.com/firefox-plugin-tips-and-how-to-make-them-hot/</link>
		<comments>http://useallfive.com/firefox-plugin-tips-and-how-to-make-them-hot/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 18:09:06 +0000</pubDate>
		<dc:creator>Jason Farrell</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://useallfive.com/blog/?p=52</guid>
		<description><![CDATA[We&#8217;ve been working rigorously on a startup that needed a Firefox plugin to accomplish all of the goals for the site. After learning that Firefox extensions are built primarily of Javascript, CSS and a markup language similar to that of Flex, called XUL, we decided we had the skill-set to build it in-house. There were [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been working rigorously on a startup that needed a Firefox plugin to accomplish all of the goals for the site. After learning that Firefox extensions are built primarily of Javascript, CSS and a markup language similar to that of Flex, called XUL, we decided we had the skill-set to build it in-house.</p>
<p>There were a lot of new things we had to learn, and after many hours of production we realized we had a lot of tricks that extension developers might not be aware of. We make sure the functionality is perfect, but always focus a lot of time on UI design.</p>
<p>I&#8217;ve come up with a list of a few UI things we discovered with firefox that really give a lot of control to the designer, so the plugin doesn&#8217;t have to look stale and generic.</p>
<h3>Better looking preferences, using a list instead of tabs to navigate.</h3>
<p>Initially we build our preferences using the tabbox. This worked, but seemed cumbersome for the user. Then we looked at some of our favorite plugins — we found that the web developer toolbar does a great job with their preferences.</p>
<div id="attachment_63" class="wp-caption alignnone" style="width: 510px"><img src="http://useallfive.com/wp-content/uploads/2009/08/web-developer-toolbar.jpg" alt="The web developer toolbar uses a listbox rather than tabs for their preference navigation." title="web-developer-toolbar" width="500" height="333" class="size-full wp-image-63" /><p class="wp-caption-text">The web developer toolbar uses a listbox rather than tabs for their preference navigation.</p></div>
<p>They use a listbox that updates an iFrame to hold the preference pane with a little bit of javascript. To make this happen, you&#8217;ll need to get your XML to look something like this (you&#8217;ll have to do your positioning and wrap it in boxes on your own):</p>
<div class="codecolorer-container xml twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;listbox</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;options-preference-list&quot;</span> <span style="color: #000066;">onselect</span>=<span style="color: #ff0000;">&quot;changePreference(this)&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;listitem</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;listitem-iconic&quot;</span> <span style="color: #000066;">selected</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">image</span>=<span style="color: #ff0000;">&quot;chrome://yourplugin/skin/options/your-icon.png&quot;</span> <span style="color: #000066;">label</span>=<span style="color: #ff0000;">&quot;Account&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;chrome://yourplugin/content/options/account.xul&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;listitem</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;listitem-iconic&quot;</span> <span style="color: #000066;">selected</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">image</span>=<span style="color: #ff0000;">&quot;chrome://yourplugin/skin/options/your-icon.png&quot;</span> <span style="color: #000066;">label</span>=<span style="color: #ff0000;">&quot;Application&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;chrome://yourplugin/content/options/application.xul&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;listitem</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;listitem-iconic&quot;</span> <span style="color: #000066;">selected</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">image</span>=<span style="color: #ff0000;">&quot;chrome://yourplugin/skin/options/your-icon.png&quot;</span> <span style="color: #000066;">label</span>=<span style="color: #ff0000;">&quot;Settings&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;chrome://yourplugin/content/options/settings.xul&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/listbox<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;iframe</span> <span style="color: #000066;">flex</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;options-iframe&quot;</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;chrome://yourplugin/content/options/account.xul&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span></div></div>
<p>Then the Javascript is simply updates the frame with the selected listitem&#8217;s src attribute:</p>
<div class="codecolorer-container javascript twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">function</span> changePreference<span style="color: #009900;">&#40;</span>prefencePage<span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;options-iframe&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;src&quot;</span><span style="color: #339933;">,</span> prefencePage.<span style="color: #660066;">selectedItem</span>.<span style="color: #660066;">value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<h3>Styling the selected listitem background color</h3>
<p><img src="http://useallfive.com/wp-content/uploads/2009/08/tab-panel.jpg" alt="tab-panel" title="tab-panel" width="498" height="336" class="alignnone size-full wp-image-70" /><br />
&nbsp;</p>
<p>After we created our list, we needed to make it look better. We had no use for the default blue. There&rsquo;s a simple css trick to adjust this:</p>
<div class="codecolorer-container javascript twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">listitem<span style="color: #009900;">&#91;</span>selected<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;true&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>current<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;true&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; background<span style="color: #339933;">-</span>color<span style="color: #339933;">:</span> #057ca0<span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>This makes the selected and the current states have a blue background. You can add other properties, such as color and what not, but the [selected="true"][current="true"] is what&rsquo;s important.</p>
<h3>Communication between windows</h3>
<p>We created a simple Enable/Disable button to allow the user to start and stop the plugin. This would turn a preference to either true/false. The problem was that if there was another Firefox window running, it wouldn&rsquo;t be smart enough to know if the plugin changed. A simple fix was to make a timer check to see if the preference has changed.</p>
<div class="codecolorer-container javascript twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">checkPrefs<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #006600; font-style: italic;">//run the button check function</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">fixEnableButtons</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #006600; font-style: italic;">//update the scope (since this is in a bigger object)</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> that <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #006600; font-style: italic;">//start the timer, and run this function on time up</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> prefTimer <span style="color: #339933;">=</span> setTimeout<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>that.<span style="color: #660066;">checkPrefs</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
<br />
fixEnableButtons<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #006600; font-style: italic;">//grab the icon xul dom elements</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> enablePlugin <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'sbEnable'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> disablePlugin <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'sbDisable'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; <span style="color: #006600; font-style: italic;">//check the preference and update accordingly</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>yourplugin.<span style="color: #660066;">prefs</span>.<span style="color: #660066;">getBoolPref</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;isEnabled&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; enablePlugin.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;none&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; disablePlugin.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;block&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">else</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; enablePlugin.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;block&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; disablePlugin.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;none&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<h3>Detect tab change</h3>
<p>There&#8217;s a quick and easy way to check to see which tab your window is on. All you need to do is a listener on the gBrowser in your js:</p>
<div class="codecolorer-container javascript twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gBrowser.<span style="color: #660066;">tabContainer</span>.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;TabSelect&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> onTabChange<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<h3>Anything can be styled</h3>
<p>Firefox gives you 100% control to customize how all of the XUL items look, therefore there aren&#8217;t any excuses why your extensions don&#8217;t have to look dull!</p>
<p>For further reference, here are bookmarks of Firefox links:</p>
<p><a href="https://developer.mozilla.org/en/XUL_Reference">XUL Reference</a> &#8211; this will be your best friend.<br />
<a href="http://lifehacker.com/software/programming/how-to-build-a-firefox-extension-264490.php">How to build a Firefox extension</a><br />
<a href="http://kb.mozillazine.org/Getting_started_with_extension_development">Getting started with extension development</a><br />
<a href="http://ted.mielczarek.org/code/mozilla/extensionwiz/">Firefox/Thunderbird Extension Wizard</a> &#8211; this will generate a base template to work off of, as well as a unix file to compile it. It&#8217;s pretty awesome.<br />
<a href="http://bit.ly/eBGLD">Let&#8217;s build an extension</a> — Mozilla&#8217;s guide to building firefox extensions.<br />
<a href="https://developer.mozilla.org/en/Code_snippets/Dialogs_and_Prompts">Dialogs and Prompts</a>  &#8211; excellent overview on how dialogs and prompts work. Most plugins consist of dialogs, so it&#8217;s essential to read over this.</p>
]]></content:encoded>
			<wfw:commentRss>http://useallfive.com/firefox-plugin-tips-and-how-to-make-them-hot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Morphosis Websites Featured in Architect Magazine</title>
		<link>http://useallfive.com/morphosis-websites-featured-in-architect-magazine/</link>
		<comments>http://useallfive.com/morphosis-websites-featured-in-architect-magazine/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 16:17:55 +0000</pubDate>
		<dc:creator>Jason Farrell</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Press]]></category>

		<guid isPermaLink="false">http://useallfive.com/blog/?p=43</guid>
		<description><![CDATA[The current issue of Architect Magazine highlights the approach and strategy we developed for the websites we built for Thom Mayne&#8217;s architecture firm, Morphosis. We built two websites for different audiences. The first one, Morpohosis, is directed towards people who are unfamiliar with Morphosis and desire a thin but powerful experience behind their philosophy and [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://useallfive.com/wp-content/uploads/2009/08/0809A_AR_COVER_150_tcm20-192848.jpg" alt="0809A_AR_COVER_150_tcm20-192848" title="0809A_AR_COVER_150_tcm20-192848" width="150" height="181" class="alignnone size-full wp-image-49" />The current issue of Architect Magazine highlights the approach and strategy we developed for the websites we built for Thom Mayne&#8217;s architecture firm, Morphosis. We built two websites for different audiences. The first one, <a href="http://www.useallfive.com/projects/morphosis-website">Morpohosis</a>, is directed towards people who are unfamiliar with Morphosis and desire a thin but powerful experience behind their philosophy and projects. The second, <a href="http://www.useallfive.com/projects/morphopedia">Morphopedia</a>, is much deeper and all-inclusive. We convinced Morphosis to use Morphopedia as a distribution channel for every piece of relevant information and their connections.</p>
<blockquote><p>By design, morphopedia.com is structurally transparent and simple to navigate. It adheres to a “more is more,” seemingly free-for-all content strategy that upsets the typical PR conventions of strict control. — Braulio Agnese, Architect Magazine</p></blockquote>
<p>Read the full article at online at <a href="http://www.architectmagazine.com/internet/morphopediacom.aspx">Architect Magazine</a></p>
]]></content:encoded>
			<wfw:commentRss>http://useallfive.com/morphosis-websites-featured-in-architect-magazine/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mouse Cursors — ButtonMode — on Sprites in Papervision Materials</title>
		<link>http://useallfive.com/mouse-cursors-buttonmode-on-sprites-in-papervision-materials/</link>
		<comments>http://useallfive.com/mouse-cursors-buttonmode-on-sprites-in-papervision-materials/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 00:45:39 +0000</pubDate>
		<dc:creator>Jason Farrell</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[papervision]]></category>

		<guid isPermaLink="false">http://useallfive.com/blog/?p=25</guid>
		<description><![CDATA[Papervision (the awesome 3D engine for ActionScript 3) is limited when it comes to standard flash interactivity. Specifically something called buttonMode. When you put buttonMode = true on a 2D sprite in flash, it puts a nice cursor over your sprite, hence making it look like a button or a link. We use Pv3d&#8217;s MovieMaterial [...]]]></description>
			<content:encoded><![CDATA[<p>Papervision (the awesome 3D engine for ActionScript 3) is limited when it comes to standard flash interactivity. Specifically something called buttonMode. When you put buttonMode = true on a 2D sprite in flash, it puts a nice cursor over your sprite, hence making it look like a button or a link.</p>
<p>We use Pv3d&#8217;s MovieMaterial to texture most of our interactive 3D elements. The MovieMaterial is usually made from a sprite with children that could contain links. Pv3d doesn&#8217;t render a cursor when you hover over it, but does allow event listeners when you set interactive = true on the MovieMaterial. This gives us room for applying some unconventional methods to give us a nice pointer cursor when moving the mouse over the buttons.</p>
<p>My first idea was to dispatch an event and have my controller class listen and then change the mouse cursor to be an image of a mouse pointer. This ended up really clunky, especially when I have heavy 3D that slows down the frame rate. So the Faux mouse cursor moved very slowly and I axed the idea.</p>
<p>Then I came up with an idea that actually works very smoothly. Instead of loading in a fake cursor that replaces the mouse, I wrote a 2D sprite class that follows the mouse when the mouse hovers over the interactive sprites in 3D. This sprite would then have buttonMode = true so the mouse turns to a pointer. After that I set the sprite&#8217;s alpha to 0 so the user sees nothing happening except for their mouse cursor changing. When the user clicks, it hides the sprite so the mouse event inside the 3D material is still active. Just be sure to make your links in 3D on MOUSE_UP instead of MOUSE_CLICK</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">_contentLink.addEventListener(MouseEvent.MOUSE_UP, onContentLinkClick);</div></div>
<p>Download the <a href="http://useallfive.com/wp-content/uploads/2009/04/cursors.as">Cursors.as</a> class</p>
<p>Usage:</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">private function onSpriteLinkOver(e:MouseEvent):void{<br />
<br />
&nbsp; &nbsp; &nbsp; _cursors.start();<br />
<br />
}<br />
<br />
private function onSpriteLinkOut(e:MouseEvent):void{<br />
<br />
&nbsp; &nbsp; &nbsp; _cursors.stop();<br />
}</div></div>
]]></content:encoded>
			<wfw:commentRss>http://useallfive.com/mouse-cursors-buttonmode-on-sprites-in-papervision-materials/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

