<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
	

    <channel>
    
    <title>Website design</title>

    <link>http://ooyes.net/main/rss</link>
	
    <description>Mass Media Group is a leading Web 2.0 website design, web development and online marketing company, delivering highly-creative, brand-driven and results-focused web solutions to clients from all over the world. We are a fast growing website design company that develops high-end internet portals and websites used by hundreds of thousands of people around the world. For over past years we have been delivering effective, creative website site designs and application development for our clients from all over the world.</description>
    <dc:language>EN</dc:language>
    <dc:creator>info@ooyes.net</dc:creator>
        <sy:updatePeriod>hourly</sy:updatePeriod>
        <sy:updateFrequency>1</sy:updateFrequency>
    <dc:rights>Copyright 2009</dc:rights>
    <admin:generatorAgent rdf:resource="http://ooyes.net/" />

        
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/massmediagroup_full" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>

          <title>100 Creative Twitter Backgrounds Featuring Illustration</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/9rkSveogqsw/100-creative-twitter-backgrounds-featuring-illustration</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/100-creative-twitter-backgrounds-featuring-illustration]]></guid>
		 


          <description>&lt;p&gt;&lt;a href="http://www.webdesignerdepot.com/2009/06/100-creative-twitter-backgrounds-featuring-illustration/"&gt;&lt;img class="alignleft" alt="" width="200" height="160" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-thumb_jpg.jpg" /&gt;&lt;/a&gt;If you&amp;rsquo;ve ever created a Twitter account and customized it with some text, you would have discovered that the amount of text that you can display to describe yourself is very limited.&lt;/p&gt;
&lt;p&gt;This is where designing, creating, and publishing a creative Twitter background and using it as your billboard comes into place.&lt;/p&gt;
&lt;p&gt;Many designers and creatives utilize actual illustrations and images that will attract the viewers&amp;rsquo; attention. By capturing a reader&amp;rsquo;s imagination in the process, illustrative backgrounds will most likely remain within their memory for a longer period of time.&lt;/p&gt;
&lt;p&gt;Here are 100 creative Twitter backgrounds that feature illustration, that should inspire your own Twitter designs.&lt;/p&gt;
&lt;h1&gt;Farrhad&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/farrhad"&gt;&lt;img class="aligncenter" alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-1_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Elite Styles&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/marekuk"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-2_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Emily Chen&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/mchenwears"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-3_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Lee Maplesden&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/doubleolee"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-4_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Anousone&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/anousone"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-5_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Vonster&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/Vonster"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-6_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Scott Clark&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/scottclark"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-7_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Rogie King&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/rogieking"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-8_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;James Ridlo&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/ridlo"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-9_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Twestival Jozi&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/twestival_Jozi"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-10_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Krftd&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/Krftd"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-11_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Jwhedon&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/jwhedon"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-12_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Andy Sowards&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/andysowards"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-13_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Brian Paulwicz&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/bongobrian"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-14_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Lea&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/canvascubed"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-15_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Kiam Dean Art&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/kimdeanart"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-16_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Paul Boag&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/boagworld"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-17_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Jason Later&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/jasonslater"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-18_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Tony Chester&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://twitter.com/tonychester"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-19_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Melissa Scroggins&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/peachpops"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-20_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Brad Smith&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://twitter.com/stillframe"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-21_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Sallid&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/sallid"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-22_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Brian Sweeney&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/cattlecreative"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-23_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Aaron Miller&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/aaronmillerillz"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-24_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Lorenzo Gabba&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/_enzo"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-25_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Andrew Murphy&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/murph1che"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-26_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Matt Davis&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/mickspeake"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-27_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Holey Coww&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/holeycoww"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-28_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Jen Parks&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/rainandsprout"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-29_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Think Design&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/thinkdesign"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-30_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Evan&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/mimobot"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-31_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Graphic Identity&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/graphicidentity"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-32_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Niko Bellic&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/NIK0_BELLIC"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-33_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Adam Kayce&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/adamkayce"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-34_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Lizette Gagne&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/lizettegagne"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-35_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;CSS Girl&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/cssgirl"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-36_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Sean Carter&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/carterartist"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-37_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Djuro&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/djuro"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-38_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Yahoo&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/yahoo"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-39_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Mr. Tweet&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/MrTweet"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-40_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Ed Dale&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/Ed_Dale"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-41_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Technorati&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/technorati"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-42_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Silver-Solutions&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/anthonywoods"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-43_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Vectips&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/Vectips"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-44_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Just Tweet It&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/justtweetit"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-45_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Dark Motion&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/darkmotion"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-46_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Elitists Snob&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/elitistsnob"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-47_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Divvoted&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/divvoted"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-48_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Leeanne Lowe&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/leelowe"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-49_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Best Deals (Amazon)&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/OokongDeals"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-50_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Sean Boone&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/anexemines"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-51_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Deuhlig&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/deuhlig"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-52_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Camiseteria&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/Camiseteria"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-53_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Web Designer Depot&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/DesignerDepot"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-54_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Djambzov&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/djambazov"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-55_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Giographix&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/giographix"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-56_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Local Hero Design&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/LocalHeroDesign"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-57_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;LouPage&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/loupage"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-58_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Paul Miser&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/spurpaul"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-59_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Gareth Hardy&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/downwithdesign"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-60_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Gerri Elder&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/absolutelytrue"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-61_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Must Have Menus&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/musthavemenus"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://www.webdesignerdepot.com/wp-content/uploads/twitter_backgrounds/Twitter-62.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Mail Chimp&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/mailchimp"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-63_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Maggie Summers&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/designerm"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://www.webdesignerdepot.com/wp-content/uploads/twitter_backgrounds/Twitter-64.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Blink Interactive&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/meetblink"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-65_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Nikolina&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/nikolina100"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-66_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Sophie Miller&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/sophierc"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-67_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Nicholas Patten&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/nicholaspatten"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-68_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;_a_n_d_y&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/_a_n_d_y"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-69_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;American Hell&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/americanhell"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-70_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Desizn Tech&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/desizntech"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-71_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Bryan Lagos&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/bllq21"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-72_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;mrGTB&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/mrgtb"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-73_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Adrian Herritt&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/adrianherritt"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-74_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Sneh Roy&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/starswelove"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-75_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Cyan Banister&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/cyantist"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-76_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Michael Parenteau&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/parenteau"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-77_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Juvincent&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/juvincent"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-78_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Simona Buzatu&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/artvisiona"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-79_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Jan Cavan&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/mj12982"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-80_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Patrick Ruddell&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/chefpatrick"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-81_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Nalora Burns&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/nalora"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-82_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Kevin Dove&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/Tymebandit"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-83_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Natalie-Anne&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/natalie_pie"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-84_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Lynn Chyi&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/lychyi"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-85_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Satyakam Misra&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/webprosys"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-86_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Spurrachel&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/spurrachel"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://www.webdesignerdepot.com/wp-content/uploads/twitter_backgrounds/Twitter-87.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Travis Bucholtz&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/travisbme"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-88_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Charity Michot&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/c_michot"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-89_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;LBOI&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/lboi"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-90_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Jonathan Nelson&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/JonathanNelson"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-91_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Weird News&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/weirdnews"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-92_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Koko Hinson&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/gfxmaven"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-93_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Riku&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/riku"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-94_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Jolly Lizard&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/jollylizard"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-95_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Tucker Kimball&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/tuckerkimball"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-96_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Shirt Pizza&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/shirtpizza"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-97_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Rob James&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/rob_james"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-98_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Khai&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/ohtweet"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-99_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Karl Bastian&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://twitter.com/kidologist"&gt;&lt;img alt="Twitter Background Image" width="?" height="?" src="http://ooyes.net/userfiles/media/downloaded/100-creative-twitter-backgrounds-featuring-illustration-2009070107024339-Twitter-100_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/em&gt;&lt;em&gt;&lt;strong&gt;Which ones are your favorites? Feel free to share other examples that we may have missed.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WPRZMxrZMQ7AFq7ZyU8wBfOk8lA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WPRZMxrZMQ7AFq7ZyU8wBfOk8lA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WPRZMxrZMQ7AFq7ZyU8wBfOk8lA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WPRZMxrZMQ7AFq7ZyU8wBfOk8lA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=9rkSveogqsw:R9aUDxVOoEg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=9rkSveogqsw:R9aUDxVOoEg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=9rkSveogqsw:R9aUDxVOoEg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=9rkSveogqsw:R9aUDxVOoEg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=9rkSveogqsw:R9aUDxVOoEg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/9rkSveogqsw" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 28 Oct 2009 06:33:22 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/100-creative-twitter-backgrounds-featuring-illustration</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/R9aUDxVOoEg/100-creative-twitter-backgrounds-featuring-illustration</feedburner:origLink></item>

        
        
        <item>

          <title>Website Designs Inspired by Apple</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/zzZh-1ceDjY/website-designs-inspired-by-apple</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/website-designs-inspired-by-apple]]></guid>
		 


          <description>&lt;div&gt;
&lt;p&gt;&amp;nbsp;It&amp;rsquo;s well known that Apple is one of the most creative and innovative companies in the world, so it&amp;rsquo;s no wonder that many software companies and web designers would choose to follow Apple&amp;rsquo;s style of branding.&lt;/p&gt;
&lt;p&gt;The Apple website is one of the best websites out there due to its ease of use, functionality and the beautiful environment that it creates.&lt;/p&gt;
&lt;p&gt;I looked at websites that use one or more design elements inspired by Apple.com. Some of these sites sell Mac software and apps, so it makes sense for them to keep the same Apple look and feel. Consider this though: How many software companies that develop for Windows, choose to brand their websites to look like Vista? I have included a few screenshots of the Apple website, just in case you haven&amp;rsquo;t never seen it before.&lt;/p&gt;
&lt;h2&gt;Apple.com&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.apple.com/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-apple3_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://store.apple.com/us"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-apple_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.apple.com/mac/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-apple2_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.apple.com/mobileme/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-mobileme_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;1. Icon Designer&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://icondesigner.net/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-hyperspaces_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;2. iSlayer&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://islayer.com/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-islayer_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;3. Versions&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://versionsapp.com/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-versions_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;4. Checkout&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://checkoutapp.com/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-checkout_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;5. Small Transport&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://smalltransport.com/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-smalltransport_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;6. MacRabbit&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://macrabbit.com/cssedit/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-cssedit_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;7. 280 Slides&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://280slides.com/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-280slides_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;8. Disco&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://discoapp.com/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-disco_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;9. Warehouse&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://warehouseapp.com/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-warehouse_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;10. Cha-Ching&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://midnightapps.com/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-chaching_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;11. RapidWeaver&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://realmacsoftware.com/rapidweaver/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-rapidweaver_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;12. DeskLickr&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://desklickr.isnot.tv/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-desklickr_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;13. Tangerine!&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.potionfactory.com/tangerine"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-tangerine_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;14. 1Password&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://agilewebsolutions.com/products/1Password"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-1password_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;15. Jumsoft&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.jumsoft.com/money/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-money_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;16. Roxio Toast&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.roxio.com/enu/products/toast/titanium/overview.html"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-toast_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;17. CandyBar&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.panic.com/candybar/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-candybar_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;18. Cultured Code&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://culturedcode.com/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-things_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;19. Anxiety&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.anxietyapp.com/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-anxiety_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;20. Tao Effect&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.taoeffect.com/espionage/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-espionage_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;21. TaskMate&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://gettaskmate.com/"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-taskmate_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;22. The Invoice Machine&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://invoicemachine.com/home"&gt;&lt;img alt="" width="615" height="500" src="http://ooyes.net/userfiles/media/downloaded/website-designs-inspired-by-apple-2009102212283886-invoicemachine_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;strong&gt;&lt;em&gt;Do you know of any other good examples? Please share with us&amp;hellip;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cMGbhK08IOGbPa8VungFEtfGqBI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cMGbhK08IOGbPa8VungFEtfGqBI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cMGbhK08IOGbPa8VungFEtfGqBI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cMGbhK08IOGbPa8VungFEtfGqBI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=zzZh-1ceDjY:YFnCO8qs-Rs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=zzZh-1ceDjY:YFnCO8qs-Rs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=zzZh-1ceDjY:YFnCO8qs-Rs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=zzZh-1ceDjY:YFnCO8qs-Rs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=zzZh-1ceDjY:YFnCO8qs-Rs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/zzZh-1ceDjY" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 22 Oct 2009 06:47:43 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/website-designs-inspired-by-apple</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/YFnCO8qs-Rs/website-designs-inspired-by-apple</feedburner:origLink></item>

        
        
        <item>

          <title>JavaScript font libraries and frameworks</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/q166qHrPQdo/javascript-font-libraries-and-frameworks</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/resources/javascript-font-libraries-and-frameworks]]></guid>
		 


          <description>&lt;p&gt;JavaScript font libraries and frameworks&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SKAu68KYkEP6hDFpiXN0cPQSYTM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SKAu68KYkEP6hDFpiXN0cPQSYTM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SKAu68KYkEP6hDFpiXN0cPQSYTM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SKAu68KYkEP6hDFpiXN0cPQSYTM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=q166qHrPQdo:GtekwEF1EOs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=q166qHrPQdo:GtekwEF1EOs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=q166qHrPQdo:GtekwEF1EOs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=q166qHrPQdo:GtekwEF1EOs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=q166qHrPQdo:GtekwEF1EOs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/q166qHrPQdo" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 21 Oct 2009 10:42:59 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/resources/javascript-font-libraries-and-frameworks</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/GtekwEF1EOs/javascript-font-libraries-and-frameworks</feedburner:origLink></item>

        
        
        <item>

          <title>Parola Plus</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/WXu5y7x5oGs/parola-plus</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/portfolio/parola-plus]]></guid>
		 


          <description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/R1yTvxoG48j-iNQq-5lMFMUSGv8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R1yTvxoG48j-iNQq-5lMFMUSGv8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/R1yTvxoG48j-iNQq-5lMFMUSGv8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R1yTvxoG48j-iNQq-5lMFMUSGv8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=WXu5y7x5oGs:Z_67ODw389I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=WXu5y7x5oGs:Z_67ODw389I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=WXu5y7x5oGs:Z_67ODw389I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=WXu5y7x5oGs:Z_67ODw389I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=WXu5y7x5oGs:Z_67ODw389I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/WXu5y7x5oGs" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 21 Oct 2009 05:30:07 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/portfolio/parola-plus</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/Z_67ODw389I/parola-plus</feedburner:origLink></item>

        
        
        <item>

          <title>Intelli</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/Tc7efPJwZxc/business-proposals-web-design</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/portfolio/business-proposals-web-design]]></guid>
		 


          <description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gXAClO0D3GOJqtho9cpsifUH8zo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gXAClO0D3GOJqtho9cpsifUH8zo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gXAClO0D3GOJqtho9cpsifUH8zo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gXAClO0D3GOJqtho9cpsifUH8zo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=Tc7efPJwZxc:mnGcr_U9WmE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=Tc7efPJwZxc:mnGcr_U9WmE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=Tc7efPJwZxc:mnGcr_U9WmE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=Tc7efPJwZxc:mnGcr_U9WmE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=Tc7efPJwZxc:mnGcr_U9WmE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/Tc7efPJwZxc" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 21 Oct 2009 05:15:46 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/portfolio/business-proposals-web-design</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/mnGcr_U9WmE/business-proposals-web-design</feedburner:origLink></item>

        
        
        <item>

          <title>iPhone Apps Design Mistakes: Over-Blown Visuals</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/wAvR8haw43o/iphone-apps-design-mistakes-over-blown-visuals</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/iphone-apps-design-mistakes-over-blown-visuals]]></guid>
		 


          <description>&lt;!-- google_ad_section_start --&gt;
&lt;p&gt;The development of &lt;strong&gt;iPhone applications&lt;/strong&gt; has recently become a hot topic in the design community; everybody tries to come up with some creative idea, port it into a stylish iPhone-alike application and sell it to thousands of users through the iPhone app store. However, many of these applications are poorly designed and therefore miss the chance of providing users with a truly useful product that users would find worth recommending to friends and colleagues.&lt;/p&gt;
&lt;p&gt;We want to take a closer look at the design of iPhone applications and showcase some good and bad examples, best practices as well as useful ideas and recommendations for your next iPhone app design. This article is a first post of a new series related to the &lt;strong&gt;design of iPhone applications&lt;/strong&gt;. Please let us know if you are interested in the follow-ups to this article in the poll and in the comments below. How should it look like? What should we improve? Please also feel free to suggest more iPhone app design mistakes in the comments to this post!&lt;/p&gt;
&lt;h3&gt;Are iPhone apps really not good enough?&lt;/h3&gt;
&lt;p&gt;&amp;ldquo;It&amp;rsquo;s only 99 cents. Who cares if it sucks? I&amp;rsquo;m still trying it.&amp;rdquo; How many times have you said something like that to yourself before downloading the next promising iPhone app? How many screen-fulls of those apps do you have on your iPhone? 4? 6? 10? And how many of them do you actually use?&lt;/p&gt;
&lt;p&gt;On average, only 3% of people who have downloaded an app use it after 30 days. Why? Because the majority of iPhone apps don&amp;rsquo;t make any sense to users. The situation is similar to that of PC software a couple of decades ago. Have we not learned from our mistakes?&lt;/p&gt;
&lt;p&gt;iPhone applications nowadays are designed by developers who seem to care only about their app&amp;rsquo;s implementation. When an app goes live, its beautiful code or visual design often fail to address real customers&amp;rsquo; needs. The result: &lt;strong&gt;thousands of useless applications in the App Store&lt;/strong&gt; that people download and use once and then never again. These applications often don&amp;rsquo;t make sense to customers because of a poor interaction design.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media2.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/free-full.jpg"&gt;&lt;img width="480" height="347" alt="Free applications usage over time" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-graph_jpg.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Free applications usage over time: Percentage of users returning versus number of days since first used. On second day, 20% returning users; on the 30th day, only 3%. By &lt;a href="http://www.pinchmedia.com/blog/appstore-secrets/"&gt;Pinch Media&lt;/a&gt;. &lt;a href="http://media1.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/free-full.jpg"&gt;Larger image&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media2.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/paid-full.jpg"&gt;&lt;img width="480" height="334" alt="Paid applications usage over time" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-paid_jpg.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Paid applications usage over time: Percentage of users returning versus number of days since first used. It&amp;rsquo;s not really different from the graph above. Paid applications generally retain their users longer than free applications, although the drop-off is still pretty steep. By &lt;a href="http://www.pinchmedia.com/blog/appstore-secrets/"&gt;Pinch Media&lt;/a&gt;. &lt;a href="http://media1.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/paid-full.jpg"&gt;Larger image&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media1.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/by-category-full.jpg"&gt;&lt;img width="480" height="381" alt="Applications usage over time" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-usage_jpg.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Users stop using the average applications pretty quickly. Long-term audiences are generally 1% of total downloads. By &lt;a href="http://www.pinchmedia.com/blog/appstore-secrets/"&gt;Pinch Media&lt;/a&gt;. &lt;a href="http://media2.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/by-category-full.jpg"&gt;Larger image&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gizmodo.com/5133070/iphone-app-store-hits-500-million-downloads-we-break-down-the-numbers"&gt;&lt;img width="189" height="94" alt="500 million iPhone Apps downloads breakdown" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-breakdown_jpg.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Hilarious &lt;a href="http://gizmodo.com/5133070/iphone-app-store-hits-500-million-downloads-we-break-down-the-numbers"&gt;500 million downloads breakdown&lt;/a&gt;, by Gizmodo. &lt;a href="http://media1.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/chart.png"&gt;Larger version&lt;/a&gt; (Copyright: Gizmodo)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It shouldn&amp;rsquo;t be this way. Developers should be writing applications that people love so much that they would pay $9.99 or even $99.99 for each of them. There&amp;rsquo;s no programming technique that teaches you how to do this. But there is something else, and it&amp;rsquo;s called &lt;strong&gt;interactive design&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Five Most Frequent iPhone Design Mistakes&lt;/h3&gt;
&lt;p&gt;Many applications share the same design problems that prevent customers from fully enjoying them. Recently, I conducted a &lt;strong&gt;review of 100 apps&lt;/strong&gt; from the App Store and identified the five most frequent iPhone design and usability mistakes, which are:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Over-blown visuals.&lt;/li&gt;
    &lt;li&gt;Neglecting technological limitations, such as slow Internet connection, slow processors and single-threaded OS architectures.&lt;/li&gt;
    &lt;li&gt;Confusing navigation (flow, layout and taxonomy).&lt;/li&gt;
    &lt;li&gt;Confusing the iPhone with a computer. Neglecting to use new iPhone interactions (fingers instead of the mouse; multi-touch gestures; turn, tilt and rotate) and technological features such as phone functions, built-in GPS and accelerometer.&lt;/li&gt;
    &lt;li&gt;Disregard of context. A lack of understanding of how, when, where and why the mobile device is being used.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Let&amp;rsquo;s start with the first one in this article and proceed with the next ones in the follow-ups to this article.&lt;/p&gt;
&lt;h3&gt;Mistake #1. Over-Blown Visuals&lt;/h3&gt;
&lt;p&gt;Probably the oldest, yet extremely popular design problem is &lt;strong&gt;overdesign&lt;/strong&gt;. Designers of iPhone applications often tend to disregard common design and usability conventions by offering users slick and shiny user interface designs that go way beyond their standard look and also way beyond their claimed functionality.&lt;/p&gt;
&lt;p&gt;Why make things look, feel and work complicated and why do designers like to re-invent the wheel? The answer is simple: they want the application to be different; look different and stand out from the crowd. Unfortunately, a different look isn&amp;rsquo;t necessarily helpful for application&amp;rsquo;s usability and functionality.&lt;/p&gt;
&lt;p&gt;So how does an over-design in iPhone applications look like? To better understand it, let&amp;rsquo;s look at an example:&lt;/p&gt;
&lt;p&gt;&lt;a title="Motion X GPS settings screen" height="480" width="320" href="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-overdesigned_jpg.jpg"&gt;&lt;img width="320" height="480" alt="Overdesigned iPhone app example" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-overdesigned_jpg.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Motion X GPS settings.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;What do you think is wrong with the design in this first screenshot? Some of you may say, &amp;ldquo;Well, nothing is really wrong with it. It&amp;rsquo;s beautiful.&amp;rdquo; I agree, it&amp;rsquo;s pretty slick. But, there&amp;rsquo;s a catch: while beautiful, it is also inconsistent with other apps. It&amp;rsquo;s different. Let&amp;rsquo;s compare this screen to the settings screens of other iPhone applications:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media1.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/big-full.jpg"&gt;&lt;img width="480" height="328" alt="Overdesigned iPhone app example" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-others1_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media2.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/big-full.jpg"&gt;&lt;img width="480" height="333" alt="Overdesigned iPhone app example" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-others2_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media1.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/big-full.jpg"&gt;&lt;img width="480" height="334" alt="Overdesigned iPhone app example" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-others3_jpg.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Motion X GPS settings screen, compared to the settings screens of other apps. (Click to enlarge.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Noticed the difference? Being inconsistent with other products makes yours worse for two reasons:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Going against convention makes your application less intuitive. Over-styled controls look different and require users to re-learn how they work.&lt;/li&gt;
    &lt;li&gt;It&amp;rsquo;s a waste of time and money. The resources you have spent to make your app look different, but not necessarily &lt;em&gt;better&lt;/em&gt;, could have been used much more effectively.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Breaking Convention Makes Your App Less Intuitive&lt;/h4&gt;
&lt;p&gt;The more familiar the parts of your app are, the more intuitive the app will be for whoever uses it. If we recognize the parts, we will be able to learn how to use the whole faster. It&amp;rsquo;s like reading: knowing the alphabet and meanings of words allows us to &amp;ldquo;decode&amp;rdquo; books we haven&amp;rsquo;t seen before.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s an example from the real world. Try to make the stop sign more &amp;ldquo;beautiful&amp;rdquo; and people will inevitably start dying:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media2.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/error-full.jpg"&gt;&lt;img width="500" height="440" alt="Overdesigned iPhone app example" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-error1_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media1.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/error-full.jpg"&gt;&lt;img width="500" height="427" alt="Overdesigned iPhone app example" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-error2_jpg.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;&amp;ldquo;Sign B, 2, &amp;lsquo;STOP,&amp;rsquo; shall be used to notify drivers that, at the intersection where the sign is placed, they shall stop before entering the intersection and give way to vehicles on the road they are approaching.&amp;rdquo; Article 10 of &lt;a href="http://www.unece.org/trans/conventn/Conv_road_signs_2006v_EN.pdf"&gt;2006 road signs convention&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In his paper &lt;a href="http://www.asktog.com/papers/raskinintuit.html"&gt;Intuitive Equals Familiar&lt;/a&gt; (Communications of the ACM. 37:9, September 1994, page 17), Jeff Raskin, an American human-computer interface expert best known for starting the Macintosh project for Apple Computer in the late 1970s, writes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;The impression that the phrase &amp;lsquo;this interface feature is intuitive&amp;rsquo; leaves is that the interface works the way the user does, that normal human &amp;lsquo;intuition&amp;rsquo; suffices to use it, that neither training nor rational thought is necessary, and that it will feel &amp;lsquo;natural.&amp;rsquo;&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;However,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;&amp;hellip; it is clear that a user interface feature is &amp;lsquo;intuitive&amp;rsquo; insofar as it resembles or is identical to something the user has already learned. In short, &amp;ldquo;intuitive&amp;rdquo; in this context is an almost exact synonym of &amp;lsquo;familiar.&amp;rsquo;&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Drastically re-designing every user interface element will make your application less intuitive, which will lead to more user mistakes and a longer learning curve. Eventually, you will lose customers because of it.&lt;/p&gt;
&lt;h4&gt;What About Branding?&lt;/h4&gt;
&lt;p&gt;Is there place for branding in applications that are strictly following general design guidelines and usability conventions? Definitely! It is possible to strike a balance between having a unique look but not over-designing. Here&amp;rsquo;s one example:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media2.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/branding.jpg"&gt;&lt;img width="432" height="339" alt="Overdesigned iPhone app example" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-controls_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s take a look at an example of overdesigning by Bloomberg. Here, we have an over-designed text input field at the top. You can barely recognize this as a field when you first look at it. The version on the right hand side is much better. A standard input field makes the screen&amp;rsquo;s purpose much clearer, while remaining consistent with the application&amp;rsquo;s style and branding.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media1.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/ex1.jpg"&gt;&lt;img width="500" height="364" alt="Bloomberg" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-ex1-small_jpg.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;&lt;a href="http://media2.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/ex1.jpg"&gt;Larger version&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here is another example by iFitness. Users are supposed to enter their weight day by day on this screen. But you have to flip through the months and days with a horizontal swipe to find the right one, and then you have to enter your weight digit by digit using five separate scroll fields. And then you have to press the very modest &amp;ldquo;Record&amp;rdquo; button, which you miss at first anyway and only find the hard way: after you have lost data. Much better:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media2.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/ex2.jpg"&gt;&lt;img width="500" height="336" alt="iFitness" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-ex2-small_jpg.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;&lt;a href="http://media1.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/ex2.jpg"&gt;Larger version&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;99.9% of users will want to enter &lt;em&gt;today&amp;rsquo;s&lt;/em&gt; weight. This redesigned interface has one-quarter of the controls. The screen space that has been saved can now be used to present useful information, such as weight statistics. Date and time can be recorded automatically, and the selection of the metric or imperial system of measurement, which is not terribly important, has been demoted to a settings screen.&lt;/p&gt;
&lt;p&gt;The Yellow Pages app uses tabs, which work well on the Web, but standard toggle controls are more familiar to iPhone users.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media2.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/ex3.jpg"&gt;&lt;img width="500" height="323" alt="Yellow Pages" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-ex3-small_jpg.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;&lt;a href="http://media1.smashingmagazine.com/wp-content/uploads/images/iphone-design-mistakes-overdesign/ex3.jpg"&gt;Larger version&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;Waste of Time and Money&lt;/h4&gt;
&lt;p&gt;Apple has already done an excellent job of creating standardized controls. Losing some of that functionality is almost guaranteed if you try to reinvent the wheel.&lt;/p&gt;
&lt;p&gt;Back to our earlier example:&lt;/p&gt;
&lt;p&gt;&lt;img width="331" height="220" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-back_jpg.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;If we take a closer look, we&amp;rsquo;ll see that one-third of the screen space we would have had is now lost because of over-designing.&lt;/p&gt;
&lt;p&gt;&lt;img width="496" height="431" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-example_jpg.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;iPhone OS&amp;nbsp;3.0&amp;nbsp;introduced &lt;a href="http://www.apple.com/iphone/iphone-3gs/accessibility.html"&gt;accessibility features&lt;/a&gt;. One of the modes is &lt;em&gt;White on Black&lt;/em&gt;. Here&amp;rsquo;s&amp;nbsp;what happens to our controls after inverting colors:&lt;/p&gt;
&lt;p&gt;&lt;img width="310" height="83" src="http://ooyes.net/userfiles/media/downloaded/iphone-apps-design-mistakes-over-blown-visuals-2009072111051851-reverse_jpg.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Color, shape and text survived color inversion. However, 2/3 of original meaning is lost. Now there is only text.&lt;/p&gt;
&lt;p&gt;In sum, this redesign has given us twice as many UI elements, taking up twice as much real estate. The catch is, even if you haven&amp;rsquo;t made the controls worse, you still haven&amp;rsquo;t added much value and you have lost time and money in the process.&lt;/p&gt;
&lt;h4&gt;That Time and Money Could Have Been Spent On&amp;hellip;&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Design is all about solving problems&lt;/strong&gt;. Sometimes, when people don&amp;rsquo;t know exactly what problem they are solving, they wander in the design process, and the result is over-designed. To avoid that, you must have a clear picture of the problem you need to solve.&lt;/p&gt;
&lt;p&gt;One of the best ways to get that picture is to talk to your users (both current and potential). Only when you know your customers&amp;rsquo; needs will you be able to build an application they&amp;rsquo;ll love.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Don&amp;rsquo;t overdesign&lt;/em&gt;. Be sure your house has a solid foundation before you decorate it. You will be rewarded with more loyal customers and higher download rates surprisingly quickly.&lt;/p&gt;
&lt;p&gt;(Hopefully) coming soon: #2 iPhone&amp;rsquo;s Technological Limitations. What Apple hasn&amp;rsquo;t told you.&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;&amp;copy; Alexander Komarov for &lt;a href="http://www.smashingmagazine.com"&gt;Smashing Magazine&lt;/a&gt;, 2009. | &lt;a href="http://www.smashingmagazine.com/2009/07/21/iphone-apps-design-mistakes-overblown-visuals/"&gt;Permalink&lt;/a&gt; |  &lt;a href="http://www.smashingmagazine.com/2009/07/21/iphone-apps-design-mistakes-overblown-visuals/#comments"&gt;28 comments&lt;/a&gt; |  &lt;a href="http://del.icio.us/post?url=http://www.smashingmagazine.com/2009/07/21/iphone-apps-design-mistakes-overblown-visuals/&amp;amp;title=iPhone Apps Design Mistakes: Over-Blown Visuals" title="Bookmark in del.icio.us"&gt;Add to del.icio.us&lt;/a&gt; | &lt;a href="http://digg.com/submit?phase=2&amp;amp;url=http://www.smashingmagazine.com/2009/07/21/iphone-apps-design-mistakes-overblown-visuals/" title="Bookmark in Digg"&gt;Digg this&lt;/a&gt; | &lt;a href="http://www.stumbleupon.com/submit?url=http://www.smashingmagazine.com/2009/07/21/iphone-apps-design-mistakes-overblown-visuals/" title="Stumble on StumbleUpon"&gt;Stumble on StumbleUpon!&lt;/a&gt; | &lt;a href="http://twitter.com/home?status=@tweetmeme%20@smashingmag%20Reading%20&amp;#039;iPhone Apps Design Mistakes: Over-Blown Visuals&amp;#039; http://www.smashingmagazine.com/2009/07/21/iphone-apps-design-mistakes-overblown-visuals/" title="Tweet us!"&gt;Tweet it!&lt;/a&gt; | &lt;a href="http://reddit.com/submit?url=http://www.smashingmagazine.com/2009/07/21/iphone-apps-design-mistakes-overblown-visuals/" title="Bookmark in Reddit"&gt;Submit to Reddit&lt;/a&gt; | &lt;a href="http://forum.smashingmagazine.com/"&gt;Forum Smashing Magazine&lt;/a&gt;  &lt;br /&gt;
Post tags: &lt;a rel="tag" href="http://www.smashingmagazine.com/tag/design/"&gt;design&lt;/a&gt;, &lt;a rel="tag" href="http://www.smashingmagazine.com/tag/iphone/"&gt;iphone&lt;/a&gt;&lt;br /&gt;
&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kBD3N3A25PBiFpZfMtPctVyJpZ0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kBD3N3A25PBiFpZfMtPctVyJpZ0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kBD3N3A25PBiFpZfMtPctVyJpZ0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kBD3N3A25PBiFpZfMtPctVyJpZ0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=wAvR8haw43o:afN-ut0dB0M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=wAvR8haw43o:afN-ut0dB0M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=wAvR8haw43o:afN-ut0dB0M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=wAvR8haw43o:afN-ut0dB0M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=wAvR8haw43o:afN-ut0dB0M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/wAvR8haw43o" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 19 Oct 2009 03:49:13 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/iphone-apps-design-mistakes-over-blown-visuals</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/afN-ut0dB0M/iphone-apps-design-mistakes-over-blown-visuals</feedburner:origLink></item>

        
        
        <item>

          <title>How To Automate Optimization and Deployment Of Static Content</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/jVbj0562c18/how-to-automate-optimization-and-deployment-of-static-content</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/how-to-automate-optimization-and-deployment-of-static-content]]></guid>
		 


          <description>&lt;!-- google_ad_section_start --&gt;
&lt;p&gt;A lot of traffic between users and your site comes from the static content you&amp;rsquo;re using to set up the user interface, namely layout graphics, Stylesheets and Javascript files.&lt;/p&gt;
&lt;p&gt;This article shows a method to improve the providing of static content for a web platform. Further, it will show you a way to &lt;strong&gt;automate the deployment&lt;/strong&gt; of these files, so you can deliver them with least effort but with maximum performance.&lt;/p&gt;
&lt;p&gt;This tutorial will take some time to set it up, but it&amp;rsquo;s going to &lt;strong&gt;save you hours&lt;/strong&gt; of work in the future and will improve your page speed significantly.&lt;/p&gt;
&lt;h3&gt;1. Why do I need this?&lt;/h3&gt;
&lt;p&gt;There are several approaches to optimize the delivery of contents.&lt;br /&gt;
Some use on-the-fly compression via the server itself or a scripting language, which costs performance and does not optimize the structure and content of the files.&lt;/p&gt;
&lt;p&gt;The method shown here prepares the files once and also merges and optimizes the code of CSS and Javascript files &lt;strong&gt;before&lt;/strong&gt; the files are compressed, which makes the delivery of them even faster.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Most browsers download only two files from a source &lt;a href="http://kb.mozillazine.org/Network.http.max-persistent-connections-per-server"&gt;at once&lt;/a&gt;. If a page needs to load more files from one domain, they get queued.&lt;/li&gt;
    &lt;li&gt;More files to transfer mean more requests to the server, more traffic and more usage of the server&amp;rsquo;s performance. For the users of the platform, this means longer loading times.&lt;/li&gt;
    &lt;li&gt;The more steps you need to deploy these files, the more space for mistakes is given.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Deployment is boring.&lt;/strong&gt; It&amp;rsquo;s far more exciting to invest some time once, to set up a reusable automation, than wasting time doing the same copy/paste/upload actions over and over again.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Compare this two screenshots that show the same content before and after the optimization.&lt;br /&gt;
The apricot colored parts of the bars stand for the status &amp;ldquo;in queue&amp;rdquo; while loading the page.&lt;/p&gt;
&lt;p&gt;&lt;img width="500" height="339" alt="Before optimization" src="http://ooyes.net/userfiles/media/downloaded/how-to-automate-optimization-and-deployment-of-static-content-2009071911042779-firebug_not_optimized_jpg.jpg" /&gt;&lt;br /&gt;
&lt;em&gt;The &amp;ldquo;in queue&amp;rdquo; status means nothing less than: Wasted time of the user.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In this example, the loading time was reduced by &lt;strong&gt;33%&lt;/strong&gt;, the transferred data size was reduced by &lt;strong&gt;65%&lt;/strong&gt; and the number of requests to the server even by &lt;strong&gt;80%&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img width="500" height="67" alt="After optimization" src="http://ooyes.net/userfiles/media/downloaded/how-to-automate-optimization-and-deployment-of-static-content-2009071911042779-firebug_optimized_jpg.jpg" /&gt;&lt;br /&gt;
&lt;em&gt;By using CSS sprites and merged CSS and Javascript files, there is no queue for the loading of the basic static content.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;2. How to improve your static content&lt;/h3&gt;
&lt;p&gt;Besides caching, there are some principles to make the whole setup of static content more efficient right from the start of development.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Use &lt;a href="http://www.smashingmagazine.com/2009/04/27/the-mystery-of-css-sprites-techniques-tools-and-tutorials/"&gt;CSS sprites&lt;/a&gt; for your layout graphics. It not only saves you a lot of traffic and loading time. If you got used to maintain your graphics like this, you&amp;rsquo;ll notice that it can be much more comfortable to have your layout elements e.g. in a single Photoshop file.&lt;/li&gt;
    &lt;li&gt;Don&amp;rsquo;t blow up the loading time with your CSS and Javascript files. Combine the files of each kind into &lt;strong&gt;one single file&lt;/strong&gt;, minimize them (e.g. by removing line breaks and other unnecessary characters) and compress them using GZip to get the load even smaller.&lt;br /&gt;
    This is covered in this tutorial.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3. Automating the deployment using Ruby&lt;/h3&gt;
&lt;p&gt;This automation is written in the &lt;a href="http://www.ruby-lang.org"&gt;Ruby language&lt;/a&gt;. So you need to have Ruby installed on your development computer. The installation is pretty simple on &lt;a href="http://rubyinstaller.rubyforge.org/wiki/wiki.pl"&gt;Windows&lt;/a&gt; and Mac OS X even ships with Ruby.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Please keep in mind:&lt;/strong&gt; The scripts are completely independent from the language you&amp;rsquo;re using to run your site! You can also use them to deploy content e.g. for a &lt;strong&gt;PHP&lt;/strong&gt; project.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re not used to work on the command line, the next steps might look cryptic to you. Don&amp;rsquo;t hesitate, clench your teeth and take care that you always pass the correct path of the files to deal with. You only have to go through this once. When you&amp;rsquo;re finished, all you need to do is to type &lt;strong&gt;one single command&lt;/strong&gt; to start the whole process.&lt;/p&gt;
&lt;p&gt;To make it easier for you, this is the folder structure used for this tutorial:&lt;/p&gt;
&lt;pre name="code"&gt;
+ css/
- fonts.css
- grids.css
- layout.css
- reset.css
- static.min.css (generated)
- static.min.css.gz (generated)

+ js/
- framework.js
- gallery.js
- plugin1.js
- plugin2.js
- start.js
- static.min.js (generated)
- static.min.js.gz (generated)

+ deploy/
- batch
- ftp.rb
- gzip.rb

index.php (or something similar)
&lt;/pre&gt;
&lt;h4&gt;Requirements for this tutorial&lt;/h4&gt;
&lt;p&gt;Don&amp;rsquo;t worry, besides Ruby you won&amp;rsquo;t need anything, that you don&amp;rsquo;t probably already have:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;A simple text editor to save the source code.&lt;/li&gt;
    &lt;li&gt;A command line tool, like Windows cmd.exe or Mac OS X Terminal to call the scripts.&lt;/li&gt;
    &lt;li&gt;A FTP account to try out the upload script.&lt;/li&gt;
    &lt;li&gt;A project to enhance.&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Optional:&lt;/em&gt; The Firefox add-on &lt;a href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt; (or something similar for other browsers), to see the enhancements afterwards.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Juicer&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://www.cjohansen.no/en"&gt;Christian Johansen&lt;/a&gt; created a tool called &lt;a href="http://www.cjohansen.no/en/ruby/juicer_a_css_and_javascript_packaging_tool"&gt;Juicer&lt;/a&gt; which enables you to merge and minimize CSS and Javascript files. To install it on &lt;strong&gt;Windows&lt;/strong&gt;, simply type&lt;/p&gt;
&lt;pre name="code"&gt;
gem install juicer&lt;/pre&gt;
&lt;p&gt;in the command line. When you&amp;rsquo;re using &lt;strong&gt;Mac OS X&lt;/strong&gt; use&lt;/p&gt;
&lt;pre name="code"&gt;
sudo gem install juicer&lt;/pre&gt;
&lt;p&gt;After the successful install, Juicer will ask you to extend it with &lt;a href="http://developer.yahoo.com/yui/compressor/"&gt;YUI Compressor&lt;/a&gt; and &lt;a href="http://www.jslint.com/"&gt;JSLint&lt;/a&gt; for Javascript compression and verification. You do this by typing&lt;/p&gt;
&lt;pre name="code"&gt;
juicer install yui_compressor&lt;/pre&gt;
&lt;p&gt;and after that&lt;/p&gt;
&lt;pre name="code"&gt;
juicer install jslint&lt;/pre&gt;
&lt;p&gt;in the command line.&lt;/p&gt;
&lt;h4&gt;Preparing your files&lt;/h4&gt;
&lt;p&gt;The good thing is, you don&amp;rsquo;t have to change anything in your present files. But to make sure, the files are merged in the order you want to, you need to set up two additional files.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s assume you have four CSS files and five Javascript files:&lt;/p&gt;
&lt;pre name="code"&gt;&lt;link media="screen" type="text/css" href="./css/reset.css" rel="stylesheet" /&gt;
&lt;link media="screen" type="text/css" href="./css/fonts.css" rel="stylesheet" /&gt;
&lt;link media="screen" type="text/css" href="./css/grids.css" rel="stylesheet" /&gt;
&lt;link media="screen" type="text/css" href="./css/layout.css" rel="stylesheet" /&gt;

&lt;script type="application/javascript" src="js/framework.js"&gt;&lt;/script&gt;
&lt;script type="application/javascript" src="js/plugin1.js"&gt;&lt;/script&gt;
&lt;script type="application/javascript" src="js/plugin2.js"&gt;&lt;/script&gt;
&lt;script type="application/javascript" src="js/gallery.js"&gt;&lt;/script&gt;
&lt;script type="application/javascript" src="js/start.js"&gt;&lt;/script&gt;
&lt;/pre&gt;
&lt;p&gt;Create a new Javascript file, called &lt;code&gt;static.js&lt;/code&gt; with the following content:&lt;/p&gt;
&lt;pre name="code"&gt;
/**
 * @depends framework.js
 * @depends plugin1.js
 * @depends plugin2.js
 * @depends gallery.js
 * @depends start.js
 */
&lt;/pre&gt;
&lt;p&gt;After that, create a CSS file &lt;code&gt;static.css&lt;/code&gt; with this content:&lt;/p&gt;
&lt;pre name="code"&gt;
@import url(&amp;quot;reset.css&amp;quot;);
@import url(&amp;quot;fonts.css&amp;quot;);
@import url(&amp;quot;grids.css&amp;quot;);
@import url(&amp;quot;layout.css&amp;quot;);
&lt;/pre&gt;
&lt;p&gt;Now you&amp;rsquo;re ready to run Juicer in your command line.&lt;/p&gt;
&lt;p&gt;For Javascript:&lt;/p&gt;
&lt;pre name="code"&gt;
juicer merge -i --force ./js/static.js
&lt;/pre&gt;
&lt;p&gt;The parameter &lt;code&gt;-i&lt;/code&gt; means that the merging process won&amp;rsquo;t be cancelled, if JSLint thinks you have errors in your Javascript code. The parameter &lt;code&gt;--force&lt;/code&gt; means older versions of the minified file will be overwritten.&lt;/p&gt;
&lt;p&gt;For CSS:&lt;/p&gt;
&lt;pre name="code"&gt;
juicer merge --force ./css/static.css
&lt;/pre&gt;
&lt;p&gt;As a result you will see two new generated files named &lt;code&gt;static.min.js&lt;/code&gt; and &lt;code&gt;static.min.css&lt;/code&gt;. You probably want to know if they still work for your site, so go ahead and test it, by replacing the old bunch of &lt;code&gt;link&lt;/code&gt; and &lt;code&gt;script&lt;/code&gt; tags in your html header with the two new ones.&lt;/p&gt;
&lt;h4&gt;GZip Compression&lt;/h4&gt;
&lt;p&gt;When your minified files work fine, you can go on to compression. If you get Javascript errors or your CSS layout looks weird, you should &lt;strong&gt;re-check the order&lt;/strong&gt; of the files to merge.&lt;/p&gt;
&lt;p&gt;Below you see a small Ruby script that saves a gzipped copy of a file.&lt;/p&gt;
&lt;pre name="code"&gt;
require &amp;#039;zlib&amp;#039;

file_to_zip = ARGV[0]

puts &amp;quot;Gzipping #{file_to_zip}...&amp;quot;

base_name = File.basename(file_to_zip)

file_name_zip = &amp;quot;#{file_to_zip}.gz&amp;quot;

base_name_zip = &amp;quot;zip_#{base_name}&amp;quot;

File.open(file_name_zip, &amp;#039;w&amp;#039;) do |f|

  gz = Zlib::GzipWriter.new(f)

  IO.foreach(file_to_zip) {|x|
    gz.write x
  }   

  gz.close

end

puts &amp;quot;Gzipped version saved as #{file_name_zip}&amp;quot;
&lt;/pre&gt;
&lt;p&gt;Save it as &lt;code&gt;gzip.rb&lt;/code&gt; and call it like this:&lt;/p&gt;
&lt;pre name="code"&gt;
ruby gzip.rb ../js/static.min.js
&lt;/pre&gt;
&lt;p&gt;When you look at your folder, you&amp;rsquo;ll notice a new file called &lt;code&gt;static.min.js.gz&lt;/code&gt;. Now do the same for the CSS file:&lt;/p&gt;
&lt;pre name="code"&gt;
ruby gzip.rb ../css/static.min.css
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Make sure that your server provides the right content encoding and content type information to the clients, so they understand that this files are gzipped content.&lt;br /&gt;
You can do this in many ways. For Apache, an example for the &lt;code&gt;.htaccess&lt;/code&gt; file would be:&lt;/p&gt;
&lt;pre name="code"&gt;&lt;filesmatch&gt; AddType text/javascript .gz AddEncoding x-gzip .gz &lt;/filesmatch&gt;

&lt;filesmatch&gt; AddType text/css .gz AddEncoding x-gzip .gz &lt;/filesmatch&gt;
&lt;/pre&gt;
&lt;h4&gt;FTP-Upload&lt;/h4&gt;
&lt;p&gt;You&amp;rsquo;re on the home stretch. Now you have all improved files together and need to upload them to your host. Again, here&amp;rsquo;s a little Ruby script that does exactly that for you.&lt;/p&gt;
&lt;pre name="code"&gt;
 require &amp;#039;net/ftp&amp;#039;

ftp_host = ARGV[0]
ftp_user = ARGV[1]
ftp_password = ARGV[2]

localfile = ARGV[3] #e.g. &amp;quot;../js/static.min.js.gz&amp;quot;
remote_dir = ARGV[4] #e.g. &amp;quot;www/js&amp;quot;

ftp = Net::FTP.open(ftp_host, ftp_user, ftp_password) 

puts &amp;quot;FTP - Status: #{ftp.status}.&amp;quot;

puts &amp;quot;FTP - Go to directory: #{remote_dir}.&amp;quot;
ftp.chdir(remote_dir)
puts &amp;quot;FTP - Uploading file: #{localfile}...&amp;quot;
ftp.putbinaryfile(localfile)

files = ftp.list puts &amp;quot;FTP - Your file was uploaded here:&amp;quot; puts files

ftp.close &lt;/pre&gt;
&lt;p&gt;Save it as &lt;code&gt;upload.rb&lt;/code&gt;, put in the credentials of your host, eventually change the destination directory and then call it like that:&lt;/p&gt;
&lt;pre name="code"&gt;
ruby ftp.rb example.org admin mysecret ../js/static.min.js www/js
&lt;/pre&gt;
&lt;p&gt;Which stands for: &lt;br /&gt;
&lt;code&gt;ruby ftp.rb ftp-host ftp-user ftp-password file-to-upload ftp-destination-folder&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The minified Javascript file should be uploaded now. Repeat this for the CSS file and the gzipped versions of both.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Please note&lt;/strong&gt; that the folders on the ftp server, where the files are copied to, must already exist.&lt;/p&gt;
&lt;h4&gt;Putting it all together&lt;/h4&gt;
&lt;p&gt;You got all the pieces of this puzzle and now you can finally put them together, by grouping the commands in a batch file. On &lt;strong&gt;Windows&lt;/strong&gt; it would look like this:&lt;/p&gt;
&lt;pre name="code"&gt;
@echo off

echo -------- MERGING JS FILES --------

call juicer merge -i --force ../js/static.js 

echo -------- FINISHED MERGING JS FILES --------

echo -------- MERGING CSS FILES --------

call juicer merge --force ../css/static.css

echo -------- FINISHED MERGING CSS FILES --------

echo -------- COMPRESSING FILES --------

ruby gzip.rb ../js/static.min.js

ruby gzip.rb ../css/static.min.css

echo -------- FINSISHED COMPRESSING FILES --------

echo -------- UPLOADING FILES --------

ruby ftp.rb example.org admin mysecret ../js/static.min.js www/js

ruby ftp.rb example.org admin mysecret ../js/static.min.js.gz www/js

ruby ftp.rb example.org admin mysecret ../css/static.min.css www/css

ruby ftp.rb example.org admin mysecret ../css/static.min.css.gz www/css

echo -------- FINISHED UPLOADING FILES --------
&lt;/pre&gt;
&lt;p&gt;Save it in a file called e.g. &lt;code&gt;batch.bat&lt;/code&gt;, insert your FTP credentials and call it like this:&lt;/p&gt;
&lt;pre name="code"&gt;
cd deploy //switch to subdirectory
batch.bat
&lt;/pre&gt;
&lt;p&gt;On &lt;strong&gt;OS X&lt;/strong&gt; you can do it like that:&lt;/p&gt;
&lt;pre name="code"&gt;
#!/bin/bash

echo -------- MERGING JS FILES --------

juicer merge -i --force ../js/static.js 

echo -------- FINISHED MERGING JS FILES --------

echo -------- MERGING CSS FILES --------

juicer merge --force ../css/static.css

echo -------- FINISHED MERGING CSS FILES --------

echo -------- COMPRESSING FILES --------

ruby gzip.rb ../js/static.min.js

ruby gzip.rb ../css/static.min.css

echo -------- FINSISHED COMPRESSING FILES --------

echo -------- UPLOADING FILES --------

ruby ftp.rb example.org admin mysecret ../js/static.min.js www/js

ruby ftp.rb example.org admin mysecret ../js/static.min.js.gz www/js

ruby ftp.rb example.org admin mysecret ../css/static.min.css www/css

ruby ftp.rb example.org admin mysecret ../css/static.min.css.gz www/css

echo -------- FINISHED UPLOADING FILES --------
&lt;/pre&gt;
&lt;p&gt;Save it in a file called e.g. &lt;code&gt;batch&lt;/code&gt;, insert your FTP credentials and call it like this:&lt;/p&gt;
&lt;pre name="code"&gt;
 cd deploy //switch to subdirectory sh batch &lt;/pre&gt;
&lt;p&gt;And the content gets merged, minified, compressed and uploaded &lt;strong&gt;in one rush.&lt;/strong&gt; &lt;br /&gt;
Additionally to the CSS and Javascript files, it would be a good idea, if the graphics file for the CSS sprites would be uploaded too? Just add an additional call of the upload script in the batch file. It can be used with any filetype.&lt;/p&gt;
&lt;h3&gt;4. In your template&lt;/h3&gt;
&lt;p&gt;Further development and bug fixing is hard to do in a minified file. But you can add an &lt;code&gt;if&lt;/code&gt;-clause in your templates to vary the referencing of your files, depending on your environment.&lt;/p&gt;
&lt;p&gt;Take the original files for your local development and the minified for your online version. Additionally you should check if the users browser supports gzipped content (most modern browsers do).&lt;/p&gt;
&lt;p&gt;An example for &lt;strong&gt;PHP&lt;/strong&gt;:&lt;/p&gt;
&lt;pre name="code"&gt;
if($_SERVER[&amp;quot;SERVER_NAME&amp;quot;] == &amp;quot;localhost&amp;quot;) {
	//local development server - load all files
} else {
	if (substr_count($_SERVER[&amp;#039;HTTP_ACCEPT_ENCODING&amp;#039;], &amp;#039;gzip&amp;#039;)){
		//production system - client accepts gzip
	} else {
		//production system - client does not accept gzip
	}
}
&lt;/pre&gt;
&lt;p&gt;And an example for &lt;strong&gt;Ruby on Rails&lt;/strong&gt;:&lt;/p&gt;
&lt;pre name="code"&gt;
&amp;lt;% if RAILS_ENV == &amp;#039;development&amp;#039; %&amp;gt;
  &amp;lt;%# local development server - load all files %&amp;gt;
&amp;lt;% else %&amp;gt;
  &amp;lt;% if self.request.env[&amp;#039;HTTP_ACCEPT_ENCODING&amp;#039;].match(/gzip/) %&amp;gt;
    &amp;lt;%# production system - client accepts gzip %&amp;gt;
  &amp;lt;% else %&amp;gt;
    &amp;lt;%# production system - client does not accept gzip %&amp;gt;
  &amp;lt;% end %&amp;gt;
&amp;lt;% end %&amp;gt;
&lt;/pre&gt;
&lt;h3&gt;5. Get even faster with subdomains&lt;/h3&gt;
&lt;p&gt;Like mentioned before, most browsers only download two files per host simultaneously. You can bypass that rule by creating some subdomains for your static content and referencing the files through them.&lt;/p&gt;
&lt;p&gt;For example, create a subdomain on your web hosting account, that&amp;rsquo;s called &lt;code&gt;img.example.org&lt;/code&gt;, which points to &lt;code&gt;example.org/img&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Do this for all of your folders, containing static content and use the subdomains to reference your resources:&lt;/p&gt;
&lt;pre name="code"&gt;
img.example.org/sprites.jpg
css.example.org/static.min.css
js.example.org/static.min.js
&lt;/pre&gt;
&lt;p&gt;This way, the rule won&amp;rsquo;t be applied and all files can be downloaded at the same time.&lt;/p&gt;
&lt;h3&gt;6. Conclusion&lt;/h3&gt;
&lt;p&gt;If you got all of this working for one of your projects, you surely recognized the advantages for you as a developer and for the users as the consumers of your content.&lt;/p&gt;
&lt;p&gt;These examples don&amp;rsquo;t claim to be perfect. But if you didn&amp;rsquo;t approach to automate recurring tasks in your daily workflow as a developer, you hopefully have an idea now, how it could look like.&lt;/p&gt;
&lt;p&gt;Always keep in mind, that computers were invented to spare you the boredom of repeating, simple tasks. So save your time for more important things.&lt;/p&gt;
&lt;p&gt;Of course, this doesn&amp;rsquo;t have to be the end of the line. If you&amp;rsquo;re interested in the automatic deployment of whole applications, you should have a look at &lt;a href="http://www.capify.org/"&gt;Capistrano&lt;/a&gt;. Again, it&amp;rsquo;s written in Ruby, but you can also use it for &lt;strong&gt;PHP platforms&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-CDdEhOmv1La9pPlREuxGANDIOE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-CDdEhOmv1La9pPlREuxGANDIOE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-CDdEhOmv1La9pPlREuxGANDIOE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-CDdEhOmv1La9pPlREuxGANDIOE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=jVbj0562c18:drkpWDR6uHw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=jVbj0562c18:drkpWDR6uHw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=jVbj0562c18:drkpWDR6uHw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=jVbj0562c18:drkpWDR6uHw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=jVbj0562c18:drkpWDR6uHw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/jVbj0562c18" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 19 Oct 2009 02:24:31 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/how-to-automate-optimization-and-deployment-of-static-content</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/drkpWDR6uHw/how-to-automate-optimization-and-deployment-of-static-content</feedburner:origLink></item>

        
        
        <item>

          <title>3 Ways to Speed up Your Site with PHP</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/hSPhH6fg_Ig/3-ways-to-speed-up-your-site-with-php</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/3-ways-to-speed-up-your-site-with-php]]></guid>
		 


          <description>&lt;p&gt;These days, with broadband connections the norm, we don&amp;rsquo;t need to worry as much about internet speeds or the filesize of our pages. However, that&amp;rsquo;s not to say that we still shouldn&amp;rsquo;t do so. If you wish to reduce the load times on your server, decrease the number of HTTP requests, and go that extra bit for your visitors, there are a few techniques that you can use. This tutorial covers a number of PHP tricks, including caching and compression.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;1. CSS Amalgamation with PHP&lt;/h3&gt;
&lt;p&gt;As web developers, we often split up our CSS between several separate files to keep a logical separation and to make modifications easier. However, this increases the number of requests to the server, resulting in a slower page load. Using some PHP we can have the best of both worlds; keeping multiple files on our end, and using one request to retrieve all of them.&lt;/p&gt;
&lt;div&gt;&lt;img border="0" src="http://ooyes.net/userfiles/media/downloaded/3-ways-to-speed-up-your-site-with-php-2009072212051796-1_jpg.jpg" alt="" /&gt;&lt;/div&gt;
&lt;h4&gt;Preparation&lt;/h4&gt;
&lt;p&gt;Before we can optimize CSS files, we will need some CSS to work with! So let&amp;rsquo;s make three files and put some CSS in them.&lt;/p&gt;
&lt;pre name="code"&gt;
	// main.css
	// Just some sample CSS

	body {
		width: 800px;
		margin: 0 auto;
		color: grey;
	}

	#wrapper {
		margin-top: 30px;
		background: url(../images/cats.png);
	}
&lt;/pre&gt;
&lt;pre name="code"&gt;
	// typography.css
	// Just some sample CSS

	body {
		font-family: Arial, san-serif;
		font-weight: bold;
	}

	strong {
		font-size: 120%;
	}
&lt;/pre&gt;
&lt;pre name="code"&gt;
	// forms.css
	// Just some sample CSS

	form {
		position: relative;
		top: 400px;
		z-index: 99;
	}

	input {
		height: 50px;
		width: 400px;
	}
&lt;/pre&gt;
&lt;h4&gt;The PHP&lt;/h4&gt;
&lt;p&gt;We need to get the contents of these files and append them to each other in a specified order. So our script has to receive the names of the CSS files via URL parameters, open all the files and put them together. An explanation of the code follows.&lt;/p&gt;
&lt;pre name="code"&gt;
&amp;lt;?php
//Lets define some useful variables
// --- NOTE: PATHS NEED TRAILING SLASH ---
$cssPath = &amp;#039;./css/&amp;#039;;

if (isset($_GET[&amp;#039;q&amp;#039;])) {
	$files = $_GET[&amp;#039;q&amp;#039;];
	// Got the array of files!

	//Lets just make sure that the files don&amp;#039;t contain any nasty characters.
	foreach ($files as $key =&amp;gt; $file) {
		$files[$key] = str_replace(array(&amp;#039;/&amp;#039;, &amp;#039;\\&amp;#039;, &amp;#039;.&amp;#039;), &amp;#039;&amp;#039;, $file);
	}

	$cssData = &amp;#039;&amp;#039;;
	foreach ($files as $file) {
		$cssFileName = $cssPath . $file . &amp;#039;.css&amp;#039;;
		$fileHandle = fopen($cssFileName, &amp;#039;r&amp;#039;);
		$cssData .= &amp;quot;\n&amp;quot; . fread($fileHandle, filesize($cssFileName));
		fclose($fileHandle);
	}
}

// Tell the browser that we have a CSS file and send the data.
header(&amp;quot;Content-type: text/css&amp;quot;);
if (isset($cssData)) {
	echo $cssData;
	echo &amp;quot;\n\n// Generated: &amp;quot; . date(&amp;quot;r&amp;quot;);
} else {
	echo &amp;quot;// Files not avalable or no files specified.&amp;quot;;
}
?&amp;gt;
&lt;/pre&gt;
&lt;h4&gt;Breaking it Down&lt;/h4&gt;
&lt;p&gt;It looks quite complicated, but stick with me, it&amp;rsquo;s really pretty simple.&lt;/p&gt;
&lt;pre name="code"&gt;
&amp;lt;?php
//Lets define some usefull variables
// --- NOTE: PATHS NEED TRAILING SLASH ---
$cssPath = &amp;#039;./css/&amp;#039;;

if (isset($_GET[&amp;#039;q&amp;#039;])) {
	$files = $_GET[&amp;#039;q&amp;#039;];
	// Got the array of files!

	//Lets just make sure that the files don&amp;#039;t contain any nasty charactors.
	foreach ($files as $key =&amp;gt; $file) {
		$files[$key] = str_replace(array(&amp;#039;/&amp;#039;, &amp;#039;\\&amp;#039;, &amp;#039;.&amp;#039;), &amp;#039;&amp;#039;, $file);
	}
&lt;/pre&gt;
&lt;p&gt;This chunk of code sets the path for the CSS folder and checks that we have been sent some files to work with. The CSS path needs to have trailing slashes otherwise we will find ourselves with bucket-loads of errors. If we wanted, we could check automatically for a slash and add it if required. However, for the sake of simplicity I omitted that behavior.&lt;/p&gt;
&lt;p&gt;Next we check each filename and remove any full stops and/or slashes. This prevents people from navigating the filesystem by passing filenames such as &amp;lsquo;../../secret/file&amp;rsquo;.&lt;/p&gt;
&lt;pre name="code"&gt;
	$cssData = &amp;#039;&amp;#039;;
	foreach ($files as $file) {
		$cssFileName = $cssPath . $file . &amp;#039;.css&amp;#039;;
		$fileHandle = fopen($cssFileName, &amp;#039;r&amp;#039;);
		$cssData .= &amp;quot;\n&amp;quot; . fread($fileHandle, filesize($cssFileName));
		fclose($fileHandle);
	}
}
&lt;/pre&gt;
&lt;p&gt;Now we have to build our CSS data from the individual files. To do this, we loop through the files array with foreach, open each file and append the contents onto our data. The &amp;ldquo;\n&amp;rdquo; simply adds a new line character to keep things nice and tidy. The filesize() function is used to find the length of the file so that we can tell fread() how much we want (the entire file).&lt;/p&gt;
&lt;pre name="code"&gt;
// Tell the browser that we have a CSS file and send the data.
header(&amp;quot;Content-type: text/css&amp;quot;);
if (isset($cssData)) {
	echo $cssData;
	echo &amp;quot;\n\n// Generated: &amp;quot; . date(&amp;quot;r&amp;quot;);
} else {
	echo &amp;quot;// Files not avalable or no files specified.&amp;quot;;
}
?&amp;gt;
&lt;/pre&gt;
&lt;p&gt;The last bit of the script is to send the CSS data to the browser. This means we have to tell PHP that we are sending CSS data, and that it should inform the browser. We do this with the header function, setting the content type to &amp;lsquo;text/css&amp;rsquo;. Then we send the CSS to the client. We first check if there is any CSS data to send. If there isn&amp;rsquo;t, then this means that no names of CSS files were sent. If this is the case we simply reply with a CSS comment saying so. If, however, we do have some data to send, then we send that and add a message detailing when it was generated. If you wanted to, for example, add some copyright information to all your CSS in one go, then this would be an ideal place.&lt;/p&gt;
&lt;h4&gt;Putting it to the Test&lt;/h4&gt;
&lt;p&gt;Okay, now it&amp;rsquo;s time to test the script; we need to first build a directory structure and then place our script and CSS files. Have a look at the image below and try to replicate that structure. If you want something different, don&amp;rsquo;t forget to change the paths to reflect those changes.&lt;/p&gt;
&lt;div&gt;&lt;img border="0" src="http://ooyes.net/userfiles/media/downloaded/3-ways-to-speed-up-your-site-with-php-2009072212051796-2_jpg.jpg" alt="" /&gt;&lt;/div&gt;
&lt;p&gt;Once everything is in the right place, we can test our script. The directory structure will have to be placed in the &amp;lsquo;htdocs&amp;rsquo; or &amp;lsquo;www&amp;rsquo; folder of a webserver with PHP (pretty much any webserver these days). Navigate to the index.php file. You should be greeted by a single comment: &amp;lsquo;Files not available or no files specified&amp;rsquo;. This means that we have not given any files for it to pull together. However, the good news is that this is a valid CSS comment and won&amp;rsquo;t cause any problems.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s give something a little trickier a go; type in &amp;lsquo;index.php?q[]=main&amp;rsquo;, you should get the CSS from you main.css file and a notice at the bottom.&lt;/p&gt;
&lt;p&gt;If we want to pull multiple files together (as this was really the entire point of the script) we can send this request: &amp;lsquo;index.php?q[]=main&amp;amp;q[]=forms&amp;rsquo;. As you can see we can repeat &amp;lsquo;q[]=&amp;rsquo; as many times as we want because it is adding each value to an array. You could potentially add 50 CSS files together if you wanted using this script.&lt;/p&gt;
&lt;div&gt;&lt;img border="0" src="http://ooyes.net/userfiles/media/downloaded/3-ways-to-speed-up-your-site-with-php-2009072212051796-3_JPG.JPG" alt="" /&gt;&lt;/div&gt;
&lt;h4&gt;Concluding&lt;/h4&gt;
&lt;p&gt;Using this method can be very useful, and can provide benefits such as being able to have a default style sheet for every page and and an extra CSS file for pages with forms. It&amp;rsquo;s also easy to implement if you&amp;rsquo;re already using some sort of CSS processing with PHP. If you want, you can even rename index.php to index.css as long as you set up .htaccess to treat CSS files as PHP.&lt;/p&gt;
&lt;p&gt;You might notice that I&amp;rsquo;m treating different orders of CSS files as different. This is because you may wish to have one stylesheet override another and therefore the order of the files is important. If this isn&amp;rsquo;t a problem for you, you may wish to perform a sorting function on the files array before processing.&lt;/p&gt;
&lt;p&gt;Just a word of caution; if you place the index.php file in any folder other than the one that contains the CSS then you have to write your relative background image paths as if index.php was your stylesheet. This is because that&amp;rsquo;s what the browser thinks it is. Alternatively, you could add some code to rewrite these URLs, however, that is beyond the scope of this tutorial.&lt;/p&gt;
&lt;h3&gt;2. Stripping Whitespace from your HTML and CSS&lt;/h3&gt;
&lt;p&gt;Many of us use large amounts of whitespace when writing code. The good news is that whitespace in PHP doesn&amp;rsquo;t actually get sent to the browser. However, it does in HTML.&lt;/p&gt;
&lt;p&gt;Browsers tend to only display one space no matter how many tabs you use in your code. This means that there is some wasted bandwidth. However, with some simple PHP we can remove this bandwidth leeching whitespace.&lt;/p&gt;
&lt;h4&gt;Preparation&lt;/h4&gt;
&lt;p&gt;Once again, we will need some raw data to work with; so copy the following example HTML and CSS code. Save the following into a .htm and a .css file in a folder within your server&amp;rsquo;s webroot directory.&lt;/p&gt;
&lt;pre name="code"&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;
	&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;
&amp;lt;html&amp;gt;
	&amp;lt;head&amp;gt;
		&amp;lt;title&amp;gt;Hey a Page!&amp;lt;/title&amp;gt;
		&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;./css.css&amp;quot; type=&amp;quot;text/css&amp;quot;&amp;gt;
	&amp;lt;/head&amp;gt;
	&amp;lt;body id=&amp;quot;homepage&amp;quot;&amp;gt;
		&amp;lt;div id=&amp;quot;wrapper&amp;quot;&amp;gt;
			&amp;lt;div id=&amp;quot;header&amp;quot;&amp;gt;
				&amp;lt;h1&amp;gt;Kittens for sale!&amp;lt;/h1&amp;gt;
				&amp;lt;div&amp;gt;
					There   are      lots      of spaces here! But we need to get    rid   of  them!
				&amp;lt;/div&amp;gt;
			&amp;lt;/div&amp;gt;
			&amp;lt;div id=&amp;quot;mainbody&amp;quot;&amp;gt;
				Lorem Ipsum dol...
			&amp;lt;/div&amp;gt;
		&amp;lt;/div&amp;gt;
	&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;
&lt;pre name="code"&gt;
body {
	min-height: 800px;
	background: black;
	font-size: 18px;
}

#wrapper {
	width: 960px;
	margin: 20px auto;
	padding: 15px;
}

#header h1 {
	text-indent: -99999em;
	background: url(../images/header.png);
	display: block;
	width: 100%;
	height: 48px;
}

#mainbody {
	font-weight: bold;
}
&lt;/pre&gt;
&lt;h4&gt;The PHP&lt;/h4&gt;
&lt;p&gt;One of the advantages of this method is that the same script will work with both HTML and CSS. Our script has to accept a filename as part of the request. Once the file has been loaded, it has to strip all whitespace down to just one space character. This is because we don&amp;rsquo;t want to remove all the spaces between words!&lt;/p&gt;
&lt;p&gt;Once again, ther&amp;rsquo;s a bunch of PHP here, but I will go through it carefully with you.&lt;/p&gt;
&lt;pre name="code"&gt;
&amp;lt;?php
$fileDirectory = &amp;#039;&amp;#039;;
$file = $_GET[&amp;#039;q&amp;#039;];
$nameExplode = explode(&amp;#039;.&amp;#039;, $file);
$ext = $nameExplode[1];
$fileName = $fileDirectory . $file;
if ($ext != &amp;#039;css&amp;#039; AND $ext != &amp;#039;htm&amp;#039; AND $ext != &amp;#039;html&amp;#039;) {
	//Check for evil people...
	die(&amp;#039;Hackers...!&amp;#039;);
} else {
	//Lets get down to business
	$handle = fopen($fileName, &amp;#039;r&amp;#039;);
	$fileData = fread($handle, filesize($fileName));
	//Now for some regex wizzardry!
	$newData = preg_replace(&amp;#039;/\s+/&amp;#039;, &amp;#039; &amp;#039;, $fileData);
	fclose($handle);
	//Time to output the data.
	if ($ext == &amp;#039;css&amp;#039;) {
		header(&amp;quot;Content-type: text/css&amp;quot;);
	}
	echo $newData;
}
?&amp;gt;
&lt;/pre&gt;
&lt;h4&gt;Having a Closer Look&lt;/h4&gt;
&lt;p&gt;This one isn&amp;rsquo;t so tricky, but we will still break it up and make sure we understand what is going on.&lt;/p&gt;
&lt;p&gt;We are getting the filename via a parameter passed with the GET request and checking to make sure that it is an allowed filetype. Then we proceed to fetch the data and process it to remove excess whitespace. This method is relatively primitive and won&amp;rsquo;t remove all unnecessary whitespace, but it will deal with most of it in only a few lines of code!&lt;/p&gt;
&lt;pre name="code"&gt;
&amp;lt;?php
$fileDirectory = &amp;#039;&amp;#039;;
$file = $_GET[&amp;#039;q&amp;#039;];
$nameExplode = explode(&amp;#039;.&amp;#039;, $file);
$ext = $nameExplode[1];
$fileName = $fileDirectory . $file;
&lt;/pre&gt;
&lt;p&gt;This snippet just sets some variables. Once again, we are passing our data through &amp;lsquo;q&amp;rsquo; as it is nice and short. This also gives us a place to define our directory for files and extract the file extension. The explode() function rips the filename up whenever it sees a &amp;lsquo;.&amp;rsquo; and puts the bits into an array.&lt;/p&gt;
&lt;pre name="code"&gt;
if ($ext != &amp;#039;css&amp;#039; AND $ext != &amp;#039;htm&amp;#039; AND $ext != &amp;#039;html&amp;#039;) {
	//Check for evil people...
	die(&amp;#039;Hackers...!&amp;#039;);
} else {
&lt;/pre&gt;
&lt;p&gt;Here we&amp;rsquo;re checking to make sure that the file is either CSS or HTML. If it was something else we might find ourselves giving hackers a hole into our site like showing them settings.php! So after giving the hackers the flick we can move on to processing our data!&lt;/p&gt;
&lt;pre name="code"&gt;
	//Lets get down to business
	$handle = fopen($fileName, &amp;#039;r&amp;#039;);
	$fileData = fread($handle, filesize($fileName));
	//Now for some regex wizzardry!
	$newData = preg_replace(&amp;#039;/\s+/&amp;#039;, &amp;#039; &amp;#039;, $fileData);
	fclose($handle);
	//Time to output the data.
	if ($ext == &amp;#039;css&amp;#039;) {
		header(&amp;quot;Content-type: text/css&amp;quot;);
	}
	echo $newData;
}
?&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Now for the main attraction; all we are really doing here is opening the file and reading it - like we did in the first script - and then ripping out as much whitespace as possible. This is achieved through a relatively simple regular expression that searches through the file for any spaces, tabs or newlines and then replaces them with a single space.&lt;/p&gt;
&lt;p&gt;Lastly we send back the data, setting the required headers if we are dealing with CSS.&lt;/p&gt;
&lt;h4&gt;But Does it Work?&lt;/h4&gt;
&lt;p&gt;If you go into your browser and navigate to &amp;lsquo;index.php?q=css.css&amp;rsquo; we should see one line of CSS across the page. This shows that everything is fine! We can also see the same effect on the source code for the html example. In fact in that small example, we reduced a 314 character CSS file down to 277 characters and a 528 character html file down to 448 characters. Not bad for 15 lines of code.&lt;/p&gt;
&lt;div&gt;&lt;img border="0" src="http://ooyes.net/userfiles/media/downloaded/3-ways-to-speed-up-your-site-with-php-2009072212051796-4_JPG.JPG" alt="" /&gt;&lt;/div&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;So that&amp;rsquo;s a good example of how we can do quite a lot with very little work. If you have a look at the source of pages like Google you will find that they have almost no whitespace because, when you receive millions of requests, a few extra kilobytes per request really adds up. Unfortunately, most of us aren&amp;rsquo;t that lucky!&lt;/p&gt;
&lt;h3&gt;3. Caching in your PHP Scripts&lt;/h3&gt;
&lt;p&gt;In this part, I will show you how to &amp;lsquo;retrofit&amp;rsquo; caching into your scripts using the above script as an example. The aim is to speed things up by not having to regenerate the data every time someone requests a file. Generating the content every request is just a waste, especially on static data such as our CSS.&lt;/p&gt;
&lt;p&gt;To add caching we need to add three things to our script. Firstly, we have to collect the data input to the script and generate a filename unique to that set of inputs. Secondly, we have to look for a cache file and see if it is sufficiently recent. Lastly, we have to either use the cached copy or generate new content and cache it for next time.&lt;/p&gt;
&lt;div&gt;&lt;img border="0" src="http://ooyes.net/userfiles/media/downloaded/3-ways-to-speed-up-your-site-with-php-2009072212051796-5_jpg.jpg" alt="" /&gt;&lt;/div&gt;
&lt;h4&gt;Breaking the Flow&lt;/h4&gt;
&lt;p&gt;This part of the process really depends on the individual script, however I will show where I am going to break the flow of this script for the caching.&lt;/p&gt;
&lt;pre name="code"&gt;
&amp;lt;?php
$fileDirectory = &amp;#039;&amp;#039;;
$file = $_GET[&amp;#039;q&amp;#039;];
$nameExplode = explode(&amp;#039;.&amp;#039;, $file);
$ext = $nameExplode[1];
$fileName = $fileDirectory . $file;

//-- WE HAVE ENOUGH DATA TO GENERATE A CACHE FILE NAME HERE --

if ($ext != &amp;#039;css&amp;#039; AND $ext != &amp;#039;htm&amp;#039; AND $ext != &amp;#039;html&amp;#039;) {
	//Check for evil people...
	die(&amp;#039;Hackers...!&amp;#039;);
} else {

	//-- WE CAN INTERCEPT AND CHECH FOR THE CACHED VERSION HERE --

	//Lets get down to business
	$handle = fopen($fileName, &amp;#039;r&amp;#039;);
	$fileData = fread($handle, filesize($fileName));
	//Now for some regex wizardry!
	$newData = preg_replace(&amp;#039;/\s+/&amp;#039;, &amp;#039; &amp;#039;, $fileData);
	fclose($handle);
	//Time to output the data.

	//-- NOW WE CAN STORE THE NEW DATA IF REQUIRED AND OUTPUT THE DATA --

	if ($ext == &amp;#039;css&amp;#039;) {
		header(&amp;quot;Content-type: text/css&amp;quot;);
	}
	echo $newData;
}
?&amp;gt;
&lt;/pre&gt;
&lt;h4&gt;Putting it into Action&lt;/h4&gt;
&lt;p&gt;We will now actually write the code for caching into this script. I will first show the script completed and then go through each piece.&lt;/p&gt;
&lt;pre name="code"&gt;
&amp;lt;?php
$fileDirectory = &amp;#039;&amp;#039;;
$file = $_GET[&amp;#039;q&amp;#039;];
$nameExplode = explode(&amp;#039;.&amp;#039;, $file);
$ext = $nameExplode[1];
$fileName = $fileDirectory . $file;
$cacheName = &amp;#039;./cache/&amp;#039; . $nameExplode[0] . $nameExplode[1] . &amp;#039;.tmp&amp;#039;;
if ($ext != &amp;#039;css&amp;#039; AND $ext != &amp;#039;htm&amp;#039; AND $ext != &amp;#039;html&amp;#039;) {
	//Check for evil people...
	print_r($ext);
	die(&amp;#039;Hackers...!&amp;#039;);
} else {
	if (file_exists($cacheName) AND filemtime($cacheName) &amp;gt; (time() - 86400)) {
		$cacheHandle = fopen($cacheName, &amp;#039;r&amp;#039;);
		$newData = fread($cacheHandle, filesize($cacheName));
		fclose($cacheHandle);
		$isCached = TRUE;
	} else {
		//Lets get down to business
		$handle = fopen($fileName, &amp;#039;r&amp;#039;);
		$fileData = fread($handle, filesize($fileName));
		//Now for some regex wizardry!
		$newData = preg_replace(&amp;#039;/\s+/&amp;#039;, &amp;#039; &amp;#039;, $fileData);
		fclose($handle);
		//Lets cache!
		$cacheHandle = fopen($cacheName, &amp;#039;w+&amp;#039;);
		fwrite($cacheHandle, $newData);
		fclose($cacheHandle);
		$isCached = FALSE;
	}
	//Time to output the data.
	if ($ext == &amp;#039;css&amp;#039;) {
		header(&amp;quot;Content-type: text/css&amp;quot;);
		if ($isCached) {
			echo &amp;quot;// Retrieved from cache file. \n&amp;quot;;
		}
	} else {
		if ($isCached) {
			echo &amp;#039;&amp;lt;!-- Retrieved from cache file. --&amp;gt;&amp;#039;;
		}
	}
	echo $newData;

}
?&amp;gt;
&lt;/pre&gt;
&lt;h4&gt;The Explanation&lt;/h4&gt;
&lt;p&gt;This one&amp;rsquo;s a bit trickier and a little more likely to leave you scratching you head. But don&amp;rsquo;t worry, not much has changed and we will go through each section. An extra feature we have included is the refreshing of the cache every 24 hours. This is handy so if you change anything, you can either wait 24 hours or simply empty the cache directory. If you want a different refresh interval just calculate it in seconds.&lt;/p&gt;
&lt;pre name="code"&gt;
$cacheName = &amp;#039;./cache/&amp;#039; . $nameExplode[0] . $nameExplode[1] . &amp;#039;.tmp&amp;#039;;
&lt;/pre&gt;
&lt;p&gt;This bit of code just gets the file&amp;rsquo;s name and extension, glues them together and adds the cache directory and the appropriate &amp;lsquo;.tmp&amp;rsquo; extension.&lt;/p&gt;
&lt;pre name="code"&gt;
	if (file_exists($cacheName) AND filemtime($cacheName) &amp;gt; (time() - 86400)) {
		$cacheHandle = fopen($cacheName, &amp;#039;r&amp;#039;);
		$newData = fread($cacheHandle, filesize($cacheName));
		fclose($cacheHandle);
		$isCached = TRUE;
	} else {
&lt;/pre&gt;
&lt;p&gt;Here we&amp;rsquo;re checking if we have a cache file saved and if the cache file was created within 24 hours. If both these conditions are met then we open the file and extract its contents to substitute for the scripts output. We also set $isCached to true so we can output some messages at the end.&lt;/p&gt;
&lt;pre name="code"&gt;
		//Lets cache!
		$cacheHandle = fopen($cacheName, &amp;#039;w+&amp;#039;);
		fwrite($cacheHandle, $newData);
		fclose($cacheHandle);
		$isCache = FALSE;
	}
&lt;/pre&gt;
&lt;p&gt;Now we are caching the output of the script for us to use in later requests. We simply open a file in write mode, dump our data into it and then close it. Strictly you don&amp;rsquo;t have to close files in PHP but it&amp;rsquo;s considered a good practise so I have done it here.&lt;/p&gt;
&lt;pre name="code"&gt;

	//Time to output the data.
	if ($ext == &amp;#039;css&amp;#039;) {
		header(&amp;quot;Content-type: text/css&amp;quot;);
		if ($isCached) {
			echo &amp;quot;// Retrieved from cache file. \n&amp;quot;;
		}
	} else {
		if ($isCached) {
			echo &amp;#039;&amp;lt;!-- Retrieved from cache file. --&amp;gt;&amp;#039;;
		}
	}
&lt;/pre&gt;
&lt;p&gt;This is another part of the script that was modified a little so that we can offer some feedback through the browser. If the file was retrieved from the cache we can add a message to the script&amp;rsquo;s output. Notice that the message for CSS scripts has &amp;lsquo;\n&amp;rsquo; at the end. This is because the characters &amp;lsquo;//&amp;rsquo; comment our entire line and &amp;lsquo;\n&amp;rsquo; pushes everything else onto another line. If you want to disable the messages all you have to do is comment out the line &amp;lsquo;$isCached = TRUE;&amp;rsquo;.&lt;/p&gt;
&lt;h4&gt;Giving it a Whirl&lt;/h4&gt;
&lt;p&gt;If we use our script again, we will notice no change until we refresh a second time when we will see a message saying that the file was retrieved from cache. Sweet success! This caching setup can also be applied to the first script with little modification, however, that is left as an exercise for the reader.&lt;/p&gt;
&lt;div&gt;&lt;img border="0" src="http://ooyes.net/userfiles/media/downloaded/3-ways-to-speed-up-your-site-with-php-2009072212051796-6_JPG.JPG" alt="" /&gt;&lt;/div&gt;
&lt;h4&gt;Concluding&lt;/h4&gt;
&lt;p&gt;Being able to quickly add simple but effective caching to any script that you are working on is an extremely useful skill. It just adds that extra bit to the script, reducing the load on your server and speeding up the site for users. Now that&amp;rsquo;s win-win!&lt;/p&gt;
&lt;h3&gt;Summing it Up&lt;/h3&gt;
&lt;p&gt;In this tutorial I have shown you a few handy but simple ways to speed up your site with a dash of PHP. I really hope that you find them useful and that you can apply them to a project in the future. How do you improve your site&amp;rsquo;s performance?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_UNDUBFUSNICfdzo514N7kXBdik/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_UNDUBFUSNICfdzo514N7kXBdik/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_UNDUBFUSNICfdzo514N7kXBdik/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_UNDUBFUSNICfdzo514N7kXBdik/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=hSPhH6fg_Ig:iRkYfVB5q1w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=hSPhH6fg_Ig:iRkYfVB5q1w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=hSPhH6fg_Ig:iRkYfVB5q1w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=hSPhH6fg_Ig:iRkYfVB5q1w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=hSPhH6fg_Ig:iRkYfVB5q1w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/hSPhH6fg_Ig" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 19 Oct 2009 02:10:04 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/3-ways-to-speed-up-your-site-with-php</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/iRkYfVB5q1w/3-ways-to-speed-up-your-site-with-php</feedburner:origLink></item>

        
        
        <item>

          <title>Definitive Guide to Taming the IE6 Beast</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/syEvYPHbqGc/definitive-guide-to-taming-the-ie6-beast</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/definitive-guide-to-taming-the-ie6-beast]]></guid>
		 


          <description>&lt;p&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/definitive-guide-to-taming-the-ie6-beast-2009072402380971-25-01_ie6_definitive_lead_jpg.jpg" width="550" height="250" alt="Definitive Guide to Taming the IE6 Beast" /&gt;&lt;/p&gt;
&lt;p&gt;For years, Internet Explorer 6 (IE6) has been the bane of existence for web designers around the world. Designers and users alike have come to enjoy the increasingly predictable, standards-compliant behavior of great modern browsers like Firefox, Opera, and Safari. Meanwhile, IE6 continues to haunt our designs, lurking in dark places while dying a painfully slow, agonizing death. As we await that grand and glorious day when IE6 is as dead as Netscape 4, let us be mindful of the endagered species of users who, for whatever sad reason, continue to torture themselves with that terrible beast of a browser.&lt;/p&gt;
&lt;p&gt;      &lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;So come now, let us celebrate these last days of IE6 with this definitive guide to taming the IE6 beast.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;In this comprehensive article, you&amp;#8217;ll learn some of the best methods for supporting IE6, including proper targeting, specific hacks, image support, box models, floats, and everything in between.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Use conditional comments to target IE6&lt;/h3&gt;
&lt;p&gt;Conditional comments play an important role in getting IE6 to behave. Conditional comments are basically snippets of code that are included in your (X)HTML markup that enable you to target or filter specific versions of Internet Explorer. Here is a conditional comment that targets IE6 with a special message:&lt;/p&gt;
&lt;pre&gt;
&lt;strong&gt;&amp;#60;!--[if IE6]&amp;#62;&lt;/strong&gt;
  &amp;#60;p&amp;#62;Oops! Looks like you&amp;#039;re still using Internet Explorer 6!
     You deserve better!&amp;#60;/p&amp;#62;
&lt;strong&gt;&amp;#60;![endif]--&amp;#62;&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;This is an extremely useful method of delivering code and content only to IE6. Other browsers will see this conditional comment as an ordinary (X)HTML comment and simply ignore its contents. Thus, when adapting our web pages for IE6, conditional comments enable us to apply CSS styles directly, without interfering with other browsers. Although conditional comments are a proprietary Microsoft invention, they are arguably the best way to &amp;#8220;hack&amp;#8221; specific versions of Internet Explorer.&lt;/p&gt;
&lt;p&gt;The easiest way to use conditional comments to target and apply styles only to IE6 is to include an &amp;#8220;IE6-only&amp;#8221; stylesheet in the &lt;code&gt;&amp;#60;head&amp;#62;&lt;/code&gt; section of your web pages:&lt;/p&gt;
&lt;pre&gt;
&amp;#60;!--[if IE6]&amp;#62;
  &amp;#60;link rel="stylesheet" href="http://domain.tld/&lt;strong&gt;ie6.css&lt;/strong&gt;"
    media="screen" /&amp;#62;
&amp;#60;![endif]--&amp;#62;&lt;/pre&gt;
&lt;p&gt;Then, in the &lt;code&gt;ie6.css&lt;/code&gt; stylesheet, we place all of the IE6-specific hacks and other trickery that are needed in order to accomodate IE6. This enables us to consolidate our IE6 styles into a single stylesheet that is completely ignored by all other browsers. With this method of applying styles to IE6, there is no need for IE6-specific hacks such as the so-called &amp;#8220;star-HTML&amp;#8221; hack or the underscore hack. Selectors are simply targeted &amp;#8220;as-is&amp;#8221; from within the IE6-only stylesheet.&lt;/p&gt;
&lt;p&gt;Of course, conditional comments can do much more than target IE6. By design, they are able to target or filter any version(s) of Internet Explorer for both HTML and XHTML. For more information on conditional comments, these fine articles are highly recommended:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx" title="Microsoft explains conditional comments"&gt;Microsoft explains conditional comments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.quirksmode.org/css/condcom.html" title="Learn about conditional comments at QuirksMode"&gt;Learn more about conditional comments at QuirksMode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://perishablepress.com/press/2007/07/18/wrapping-your-head-around-downlevel-conditional-comments/" title="Wrapping Your Head around Downlevel Conditional Comments"&gt;Wrapping Your Head around Conditional Comments&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Target and filter IE6 with &amp;#8220;in-CSS&amp;#8221; hacks&lt;/h3&gt;
&lt;p&gt;Despite the usefulness of conditional comments, there are situations in which you may decide to apply IE6-specific styles from &lt;em&gt;within&lt;/em&gt; the stylesheet. A good example of this may happen during site development, when it is more expedient and practical to work with a single stylesheet, in which IE6 styles are located next to &amp;#8220;normal&amp;#8221; styles for easy comparison. Once development is complete, all &amp;#8220;in-CSS&amp;#8221; hacks may be consolidated to an IE6 stylesheet included via conditional comments.&lt;/p&gt;
&lt;p&gt;Fortunately, when it comes to IE6, there is no shortage of these in-CSS targeting methods. Over the years, a few of these &amp;#8220;hacks&amp;#8221; have risen to the top of the pile, proving to be extremely useful and effective for targeting IE6. Perhaps the most widely used of these in-CSS techniques is known as the &amp;#8220;star-HTML&amp;#8221; hack:&lt;/p&gt;
&lt;pre&gt;
&lt;strong&gt;/* target IE6 */&lt;/strong&gt;
&lt;strong&gt;* html&lt;/strong&gt; #selector { color: red; }&lt;/pre&gt;
&lt;p&gt;While standards-compliant browsers ignore this illogical selector, IE6 treats it as legitimate, even though &lt;code&gt;&amp;#60;html&amp;#62;&lt;/code&gt; is the highest element in the document tree. This enables us to apply CSS styles exclusively to IE6 without interfering with other browsers. Best of all, this method of targeting IE6 is completely valid.&lt;/p&gt;
&lt;p&gt;There are also cases where we need to &lt;em&gt;hide&lt;/em&gt; styles from IE6. The following hack is referred to as the &amp;#8220;child-selector filter,&amp;#8221; and it enables us to apply CSS styles to all browsers &lt;em&gt;except&lt;/em&gt; IE6:&lt;/p&gt;
&lt;pre&gt;
&lt;strong&gt;/* filter IE6 */&lt;/strong&gt;
&lt;strong&gt;html&gt;body&lt;/strong&gt; #selector { color: red; }&lt;/pre&gt;
&lt;p&gt;This selector is also completely valid, and readily applied by all standards-compliant browsers. It is effective because IE6 simply doesn&amp;#8217;t understand its meaning.&lt;/p&gt;
&lt;p&gt;Other useful methods of targeting and filtering IE6 include the &lt;code&gt;!important&lt;/code&gt; hack, which is useful when you need to override a property value for IE6:&lt;/p&gt;
&lt;pre&gt;
#selector {
  width: 200px &lt;strong&gt;!important&lt;/strong&gt;; &lt;strong&gt;/* target other browsers */&lt;/strong&gt;
  width: 100px;            &lt;strong&gt;/* target IE6 and lower */&lt;/strong&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When there are two identical properties for a selctor, IE6 will apply the second property, even if the first property includes the &lt;code&gt;!important&lt;/code&gt; directive. Other browsers will of course apply the &lt;code&gt;!important&lt;/code&gt; declaration, enabling us to target IE6 with the subsequent rule.&lt;/p&gt;
&lt;h3&gt;Enable alpha-transparent PNG support&lt;/h3&gt;
&lt;p&gt;One of the most frustrating shortcomings of IE6 is its lack of 32-bit alpha-transparent PNG support. When displaying a 32-bit alpha-transparent PNG, IE6 replaces all transparency with an ugly grey background. Fortunately, this is a well-known and frequently addressed issue for which there are a wide variety of workarounds and solutions.&lt;/p&gt;
&lt;p&gt;Apart from avoiding the use of alpha-transparent PNG images altogether, perhaps the simplest way to ensure visual compatibility with IE6 is to stick with fully transparent PNG images, which are fully supported and displayed properly in all browsers, including IE6.&lt;/p&gt;
&lt;p&gt;A more practical approach is to apply alpha-transparency via &lt;em&gt;8-bit&lt;/em&gt; PNG format rather than the usual 32-bit format. To do so, use a program such as Adobe Fireworks (Photoshop does not work for this purpose), save your alpha-tranparent PNG image in 8-bit format, and then include in your design as usual. 8-bit PNGs may not look quite as good as 32-bit versions, but their alpha-transparency degrades gracefully to full index transparency in IE6. This method enables you to employ alpha-transparency in all modern browsers without getting the ugly grey background in IE6.&lt;/p&gt;
&lt;p&gt;Of course, it is also possible to enable IE6-support for 32-bit alpha-transparency. There are many different scripts that enable such functionality, but all of them ultimately rely on a proprietary Microsoft &lt;code&gt;AlphaImageLoader&lt;/code&gt; filter that may be included in your CSS file as follows:&lt;/p&gt;
&lt;pre&gt;
* html .iepngfix { &lt;strong&gt;behavior: url(iepngfix.htc)&lt;/strong&gt;; }&lt;/pre&gt;
&lt;p&gt;To make this work, you need to upload &lt;a href="http://perishablepress.com/press/wp-content/online/code/png-fix-required-files.zip" title="Download PNG-fix files from Perishable Press"&gt;these two files&lt;/a&gt; to the same directory as your CSS file. The first file is a blank &lt;code&gt;gif&lt;/code&gt; image, and the second file is an HTC script that provides IE6 (and below) with the functionality required for 32-bit alpha-transparency. This is the most basic implementation of the &lt;code&gt;AlphaImageLoader&lt;/code&gt; filter, but more advanced functionality is also possible using a wide variety of freely available scripts. Here are a few of my favorites:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.dillerdesign.com/experiment/DD_belatedPNG/" title="Medicine for your IE6/PNG headache!"&gt;DD_belatedPNG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://labs.unitinteractive.com/unitpngfix.php" title="Unit PNG Fix"&gt;Unit PNG Fix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.twinhelix.com/css/iepngfix/" title="TwinHelix&amp;#039; IE PNG Fix"&gt;TwinHelix IE PNG Fix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://perishablepress.com/press/2008/05/28/css-hackz-series-png-fix-for-internet-explorer/" title="CSS Hackz Series: PNG Fix for Internet Explorer"&gt;Roundup of PNG Fixes for IE&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Fix the broken box model&lt;/h3&gt;
&lt;p&gt;Early versions of Internet Explorer incorrectly interpreted the box model to include borders and padding in the calculation of the content width. For example, consider the following case:&lt;/p&gt;
&lt;pre&gt;
div {
  border: 10px solid black;
  padding: 10px;
  height: 100px;
  width: 100px;
}&lt;/pre&gt;
&lt;p&gt;In modern browsers, the height and width of this division are each calculated according to W3C specifications as &lt;code&gt;100px + 20px + 20px = 140px&lt;/code&gt;. In early versions of IE, however, the height and width are each calculated improperly as &lt;code&gt;100px&lt;/code&gt;. This discrepency is responsible for many design inconsistencies between standards-compliant browsers and older versions of Internet Explorer.&lt;/p&gt;
&lt;p&gt;Fortunately, the broken box model was addressed in IE6, which is capable of rendering proper widths for web pages that include a complete &lt;code&gt;&amp;#60;!DOCTYPE&amp;#62;&lt;/code&gt;. When a complete &lt;code&gt;&amp;#60;!DOCTYPE&amp;#62;&lt;/code&gt; is present, IE6 switches to either &amp;#8220;standards-compliant mode&amp;#8221; or &amp;#8220;almost-standards-compliant mode,&amp;#8221; both of which cause IE6 to correctly interpret the box model. Conversely, when a complete &lt;code&gt;&amp;#60;!DOCTYPE&amp;#62;&lt;/code&gt; is not included in a web page, IE6 reverts to &amp;#8220;quirks mode&amp;#8221; and interprets the box model incorrectly.&lt;/p&gt;
&lt;p&gt;Thus, the box-model problem is easily fixed in IE6 by including a complete &lt;code&gt;&amp;#60;!DOCTYPE&amp;#62;&lt;/code&gt; and designing in standards-compliant mode. If you need to work in quirks mode, the next easiest fix is to avoid applying padding or borders on elements for which you have specified a width. You can always apply padding and/or margins to the enclosed elements.&lt;/p&gt;
&lt;p&gt;Even with these solutions, there may be situations where it is necessary to control the height and width of specific elements. In these cases, we may use the &amp;#8220;Tan Hack&amp;#8221; to get the job done:&lt;/p&gt;
&lt;pre&gt;
#selector {
  border: 10px solid black;
  padding: 10px;
  height: 100px;
  width: 100px;
}
* html #selector {
&lt;strong&gt;  \height&lt;/strong&gt;: 140px; &lt;strong&gt;/* targets IE5 and IE6 in quirks mode */&lt;/strong&gt;
&lt;strong&gt;  he\ight&lt;/strong&gt;: 100px; &lt;strong&gt;/* targets IE6 in standards mode */&lt;/strong&gt;
&lt;strong&gt;  \width&lt;/strong&gt;: 140px;  &lt;strong&gt;/* targets IE5 and IE6 in quirks mode */&lt;/strong&gt;
&lt;strong&gt;  w\idth&lt;/strong&gt;: 100px;  &lt;strong&gt;/* targets IE6 in standards mode */&lt;/strong&gt;
}&lt;/pre&gt;
&lt;p&gt;In the first set of rules, we apply our width and height as normal for all standard-compliant browsers. Then, in the second set of rules, we account for the broken box model in IE5 and IE6 quirks mode by adjusting the values for height and width to include the additonal padding and border widths. That&amp;#8217;s quite a mouthful, so hopefully the code and comments will clarify the technique.&lt;/p&gt;
&lt;h3&gt;Fix min-width/max-width and min-height/max-height&lt;/h3&gt;
&lt;p&gt;Out of the box, IE6 fails to understand maximum and minimum height and width. This is incredibly sad for designers, as many layout scenarios require these properties to function properly. In modern, standards-compliant browsers, we can use the following CSS to acheive our goals:&lt;/p&gt;
&lt;pre&gt;div.max-height {
  max-height: 333px;
}
div.min-height {
  min-height: 333px;
}
div.max-width {
  max-width: 333px;
}
div.min-width {
  min-width: 333px;
}&lt;/pre&gt;
&lt;p&gt;Of course, this is &lt;em&gt;waaay tooo&lt;/em&gt; easy for Internet Explorer, which completely fails to understand these basic CSS properties. Fortunately, IE supports its own, proprietary &lt;code&gt;expression&lt;/code&gt; attribute, which enables us to use JavaScript expressions to manipulate (X)HTML document properties such as max/min-width and max/min-height. For example, to specify a width property value via the &lt;code&gt;expression&lt;/code&gt; attribute, we could use this:&lt;/p&gt;
&lt;pre&gt;
div {
  width: &lt;strong&gt;expression&lt;/strong&gt;(333 + "px");
}&lt;/pre&gt;
&lt;p&gt;..Which is equivalent to this:&lt;/p&gt;
&lt;pre&gt;
div {
  width: 333px;
}&lt;/pre&gt;
&lt;p&gt;There are two downsides to using IE&amp;#8217;s &lt;code&gt;expression&lt;/code&gt; attribute. First, as expressions are essentially JavaScript, they fail when JavaScript is disabled (or otherwise missing) in the user&amp;#8217;s browser. Second, use of CSS expressions for min/max properties is very resource intensive and may negatively impact browser performance. Nonetheless, the setting of max/min-widths/heights remains an important tool in the web designer&amp;#8217;s toolbox. With that in mind, here are some useful CSS expressions enabling complete min/max functionality in IE6.&lt;/p&gt;
&lt;h4&gt;max-width&lt;/h4&gt;
&lt;pre&gt;
&lt;strong&gt;/* max-width for IE6 */&lt;/strong&gt;
* html div.max-width {
  width: expression(document.body.clientWidth &gt; 776 ? "777px" : "auto");
}
&lt;strong&gt;/* max-width for standards-compliant browsers */&lt;/strong&gt;
div.max-width {
  max-width: 777px;
}&lt;/pre&gt;
&lt;h4&gt;min-width&lt;/h4&gt;
&lt;pre&gt;
&lt;strong&gt;/* min-width for IE6 */&lt;/strong&gt;
* html div.min-width {
  width: expression(document.body.clientWidth &lt; 334 ? "333px" : "auto");
}
&lt;strong&gt;/* min-width for standards-compliant browsers */&lt;/strong&gt;
div.min-width {
  min-width: 333px;
}&lt;/pre&gt;
&lt;h4&gt;max-height&lt;/h4&gt;
&lt;pre&gt;
&lt;strong&gt;/* max-height for IE6 */&lt;/strong&gt;
* html div.max-height {
  height: expression(this.scrollHeight &gt; 332 ? "333px" : "auto");
}
&lt;strong&gt;/* max-height for standards-compliant browsers */&lt;/strong&gt;
div.max-height {
  max-height: 333px;
}&lt;/pre&gt;
&lt;h4&gt;min-height&lt;/h4&gt;
&lt;p&gt;Fortunately, we can skip the crazy JavaScript/CSS expressions when applying minimum height in IE6. Thanks to &lt;a href="http://www.dustindiaz.com/min-height-fast-hack/" title="Min-Height Fast Hack"&gt;Dustin Diaz&lt;/a&gt;, we can set &lt;code&gt;min-height&lt;/code&gt; in IE6 with this morsel of valid CSS:&lt;/p&gt;
&lt;pre&gt;
&lt;strong&gt;/* min-height for IE6 */&lt;/strong&gt;
div.min-height {
  min-height: 500px;
  height: auto &lt;strong&gt;!important&lt;/strong&gt;;
  height: 500px;
}&lt;/pre&gt;
&lt;h3&gt;Kill the double margin bug&lt;/h3&gt;
&lt;p&gt;Most web designers who have been designing sites for awhile are familair with IE6&amp;#8217;s &amp;#8220;doubled floated-margin bug.&amp;#8221; This nasty bug rears its ugly head whenever you float an element (such as a &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt;) in one direction and then apply a margin in that same direction. For example, if we do this:&lt;/p&gt;
&lt;pre&gt;
div {
  float: right;
  margin-right: 10px;
}&lt;/pre&gt;
&lt;p&gt;..IE6 will (usually) &lt;em&gt;double&lt;/em&gt; the size of the margin to &lt;code&gt;20px&lt;/code&gt; for no apparent reason whatsoever. Needless to say, this double-margin bug has wrecked many a fine web design, causing much pain and distress along the way.&lt;/p&gt;
&lt;p&gt;Fortunately, this bug is easy to kill. Simply change the display type of the floated element from &lt;code&gt;block&lt;/code&gt; to &lt;code&gt;inline&lt;/code&gt;, like so:&lt;/p&gt;
&lt;pre&gt;
div#selector {
  float: right;
  margin-right: 10px;
}
* html div#selector {
  display: inline; &lt;strong&gt;/* kill double-margin bug */&lt;/strong&gt;
}&lt;/pre&gt;
&lt;p&gt;This solves the double-margin bug 99% of the time without issue. For those rare, unexplainable cases where this fix &lt;em&gt;doesn&amp;#8217;t&lt;/em&gt; work, you may need to workaround the issue by removing the margin and applying padding to either the parent element or to the floated element itself.&lt;/p&gt;
&lt;h3&gt;Clear your floats&lt;/h3&gt;
&lt;p&gt;Clearing floats is another common layout challenge, not only for IE6, but for many modern browsers. In a perfect world, an element that contains a floated element enlcoses that element entirely. In the imperfect world of web browsers, however, floats are frequently &lt;em&gt;not&lt;/em&gt; entirely closed. When this happens, we say that the floated element has not been &amp;#8220;cleared&amp;#8221; by its parent element. Fortunately, there are several easy ways to clear your floats in IE6 and other browsers as well.&lt;/p&gt;
&lt;p&gt;One of the oldest ways to clear your floats is to use the &lt;a href="http://perishablepress.com/press/2008/02/05/lessons-learned-concerning-the-clearfix-css-hack/" title="Lessons Learned Concerning the Clearfix CSS Hack • Perishable Press"&gt;clearfix hack&lt;/a&gt;. This CSS technique works by generating content after the parent element using the CSS &lt;code&gt;:after&lt;/code&gt; pseudo-class. The generated content then serves to clear the floated element. Here is a typical example:&lt;/p&gt;
&lt;pre&gt;
.clearfix&lt;strong&gt;:after&lt;/strong&gt; {
  content: " ";
  display: block;
  height: 0;
  clear: both;
  visibility: hidden;
}

.clearfix { display: inline-table; }

&lt;strong&gt;/* Hides from IE-mac \*/&lt;/strong&gt;
* html .clearfix {height: 1%;}
.clearfix { display: block; }
&lt;strong&gt;/* End hide from IE-mac */&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;To use this method to clear your floats, place it into your CSS file and change all instances of &lt;code&gt;.clearfix&lt;/code&gt; to the selector of the element that needs to clear its floated ancestors.&lt;/p&gt;
&lt;p&gt;Another CSS method of clearing your floats is to simply float the container element. For example, if you float an image within a container &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; that fails to enclose it, simply apply the following CSS:&lt;/p&gt;
&lt;pre&gt;
div {
  float: left;
}&lt;/pre&gt;
&lt;p&gt;Then, if the containing element needs to behave as a regular block element, apply a width of 100% to force a line-break before the next element:&lt;/p&gt;
&lt;pre&gt;
div {
  float: left;
  width: 100%;
}&lt;/pre&gt;
&lt;p&gt;So far so good, but there is an even &lt;em&gt;better&lt;/em&gt; method of clearing your floats. By simply applying an &lt;code&gt;overflow&lt;/code&gt; value to the container &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt;, it will automatically expand vertically and clear its floated children. Here is an example:&lt;/p&gt;
&lt;pre&gt;
div.container {
  overflow: hidden;
  width: 100%;
}&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;width&lt;/code&gt; declaration is required for Internet Explorer and Opera, but it doesn&amp;#8217;t need to be set at &lt;code&gt;100%&lt;/code&gt;; rather, you may use any width and unit of measure that is needed. If you don&amp;#8217;t want to specify a &lt;code&gt;width&lt;/code&gt;, you may specify a &lt;code&gt;height&lt;/code&gt; instead. For the &lt;code&gt;overflow&lt;/code&gt; property, you may use any of the following three values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;auto&lt;/code&gt; - display scrollbars if content exceeds specified width&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hidden&lt;/code&gt; - never display scrollbars even if content exceeds width&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scroll&lt;/code&gt; - always display scrollbars, even if they&amp;#8217;re not necessary&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As well as this method works for clearing floated elements, there are cases where the &lt;code&gt;overflow&lt;/code&gt; property can interfere with other aspects of the design. If this should occur, you may want to try limiting the scope of the overflow by using &lt;code&gt;overflow-x:hidden;&lt;/code&gt; or &lt;code&gt;overflow-y:hidden;&lt;/code&gt;. And remember, the &lt;code&gt;width&lt;/code&gt; property may be replaced by &lt;code&gt;height&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Fix other common IE6 problems&lt;/h3&gt;
&lt;p&gt;Wrapping things up, let&amp;#8217;s run through a few other problems commonly experienced with IE6. These issues and their corresponding fixes are fairly straightforward, so I will spare you the lengthy diatribe and jump straight to the point. Keep in mind as you continue through this article that you should relocate and consolidate any IE6-specific hacks into an IE6-specific stylesheet, which should be included via conditional comments (see first section, above).&lt;/p&gt;
&lt;h4&gt;Fix relative positioning&lt;/h4&gt;
&lt;p&gt;Using &lt;code&gt;position:relative&lt;/code&gt; in your designs is perhaps the easiest way to mess things up in IE6. Modern browsers display relatively positioned nested elements without issue, but IE6 frequently chokes up on even slightly complicated layouts. Fortunately, the solution is as easy as triggering &lt;code&gt;hasLayout&lt;/code&gt; by adding &lt;code&gt;zoom:1;&lt;/code&gt; to each relatively positioned element:&lt;/p&gt;
&lt;pre&gt;
.selector {
  &lt;strong&gt;position: relative&lt;/strong&gt;;
}
* html .selector {
  &lt;strong&gt;zoom: 1&lt;/strong&gt;;
}&lt;/pre&gt;
&lt;p&gt;Note that you should not apply &lt;code&gt;zoom:1;&lt;/code&gt; to any inline elements. Doing so will cause IE6 to treat them as block elements. Keep this in mind for the following solutions as well.&lt;/p&gt;
&lt;h4&gt;Fix negative margins&lt;/h4&gt;
&lt;p&gt;Negative margins are useful in a variety of scenarios, and most browsers handle them with no problem whatsoever. Unfortunately, IE6 doesn&amp;#8217;t like negative margins unless you apply relative positioning to the target element:&lt;/p&gt;
&lt;pre&gt;
.selector {
  margin: &lt;strong&gt;-1.5em&lt;/strong&gt;;
}
* html .selector {
  position: relative;
  zoom: 1;
}&lt;/pre&gt;
&lt;p&gt;Note the addition of the &lt;code&gt;zoom:1;&lt;/code&gt; declaration, which is required because of the relative positioning. Ain&amp;#8217;t IE great?&lt;/p&gt;
&lt;h4&gt;Fix overflow problems&lt;/h4&gt;
&lt;p&gt;Using the &lt;code&gt;overflow&lt;/code&gt; in IE6 will sometimes lead to unexpected, unexplainable display issues. Fortunately, we can resolve many &lt;code&gt;overflow&lt;/code&gt;-related display problems by triggering &lt;code&gt;hasLayout&lt;/code&gt; via &amp;#8212; yep, you guessed it &amp;#8212; &lt;code&gt;zoom:1;&lt;/code&gt;. Here is an example:&lt;/p&gt;
&lt;pre&gt;
.selector {
  overflow: hidden
}
* html .selector {
  &lt;strong&gt;zoom: 1&lt;/strong&gt;;
}&lt;/pre&gt;
&lt;p&gt;Another strange &lt;code&gt;overflow&lt;/code&gt;-related issue is observed when &lt;code&gt;font-style:italic;&lt;/code&gt; expands the width of its parent element. Thankfully, this nuance is easily resolved by applying the following CSS to the parent element:&lt;/p&gt;
&lt;pre&gt;
* html .selector {
  overflow-x: hidden;
}&lt;/pre&gt;
&lt;h4&gt;Line up floated elements&lt;/h4&gt;
&lt;p&gt;When you float elements of a fixed width, they will align themselves horizontally to fit the width of the parent element. At least, that&amp;#8217;s how it works in most browsers. In IE6, the floated items will not be displayed in a straight line, but rather will appear to &lt;a href="http://css-tricks.com/prevent-menu-stepdown/" title="Prevent Menu &amp;#039;Stepdown&amp;#039;"&gt;stepdown&lt;/a&gt; in bizarre, staircase-like fashion. Fortunately, there are two ways to fix this issue. The first is to apply a &lt;code&gt;line-height:0;&lt;/code&gt; declaration to the parent element:&lt;/p&gt;
&lt;pre&gt;
.selector {
  float: left;
  width: 100px;
  clear: none;
}
* html .selector {
  &lt;strong&gt;line-height: 0&lt;/strong&gt;;
}&lt;/pre&gt;
&lt;p&gt;Alternately, you may prevent stepdown by applying a &lt;code&gt;display:inline;&lt;/code&gt; declaration to the floated elements:&lt;/p&gt;
&lt;pre&gt;
.selector {
  float: left;
  width: 100px;
  clear: none;
}
* html .selector {
  &lt;strong&gt;display: inline&lt;/strong&gt;;
}&lt;/pre&gt;
&lt;h4&gt;Fix your list items&lt;/h4&gt;
&lt;p&gt;Lastly, if IE6 decides to add an extra set of list items (&lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt;) after your list (&lt;code&gt;&amp;#60;ul&amp;#62;&lt;/code&gt;), adding an HTML comment has been known to magically resolve the issue. Here is what your source code will look like before and after applying the fix:&lt;/p&gt;
&lt;h4&gt;&lt;em&gt;Before:&lt;/em&gt;&lt;/h4&gt;
&lt;pre&gt;
&amp;#60;ul&amp;#62;
  &amp;#60;li&amp;#62;Firefox&amp;#60;/li&amp;#62;
  &amp;#60;li&amp;#62;Opera&amp;#60;/li&amp;#62;
  &amp;#60;li&amp;#62;Safari&amp;#60;/li&amp;#62;
  &amp;#60;li&amp;#62;Internet Explorer&amp;#60;/li&amp;#62;
  &amp;#60;/ul&amp;#62;
&amp;#60;li&amp;#62;Internet Explorer&amp;#60;/li&amp;#62;
&amp;#60;li&amp;#62;Internet Explorer&amp;#60;/li&amp;#62;&lt;/pre&gt;
&lt;h4&gt;&lt;em&gt;After:&lt;/em&gt;&lt;/h4&gt;
&lt;pre&gt;
&amp;#60;ul&amp;#62;
  &amp;#60;li&amp;#62;Firefox&amp;#60;/li&amp;#62;
  &amp;#60;li&amp;#62;Opera&amp;#60;/li&amp;#62;
  &amp;#60;li&amp;#62;Safari&amp;#60;/li&amp;#62;
  &amp;#60;li&amp;#62;Internet Explorer&amp;#60;/li&amp;#62;
  &lt;strong&gt;&amp;#60;-- IE6 fix --&amp;#62;&lt;/strong&gt;
&amp;#60;/ul&amp;#62;&lt;/pre&gt;
&lt;h3&gt;In Closing&lt;/h3&gt;
&lt;p&gt;With the CSS tricks described in this article, you are well-equipped to tame the IE6 beast and get it to behave when displaying your web pages. When it&amp;#8217;s time to make your next design compatible with IE6, refer to this definitive guide for clear explanations and solutions for the most common IE6 issues. And of course, if you&amp;#8217;ve got more tricks, ideas, comments, or questions, be sure to sound off in the comments section!&lt;/p&gt;
&lt;h3&gt;Related content&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/javascript/javascript-debugging-techniques-in-ie-6/"&gt;JavaScript Debugging Techniques in IE 6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/project-management/adopting-a-does-it-really-matter-philosophy/"&gt;Adopting a &amp;#34;Does It Really Matter?&amp;#34; Philosophy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/css/20-useful-resources-for-learning-about-css3/"&gt;20 Useful Resources for Learning about CSS3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Related categories&lt;/em&gt;: &lt;a href="http://sixrevisions.com/category/css/"&gt;CSS&lt;/a&gt; and &lt;a href="http://sixrevisions.com/category/web-development/"&gt;Web Development&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;About the Author&lt;/h3&gt;
&lt;p&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/definitive-guide-to-taming-the-ie6-beast-2009072402380971-jeff-starr_small_jpg.jpg" alt="" width="80" height="80" /&gt;&lt;span&gt;&lt;strong&gt;Jeff Starr&lt;/strong&gt; is a web-developing, graphic-designing alien from the distant planet &lt;a href="http://perishablepress.com/" title="Perishable Press: Digital Design and Dialogue"&gt;Perishable Press&lt;/a&gt;. When he&amp;#8217;s not flying through hyperspace, Jeff uses his alien powers to write &lt;a href="http://diggingintowordpress.com/" title="Digging into WordPress"&gt;amazing stuff about WordPress&lt;/a&gt; and design &lt;a href="http://monzilla.biz/" title="Monzilla Media: Obsessive Web and Graphic Design"&gt;awesome websites for humans&lt;/a&gt;. Jeff comes in peace, so don&amp;#8217;t be afraid to &lt;a href="http://twitter.com/perishable" title="Jeff Starr (aka Perishable) on Twitter"&gt;follow him on Twitter&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/SixRevisions/~4/wNrSH0P3EBs" height="1" width="1" /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/U7lcxhskAdPovgWoxN9CRzhGzMk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U7lcxhskAdPovgWoxN9CRzhGzMk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/U7lcxhskAdPovgWoxN9CRzhGzMk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U7lcxhskAdPovgWoxN9CRzhGzMk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=syEvYPHbqGc:_v8Q_xuzogQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=syEvYPHbqGc:_v8Q_xuzogQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=syEvYPHbqGc:_v8Q_xuzogQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=syEvYPHbqGc:_v8Q_xuzogQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=syEvYPHbqGc:_v8Q_xuzogQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/syEvYPHbqGc" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 24 Jul 2009 02:38:12 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/definitive-guide-to-taming-the-ie6-beast</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/_v8Q_xuzogQ/definitive-guide-to-taming-the-ie6-beast</feedburner:origLink></item>

        
        
        <item>

          <title>25 Elegant Workstations for Your Inspiration</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/RjmIFqvcGQ0/25-elegant-workstations-for-your-inspiration</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/25-elegant-workstations-for-your-inspiration]]></guid>
		 


          <description>&lt;p&gt;Whether you work on a &lt;em&gt;Mac&lt;/em&gt;,  a &lt;em&gt;PC&lt;/em&gt;, or &lt;em&gt;both&lt;/em&gt; - the way your workstation is set up reveals a lot about your &lt;em&gt;sense of style&lt;/em&gt; and &lt;em&gt;work attitude&lt;/em&gt;. Have a comfortable place where you can do your work  can lead to increased &lt;em&gt;creativity&lt;/em&gt; and &lt;em&gt;productivity&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This collection presents some &lt;strong&gt;excellent examples of elegant, beautiful, cozy, and well-designed  workspaces&lt;/strong&gt; so that you might get some ideas and inspiration from them.&lt;/p&gt;
&lt;h3&gt;1. &lt;a href="http://www.flickr.com/photos/35874948@N08/3543483209/in/pool-unclutterer/"&gt;Workspace  by Hey Brad&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/35874948@N08/3543483209/in/pool-unclutterer/"&gt;&lt;img width="500" height="375" alt="Workspace by Hey Brad" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-28_workspace_by_hey_brad_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;2. &lt;a href="http://www.flickr.com/photos/dekuwa/3623431299/in/set-72157600853229167/"&gt;Foto  de Familia: iMac, Macbook, Macbook Pro &amp;amp; Macbook Air&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/dekuwa/3623431299/in/set-72157600853229167/"&gt;&lt;img width="500" height="333" alt="Foto de Familia" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-07_foto_de_familia_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;3. &lt;a href="http://www.flickr.com/photos/50321194@N00/3534073723/"&gt;CodyRS Mac Setup&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/50321194@N00/3534073723/"&gt;&lt;img width="500" height="321" alt="CodyRS" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-08_codyrs_mac_setup_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;4. &lt;a href="http://www.flickr.com/photos/technolsp/3373084535/in/set-72157614955548119/"&gt;2  Apple Cinema Displays and Macbook Pro&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/technolsp/3373084535/in/set-72157614955548119/"&gt;&lt;img width="500" height="375" alt="2 Apple Cinema Displays and Macbook Pro" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-09_2_apple_cinema_displays_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;5. &lt;a href="http://www.flickr.com/photos/sanderd777/3299455379/in/pool-macsetups"&gt;Apple  Fanboy? by sandercw&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/sanderd777/3299455379/in/pool-macsetups"&gt;&lt;img width="500" height="333" alt="Apple Fanboy? by sandercw" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-25_apple_fanboy_sandercw_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;6. &lt;a href="http://www.flickr.com/photos/uberrob/3627845532/in/pool-lifehacker-workspace-showandtell"&gt;SonyLand  by Uberrob&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/uberrob/3627845532/in/pool-lifehacker-workspace-showandtell"&gt;&lt;img width="500" height="266" alt="SonyLand by Uberrob" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-20_sonyland_by_uberrob_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;7. &lt;a href="http://www.flickr.com/photos/12409261@N04/3411539450/in/pool-lifehacker-workspace-showandtell"&gt;Triple  monitor setup by tigersharkbas&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/12409261@N04/3411539450/in/pool-lifehacker-workspace-showandtell"&gt;&lt;img width="500" height="333" alt="Triple monitor setup by tigersharkbas" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-24_triple_monitor_tigersharkbas_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;8. &lt;a href="http://www.flickr.com/photos/battlefan/3618622319/in/pool-macsetupsinternational"&gt;Battlefan&amp;rsquo;s  Workspace&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/battlefan/3618622319/in/pool-macsetupsinternational"&gt;&lt;img width="500" height="333" alt="Battlefan&amp;#039;s Workspace" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-15_battlefans_workspace_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;9. &lt;a href="http://www.flickr.com/photos/justingriz/3332534822/"&gt;Justin  Griswold&amp;rsquo;s Desk&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/justingriz/3332534822/"&gt;&lt;img width="500" height="292" alt="Justin Griswolds Desk" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-01_justin_griswold_desk_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;10. &lt;a href="http://www.flickr.com/photos/simbe/3389795020/"&gt;Simbe90  Desk Setup&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/simbe/3389795020/"&gt;&lt;img width="500" height="333" alt="Simbe90 Desk Setup" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-02_simbe90_desk_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;11. &lt;a href="http://www.flickr.com/photos/yveshuytruong/3411103066/in/pool-24765107@N00"&gt;Workspace  2.1 by Yves Huy Truong&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/yveshuytruong/3411103066/in/pool-24765107@N00"&gt;&lt;img width="500" height="333" alt="Workspace 2.1 by Yves Huy Truong" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-16_workspace_2_1_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;12. &lt;a href="http://www.flickr.com/photos/rodrigohaenggi/3310278928/in/pool-macsetups"&gt;Current  workspace setup by Rodrigo Haenggi&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/rodrigohaenggi/3310278928/in/pool-macsetups"&gt;&lt;img width="500" height="375" alt="Current workspace setup by Rodrigo Haenggi" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-26_current_workspace_by_rodrigo_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;13. &lt;a href="http://www.flickr.com/photos/quattrovageena/3360676906/in/set-1487154/"&gt;iMac  and MacBook&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/quattrovageena/3360676906/in/set-1487154/"&gt;&lt;img width="500" height="335" alt="iMac and MacBook" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-03_imac_and_ibook_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;14. &lt;a href="http://www.flickr.com/photos/mr_billiam/3354659915/"&gt;Mr  billiam&amp;rsquo;s Desk&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/mr_billiam/3354659915/"&gt;&lt;img width="500" height="270" alt="Mr billiam&amp;#039;s Desk" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-04_mr_billiam_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;15. &lt;a href="http://www.flickr.com/photos/technolsp/3373085127/"&gt;2  Apple Cinema Displays and Macbook Pro by Psleda&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/technolsp/3373085127/"&gt;&lt;img width="500" height="375" alt="2 Apple Cinema Displays and Macbook Pro by Psleda" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-10_apple_cinema_displays02_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;16. &lt;a href="http://www.flickr.com/photos/rb3m/3495489183/"&gt;Work  space, games space&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/rb3m/3495489183/"&gt;&lt;img width="500" height="338" alt="Work space, games space" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-05_work_space_game_space_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;17. &lt;a href="http://www.flickr.com/photos/nicholasbiebuyck/3118386037/"&gt;The Newness&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/nicholasbiebuyck/3118386037/"&gt;&lt;img width="500" height="334" alt="The Newness" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-11_the_newness_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;18. &lt;a href="http://www.flickr.com/photos/mhovland/3636574564/in/pool-24765107@N00"&gt;Stage  C at Novastar Post in Hollywood, CA&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/mhovland/3636574564/in/pool-24765107@N00"&gt;&lt;img width="500" height="313" alt="Stage C at Novastar Post in Hollywood, CA" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-13_stage_c_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;19. &lt;a href="http://www.flickr.com/photos/technolsp/3506821779/in/pool-macsetupsinternational"&gt;May  &amp;lsquo;09 Desktop by Psleda&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/technolsp/3506821779/in/pool-macsetupsinternational"&gt;&lt;img width="500" height="375" alt="Desktop by Psleda" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-14_may_09_desktop_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;20. &lt;a href="http://www.flickr.com/photos/bwa32/3034050461/in/pool-unclutterer"&gt;9920 x  1600 pixels&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/bwa32/3034050461/in/pool-unclutterer"&gt;&lt;img width="500" height="375" alt="9920 x 1600 pixels" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-17_9920x1600px_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;21. &lt;a href="http://www.flickr.com/photos/david_b/3381120183/in/pool-unclutterer"&gt;David  Bosman&amp;rsquo;s Workspace&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/david_b/3381120183/in/pool-unclutterer"&gt;&lt;img width="500" height="375" alt="David Bosman&amp;#039;s Workspace" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-18_david_bosmans_workspace_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;22. &lt;a href="http://www.flickr.com/photos/robotocha/3271586219/in/pool-unclutterer"&gt;Workspace  by No Robotocha!&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/robotocha/3271586219/in/pool-unclutterer"&gt;&lt;img width="500" height="333" alt="Workspace by No Robotocha!" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-19_workspace_by_no_robotocha_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;23. &lt;a href="http://www.flickr.com/photos/seanosteen/3287349068/in/pool-unclutterer"&gt;Home  Office by SeanOsteen&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/seanosteen/3287349068/in/pool-unclutterer"&gt;&lt;img width="500" height="375" alt="Home Office by SeanOsteen" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-22_home_office_seanosteen_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;24. &lt;a href="http://www.flickr.com/photos/austingrade/3576982975/in/pool-unclutterer/"&gt;Setup  by Austin Grade&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/austingrade/3576982975/in/pool-unclutterer/"&gt;&lt;img width="500" height="288" alt="Setup by Austin Grade" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-23_setup_by_austin_grade_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;25. &lt;a href="http://www.flickr.com/photos/flysi/3508505915/in/pool-unclutterer/"&gt;My  Rig: 2009 Edition by FlySi&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/flysi/3508505915/in/pool-unclutterer/"&gt;&lt;img width="500" height="333" alt="My Rig: 2009 Edition by FlySi" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-14-27_my_rig_2009_edition_jpg.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Show us your own workstations&lt;/h3&gt;
&lt;p&gt;Do you have a photo of your workspace? Why don&amp;rsquo;t you  show it off to us by linking to it in the comments!&lt;/p&gt;
&lt;p&gt;&lt;img width="80" height="80" alt="" src="http://ooyes.net/userfiles/media/downloaded/25-elegant-workstations-for-your-inspiration-2009072108301774-tomas_laurinaviciu_small_jpg.jpg" /&gt;&lt;span&gt;&lt;strong&gt;Tomas Laurinavičius&lt;/strong&gt; is interested in web design, graphic design and web development, based in Lithuania. He&amp;rsquo;s also the founder of &lt;a href="http://iniwoo.net"&gt;&lt;strong&gt;Iniwoo&lt;/strong&gt;&lt;/a&gt;, a site about photoshop, web design, wordpress and inspiration. If you&amp;rsquo;d like to connect with him, you can &lt;a href="http://twitter.com/iniwoonet"&gt;&lt;strong&gt;follow him on Twitter&lt;/strong&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img width="1" height="1" src="http://feeds.feedburner.com/~r/SixRevisions/~4/_bxXU1SGJy8" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WKhVMMF5qGBg-uWbh_axa1vjRhE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WKhVMMF5qGBg-uWbh_axa1vjRhE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WKhVMMF5qGBg-uWbh_axa1vjRhE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WKhVMMF5qGBg-uWbh_axa1vjRhE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=RjmIFqvcGQ0:hggrEISiX58:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=RjmIFqvcGQ0:hggrEISiX58:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=RjmIFqvcGQ0:hggrEISiX58:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=RjmIFqvcGQ0:hggrEISiX58:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=RjmIFqvcGQ0:hggrEISiX58:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/RjmIFqvcGQ0" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 22 Jul 2009 12:07:12 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/25-elegant-workstations-for-your-inspiration</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/hggrEISiX58/25-elegant-workstations-for-your-inspiration</feedburner:origLink></item>

        
        
        <item>

          <title>How to Increase Sign-ups by 200%</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/E1AaKt6i8Gk/how-to-increase-sign-ups-by-200percent</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/how-to-increase-sign-ups-by-200percent]]></guid>
		 


          <description>&lt;div&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcarsonified.com%2Fblog%2Fbusiness%2Fhow-to-increase-sign-ups-by-200-percent%2F"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/how-to-increase-sign-ups-by-200percent-2009072103201879-imagebutton_gif_url_http_3A_2F_2Fcarsonified_com_2Fblog_2Fbusiness_2Fhow-to-increase-sign-ups-by-200-percent_2F.com%2Fblog%2Fbusiness%2Fhow-to-increase-sign-ups-by-200-percent%2F" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/how-to-increase-sign-ups-by-200percent-2009072103201879-20090720-qx6j9cehatbfed1a9a23mj2ih7_png.png" alt="Screengrab of Highrise homepage with an arrow pointing to signup button"&gt;&lt;/p&gt;
&lt;p&gt;When I had coffee with Jason Fried of 37signals after &lt;a href="http://bit.ly/fowa-london-09"&gt;FOWA&lt;/a&gt; Miami, I asked him if he had learned anything about &lt;a href="http://bit.ly/ab-testing"&gt;A/B testing&lt;/a&gt; that they hadn&amp;#8217;t blogged about. And wow, did he have an amazing little tip to share &amp;#8230;&lt;/p&gt;
&lt;h3&gt;Four Amazing Words&lt;/h3&gt;
&lt;p&gt;He said that they tested various phrases on the &lt;a href="http://highrisehq.com"&gt;Highrise homepage&lt;/a&gt; for the call-to-action button. They originally had used various permutations of &amp;#8220;Free Trial&amp;#8221; and &amp;#8220;Sign-up for Free Trial&amp;#8221;. Then they tested the phrase:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;#8220;See Plans and Pricing&amp;#8221;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;This resulted in a &lt;strong&gt;200% increase in sign-ups&lt;/strong&gt;. That&amp;#8217;s right. 200%.&lt;/p&gt;
&lt;p&gt;He believes it&amp;#8217;s because people are afraid if they click a link that says &amp;#8220;Free Trial&amp;#8221; then they&amp;#8217;ll somehow automatically signup for something and be trapped. However, &amp;#8220;See Plans and Pricing&amp;#8221; encouraged them to explore, without the fear of commitment.&lt;/p&gt;
&lt;p&gt;If that isn&amp;#8217;t a case for conducting A/B Testing, then I don&amp;#8217;t know what is.&lt;/p&gt;
&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/vitaminmasterfeed?a=tjkKiB4eE6U:bVZ9YEFVtxc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/vitaminmasterfeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/vitaminmasterfeed?a=tjkKiB4eE6U:bVZ9YEFVtxc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/vitaminmasterfeed?i=tjkKiB4eE6U:bVZ9YEFVtxc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/vitaminmasterfeed?a=tjkKiB4eE6U:bVZ9YEFVtxc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/vitaminmasterfeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/vitaminmasterfeed/~4/tjkKiB4eE6U" height="1" width="1" /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QZ7kWlDyIwEvWp5MdlKTBboc9bI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QZ7kWlDyIwEvWp5MdlKTBboc9bI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QZ7kWlDyIwEvWp5MdlKTBboc9bI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QZ7kWlDyIwEvWp5MdlKTBboc9bI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=E1AaKt6i8Gk:9vuD92qw9S8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=E1AaKt6i8Gk:9vuD92qw9S8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=E1AaKt6i8Gk:9vuD92qw9S8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=E1AaKt6i8Gk:9vuD92qw9S8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=E1AaKt6i8Gk:9vuD92qw9S8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/E1AaKt6i8Gk" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 21 Jul 2009 03:20:20 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/how-to-increase-sign-ups-by-200percent</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/9vuD92qw9S8/how-to-increase-sign-ups-by-200percent</feedburner:origLink></item>

        
        
        <item>

          <title>Using jQuery To Manipulate and Filter Data</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/eWPqHAU47WQ/using-jquery-to-manipulate-and-filter-data</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/using-jquery-to-manipulate-and-filter-data]]></guid>
		 


          <description>&lt;p&gt;When a webpage is designed to display large tables of data, a great amount of consideration should be dedicated to allowing the user to sort through the data in a structured manner. In this article, I will go over four techniques: hover effects, zebra rows, filtering, and sorting.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;a href="http://nettuts.s3.amazonaws.com/347_jqueryTable/source.zip"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/using-jquery-to-manipulate-and-filter-data-2009062309522452-button_src_nm_jpg.jpg" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h1&gt;Setting Up The Tables&lt;/h1&gt;
&lt;p&gt;There are some important notes we must address before looking at our Javascript code. The HTML table markup will be like any other table you may have created, except we&lt;br /&gt;
require two tags that many people omit. The head section of the table must be wrapped in . The body of the&lt;br /&gt;
table, where all the data we want to display is kept, must be wrapped in . This little caveat will make it easier for us to distinguish&lt;br /&gt;
between the data and table headers.&lt;/p&gt;
&lt;div&gt;&lt;img height="343" width="710" alt="Table" src="http://ooyes.net/userfiles/media/downloaded/using-jquery-to-manipulate-and-filter-data-2009062309522452-table_png.png" /&gt;&lt;/div&gt;
&lt;pre name="code"&gt;&lt;table cellspacing="1" cellpadding="1" id="resultTable"&gt;   &lt;thead&gt;     &lt;tr&gt;       &lt;th&gt;First Name&lt;/th&gt;       &lt;th&gt;Last Name&lt;/th&gt;       &lt;th&gt;City&lt;/th&gt;       &lt;th&gt;State&lt;/th&gt;     &lt;/tr&gt;   &lt;/thead&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;Mannix&lt;/td&gt;       &lt;td&gt;Bolton&lt;/td&gt;     &lt;/tr&gt;     ...   &lt;/tbody&gt; &lt;/table&gt;
  &lt;/pre&gt;
&lt;h3&gt;Zebra Rows&lt;/h3&gt;
&lt;p&gt;Zebra Rows are a very common data organization technique that are both easy to implement and have a powerful impact. Zebra Rows in&lt;br /&gt;
essence is alternating the style of odd and even rows to make the data easier to read horizontally. This is highly important with&lt;br /&gt;
multi-column data so that users can look at one column and easily read the associated data on the same row under other headers. In the&lt;br /&gt;
examples that I will be using through out this tutorial, I have a list of people with four properties: first name, last name, city, and&lt;br /&gt;
state. Notice how I have the row colors alternating as well as font color to maximize the effect.&lt;/p&gt;
&lt;div&gt;&lt;img alt="Zebra Rows" src="http://ooyes.net/userfiles/media/downloaded/using-jquery-to-manipulate-and-filter-data-2009062309522452-zebra-rows_png.png" /&gt;&lt;/div&gt;
&lt;p&gt;Now on to the actual Zebra Rows. The first place to start is an external CSS file linked to the document. The first element to&lt;br /&gt;
target is the table.&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
table {
  background-color: white;
  width: 100%;
}
    &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This is fairly trivial; we are telling the table background to be white, and to stretch to 100% of the parent element&amp;rsquo;s width. Next we will target&lt;br /&gt;
the cell elements . Now this might seem odd to some &amp;mdash; why would we target the cells, and not the entire row? Well it turns out that, in&lt;br /&gt;
terms of cross-browser adoption, it is more effective to target cells when applying background styles.&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
tbody td {
  background-color: white;
}
tbody td.odd {
  background-color: #666;
  color: white;
}
    &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Here we are setting up a class for the &amp;ldquo;odd&amp;rdquo; table rows that sets an alternate background-color and font-color. We also set a default style for all td&lt;br /&gt;
elements which will inherently apply to the &amp;ldquo;even&amp;rdquo; rows. This is all the CSS that is required. I told you it was simple! Now let&amp;rsquo;s look at the jQuery code. The&lt;br /&gt;
power of jQuery selectors makes this just as easy as the CSS code. All we need to do is target the cells and use the addClassName function.&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
$(document).ready(function() {
  zebraRows(&amp;#039;tbody tr:odd td&amp;#039;, &amp;#039;odd&amp;#039;);
});

//used to apply alternating row styles
function zebraRows(selector, className)
{
  $(selector).removeClass(className).addClass(className);
}
    &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This code, while short, has a few gotchas to consider. First off notice how we abstracted the implementation to a function; this is ideal because if we change the&lt;br /&gt;
data in the table asynchronously, without a page refresh, then we will want to assure the rows are still alternating style. For the same reason we also invoke the&lt;br /&gt;
removeClass function so that if a row is initially odd, but becomes even, we are assured that the odd class definition does not remain. This may seem confusing right now,&lt;br /&gt;
but when we look at filtering later on this will become more clear. For the sake of reusable code we also require that the selector and class name are passed to&lt;br /&gt;
the function &amp;mdash; so it can be used in projects that have different class names or selector requirements (i.e. a site that has multiple tables only one of&lt;br /&gt;
which you wish to target). If you review the &lt;a href="http://docs.jquery.com/Events/ready#fn"&gt;ready()&lt;/a&gt; function, a jQuery function executed when the page is&lt;br /&gt;
finished loading, you&amp;rsquo;ll see our call to zebraRows(). Here is where we pass in the selector and class name. The selector uses a special jQuery syntax&lt;br /&gt;
&lt;a href="http://docs.jquery.com/Selectors/odd"&gt;:odd&lt;/a&gt;, which will find all odd rows. Then we look for all the child elements of the row that are cells. This code&lt;br /&gt;
is fairly simple for anyone who has used jQuery previously, but the simplicity should make the code fairly readable to anyone.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; While using jQuery to apply alternating row colors is a simple solution, it is not degradable if a user has JavaScript disabled. I would&lt;br /&gt;
recommend applying the odd class on the server either in PHP code or the static HTML, though this is beyond the scope of this article.&lt;/p&gt;
&lt;h3&gt;Hover Effect&lt;/h3&gt;
&lt;p&gt;A really nice effect for users is to highlight the row they are currently hovering upon. This is a great way to single out specific data that they might be interested&lt;br /&gt;
in. This is dead simple to implement using jQuery, but first a little CSS.&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
...
td.hovered {
  background-color: lightblue;
  color: #666;
}
...
    &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This is all the CSS we need, basically when we hover over a row, we want to make all the cells in that row have a light blue background and a grey font color. The&lt;br /&gt;
jQuery to make this happen is just as simple.&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
...
$(&amp;#039;tbody tr&amp;#039;).hover(function(){
  $(this).find(&amp;#039;td&amp;#039;).addClass(&amp;#039;hovered&amp;#039;);
}, function(){
  $(this).find(&amp;#039;td&amp;#039;).removeClass(&amp;#039;hovered&amp;#039;);
});
...
    &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;We are making use of the &lt;a href="http://docs.jquery.com/Events/hover#overout"&gt;hover()&lt;/a&gt; function in the jQuery library. It takes two arguments that are&lt;br /&gt;
functions we want executed when the mouse hovers over and when the mouse moves off the element, respectively. When they hover over a row we want to find all&lt;br /&gt;
the cells within the row and add the hovered class to them. When the mouse leaves the element we want to then remove that class. This is all we have to do to&lt;br /&gt;
get the hover effect, go try it out!&lt;/p&gt;
&lt;div&gt;&lt;img alt="Hover" src="http://ooyes.net/userfiles/media/downloaded/using-jquery-to-manipulate-and-filter-data-2009062309522452-hover_png.png" /&gt;&lt;/div&gt;
&lt;h3&gt;Filtering Data&lt;/h3&gt;
&lt;p&gt;Now the meaty stuff - actually manipulating the data that is shown. If a website calls for many records of data to be displayed, in my example 1000 rows, then it&lt;br /&gt;
is more than appropriate to offer the user a way to sift through the data. One particularly effective way that has sprung up on the web in recent years as part of&lt;br /&gt;
the Web2.0/AJAX movement is filtering. This is also something that Apple pushes heavily in there applications such as iTunes. The goal for us is to allow the user&lt;br /&gt;
to type a search query into a standard text input and live filter the table rows below only showing the ones that contain matching text. This is arguably more&lt;br /&gt;
advanced then the alternating row styles, but in all reality requires minimal code, due to jQuery&amp;rsquo;s built-in functionality.&lt;/p&gt;
&lt;p&gt;First we will write a generic function that takes a selector and a string of text. This function will then search all elements matching that selector looking for&lt;br /&gt;
the string. If it finds the string, it will show the element and apply a class name of visible to the element, otherwise it hide the element. Why are we applying&lt;br /&gt;
the class of visible? Well once the items are sorted we will want to run the zebraRows function again, but we need to tell jQuery to ignore the hidden rows, and&lt;br /&gt;
the best way I have found to do that is apply a class of visible.&lt;/p&gt;
&lt;p&gt;The actual searching is done by the JavaScript function, aptly named, search(). Though due to the way the DOM works, if we don&amp;rsquo;t employ the jQuery function,&lt;br /&gt;
&lt;a href="http://docs.jquery.com/Attributes/text"&gt;text()&lt;/a&gt;, the box will also look at any HTML tags that happen to be in the table row, such as . We&lt;br /&gt;
will employ a little more functionality by not just searching for the exact string the user has typed, but rather if any of the words in the query are in a row.&lt;br /&gt;
This is ideal because it allows for &amp;ldquo;lazy searching&amp;rdquo;, the user isn&amp;rsquo;t required to remember an exact string but rather just parts of it. The search() function takes&lt;br /&gt;
a regular expression as its parameter, and so we must strip all white space from the beginning and end of our query and put &amp;ldquo;|&amp;rdquo; characters in between each word to&lt;br /&gt;
achieve the OR functionality we desire. Regular expressions are a very complicated topic, and so you will have to take my code at face value or I can refer you to&lt;br /&gt;
the &lt;a href="http://blog.themeforest.net/screencasts/regular-expressions-for-dummies/"&gt;Regular Expressions for Dummies&lt;/a&gt; &lt;strong&gt;video&lt;/strong&gt; series on the ThemeForest blog.&lt;/p&gt;
&lt;pre name="code"&gt;
//filter results based on query
function filter(selector, query) {
  query	=	$.trim(query); //trim white space
  query = query.replace(/ /gi, &amp;#039;|&amp;#039;); //add OR for regex query

  $(selector).each(function() {
    ($(this).text().search(new RegExp(query, &amp;quot;i&amp;quot;)) &amp;lt; 0) ? $(this).hide().removeClass(&amp;#039;visible&amp;#039;) : $(this).show().addClass(&amp;#039;visible&amp;#039;);
  });
}
    &lt;/pre&gt;
&lt;p&gt;The sixth line is where the magic happens, and probably requires a bit of explanation. Starting at line 5, we are telling the code to loop through all the elements&lt;br /&gt;
that match the selector, i.e. the rows, and then we want to execute the code on line 6 using each one. Line 6 is a bit complicated if you are new to programming,&lt;br /&gt;
but it is fairly easy to grasp if we split it up. Think of everything before the question mark as being a question, if the answer to that question is true then&lt;br /&gt;
execute the code to the left of the colon, but after the question mark. If the answer is false then execute the code after the colon. This is essentially an if&lt;br /&gt;
statement but in a more concise form known as a ternary operator, and would be no different than writing:&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
...
  if ($(this).text().search(new RegExp(query, &amp;quot;i&amp;quot;)) &amp;lt; 0) {
    $(this).hide().removeClass(&amp;#039;visible&amp;#039;)
  } else {
   $(this).show().addClass(&amp;#039;visible&amp;#039;);
  }
...
    &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The reason we ask if search() returns &amp;ldquo;&amp;lt; 0&amp;quot; is because it returns the position in the string where query is, and -1 if nothing is matched. Because -1 is always&lt;br /&gt;
less than zero, we test that condition. In theory there is nothing wrong with checking if it returns (==) -1, but it in practice it is safer to just assure it is&lt;br /&gt;
less than zero.&lt;/p&gt;
&lt;p&gt;Alright now that we have a complete filter function, let&amp;rsquo;s use jQuery events to hook it up to the input. To achieve the live effect we desire the event we want to&lt;br /&gt;
watch for is when user releases a key while they are focused on the text box, known as keyup in JavaScript. It is important that we set the ID attribute of the&lt;br /&gt;
input so we can target it using jQuery. Back in our ready function we need to add code after our call to zebraRows().&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
      &lt;label for="filter"&gt;Filter&lt;/label&gt;
      &lt;input type="text" id="filter" value="" name="filter" /&gt;
    &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;And the jQuery code:&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
...
  //default each row to visible
  $(&amp;#039;tbody tr&amp;#039;).addClass(&amp;#039;visible&amp;#039;);

  $(&amp;#039;#filter&amp;#039;).keyup(function(event) {
    //if esc is pressed or nothing is entered
    if (event.keyCode == 27 || $(this).val() == &amp;#039;&amp;#039;) {
      //if esc is pressed we want to clear the value of search box
      $(this).val(&amp;#039;&amp;#039;);

      //we want each row to be visible because if nothing
      //is entered then all rows are matched.
      $(&amp;#039;tbody tr&amp;#039;).removeClass(&amp;#039;visible&amp;#039;).show().addClass(&amp;#039;visible&amp;#039;);
    }

    //if there is text, lets filter
    else {
      filter(&amp;#039;tbody tr&amp;#039;, $(this).val());
    }

    //reapply zebra rows
    $(&amp;#039;.visible td&amp;#039;).removeClass(&amp;#039;odd&amp;#039;);
    zebraRows(&amp;#039;.visible:odd td&amp;#039;, &amp;#039;odd&amp;#039;);
...
    &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This code is by far the most complex we have seen thus far so we will step through it line by line.&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Starting at the addClass(&amp;rsquo;visible&amp;rsquo;) line we are adding a class&lt;br /&gt;
    of visible to each row, because by default they are all visible.&lt;/li&gt;
    &lt;li&gt;The next line is your standard selector, which in my case is targeting my filter text box and says&lt;br /&gt;
    each time a key is released to execute the following function. Notice that we pass in a parameter called event which has various information about what the user&lt;br /&gt;
    just did, like the key they pressed.&lt;/li&gt;
    &lt;li&gt;Consequently, the next line of code uses that event parameter, we have an if statement that is checking if the user pressed&lt;br /&gt;
    the esc key. It is important to note that each key is mapped to a number and that is how our code can determine which key the user pressed. This is a nice feature&lt;br /&gt;
    so that users can easily cancel the filter and see all the data again. Many applications with filter boxes utilize this sort&lt;br /&gt;
    of feature, and we want to be sure our application stays inline with what is expected.&lt;/li&gt;
    &lt;li&gt;In this same if statement we are also taking care of the special case when&lt;br /&gt;
    the value of the filter box is empty (they just hit backspace to remove all characters). In this case we want the user to see all the rows which seems obvious, but&lt;br /&gt;
    we have to explicitly provide for this because&lt;br /&gt;
    the filter function we wrote earlier would look for a row that has no contents and we will hide all the rows that have any content, the exact opposite of what we&lt;br /&gt;
    want!&lt;/li&gt;
    &lt;li&gt;If either of these conditions are met we want to set the value of the filter box to blank if they pressed esc, it is also executed if the value is blank&lt;br /&gt;
    which doesn&amp;rsquo;t really matter to us.&lt;/li&gt;
    &lt;li&gt;Next we show all the rows as we wanted to and add a class of visible to all of them. Again we are using the safe practice of&lt;br /&gt;
    first removing any lingering visible class declarations to avoid double setting it. If the value of the filter box is neither empty and the user didn&amp;rsquo;t press&lt;br /&gt;
    escape we want to actually filter the rows.&lt;/li&gt;
    &lt;li&gt;So after the else statement we call our filter function from earlier providing the rows in our table body to query&lt;br /&gt;
    against.&lt;/li&gt;
    &lt;li&gt;Finally after we have hidden and shown the appropriate rows, we want to reapply zebraRows to the remaining visible rows. First we remove any lingering&lt;br /&gt;
    odd class declarations to take care of the cases where a row was odd and becomes even. The call to zebraRows is the exact same as the first one on page load,&lt;br /&gt;
    except we only care about the ones that are currently visible and odd.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;img height="276" width="946" alt="Filter" src="http://ooyes.net/userfiles/media/downloaded/using-jquery-to-manipulate-and-filter-data-2009062309522452-filter_png.png" /&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: A good note might be to use CSS to hide the filter box, and right above the keyup call to show it, so users with JavaScript disabled are not&lt;br /&gt;
confused when they attempt to sort the data, this would look like:&lt;/p&gt;
&lt;div&gt;style.css
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre name="code"&gt;
...
#filter { display: none; }
...
    &lt;/pre&gt;
&lt;p&gt;application.js&lt;/p&gt;
&lt;pre name="code"&gt;
...
$(&amp;#039;#filter&amp;#039;).show();
...
    &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Wow that was a lot of code, feel free to take a tea/coffee break before we move on to sorting&amp;hellip;&lt;/p&gt;
&lt;h3&gt;Column Sorting&lt;/h3&gt;
&lt;p&gt;Alright all ready? Good, lets go!&lt;/p&gt;
&lt;p&gt;As the final task, we are going to allow sorting the table by any of the column headers. This is very standard practice that users anticipate known as click to sort.&lt;br /&gt;
When the user clicks one of the headers we want to sort the table ascending and if they click again we want to sort descending by that column. This code is quite&lt;br /&gt;
advanced and not for the faint at heart. The initial concept came from&lt;br /&gt;
&lt;a href="http://www.amazon.com/Learning-jQuery-1-3-Jonathan-Chaffer/dp/1847196705/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1244411576&amp;amp;sr=8-1"&gt;Learning jQuery 1.3&lt;/a&gt;. I&lt;br /&gt;
have re-engineered it to better fit our needs of simplicity though, however if you desire more fine grain control I will refer you to chapter 7 of the book where&lt;br /&gt;
tables and jQuery are discussed in great detail.&lt;/p&gt;
&lt;p&gt;Before we really dive into the actual code it is important that we discuss the concept of how we plan to tackle this problem. We will use JavaScript&amp;rsquo;s internal&lt;br /&gt;
&lt;a href="http://www.google.com/search?client=safari&amp;amp;rls=en-us&amp;amp;q=javascript+sort&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8"&gt;sort()&lt;/a&gt; method that is designed to take an array and sort it&lt;br /&gt;
using a custom function supplied by the code. In our case we simply want to sort alphabetically and numerically, so we will just compare the two items it supplies&lt;br /&gt;
and return which order the two should go in based on that design. Because we want to sort both ascending and descending, we will use a CSS class declaration to see&lt;br /&gt;
what the current state of the sort by that column is and reverse it if necessary. Once we have our array in order we will use the order to re-insert the rows&lt;br /&gt;
into the table one-by-one. This sounds like a lot, but because of how blazing fast JavaScript is, it will be very seamless to the user. All of&lt;br /&gt;
this will be tied to the click event of the column headers in the table.&lt;/p&gt;
&lt;p&gt;As per usual, let&amp;rsquo;s get the CSS code out of the way, as it is the most straightforward.&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
th.sortable {
	color: #666;
	cursor: pointer;
	text-decoration: underline;
}
th.sortable:hover { color: black; }
th.sorted-asc, th.sorted-desc  { color: black; }
  &lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;All of our sortable headers will have a class of sortable, and the hover modifier in CSS makes it emulate a hyperlink for users. We also are taking advantage of&lt;br /&gt;
the CSS class we mentioned about sorted-asc and sorted-desc so that we can show the user the current column that is sorting the table. I didn&amp;rsquo;t include it but&lt;br /&gt;
this would be a good place to put background images of arrows pointing up and down as a further visual cue to the user. Now we move on the JavaScript code and the&lt;br /&gt;
complexity of sorting, thankfully made easier with jQuery. The code below belongs in the ready() function we started way back at the beginning. Placing this right&lt;br /&gt;
above the end of the function is best.&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
//grab all header rows
$(&amp;#039;thead th&amp;#039;).each(function(column) {
  $(this).addClass(&amp;#039;sortable&amp;#039;).click(function(){
    var findSortKey = function($cell) {
      return $cell.find(&amp;#039;.sort-key&amp;#039;).text().toUpperCase() + &amp;#039; &amp;#039; + $cell.text().toUpperCase();
    };
    var sortDirection = $(this).is(&amp;#039;.sorted-asc&amp;#039;) ? -1 : 1;

    //step back up the tree and get the rows with data
    //for sorting
    var $rows = $(this).parent().parent().parent().find(&amp;#039;tbody tr&amp;#039;).get();

    //loop through all the rows and find
    $.each($rows, function(index, row) {
      row.sortKey = findSortKey($(row).children(&amp;#039;td&amp;#039;).eq(column));
    });

    //compare and sort the rows alphabetically
    $rows.sort(function(a, b) {
    	if (a.sortKey &amp;lt; b.sortKey) return -sortDirection;
    	if (a.sortKey &amp;gt; b.sortKey) return sortDirection;
    	return 0;
    });

    //add the rows in the correct order to the bottom of the table
    $.each($rows, function(index, row) {
    	$(&amp;#039;tbody&amp;#039;).append(row);
    	row.sortKey = null;
    });

    //identify the column sort order
    $(&amp;#039;th&amp;#039;).removeClass(&amp;#039;sorted-asc sorted-desc&amp;#039;);
    var $sortHead = $(&amp;#039;th&amp;#039;).filter(&amp;#039;:nth-child(&amp;#039; + (column + 1) + &amp;#039;)&amp;#039;);
    sortDirection == 1 ? $sortHead.addClass(&amp;#039;sorted-asc&amp;#039;) : $sortHead.addClass(&amp;#039;sorted-desc&amp;#039;);

    //identify the column to be sorted by
    $(&amp;#039;td&amp;#039;).removeClass(&amp;#039;sorted&amp;#039;)
    			.filter(&amp;#039;:nth-child(&amp;#039; + (column + 1) + &amp;#039;)&amp;#039;)
    			.addClass(&amp;#039;sorted&amp;#039;);

    $(&amp;#039;.visible td&amp;#039;).removeClass(&amp;#039;odd&amp;#039;);
    zebraRows(&amp;#039;.visible:even td&amp;#039;, &amp;#039;odd&amp;#039;);
  });
});
  &lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Woo, that is a lot of code. Let&amp;rsquo;s break that down into sizable bits. The first bit of code is grabbing all the headers and looping through them. The first thing&lt;br /&gt;
it does is add a class of of sortable, and starts to the click bind.&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
...
//grab all header rows
$(&amp;#039;thead th&amp;#039;).each(function(column) {
  $(this).addClass(&amp;#039;sortable&amp;#039;).click(function(){
...
  &lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Note that this can easily be changed to allow only certain columns to be sortable by removing the addClass() call and changing the selector from &amp;lsquo;thead th&amp;rsquo; to&lt;br /&gt;
something like &amp;lsquo;thead th.sortable&amp;rsquo;. Of course this requires you to manually specify which of your columns are sortable by adding class=&amp;rdquo;sortable&amp;rdquo; to the&lt;br /&gt;
appropriate headers in the HTML code.&lt;/p&gt;
&lt;p&gt;The next bit of code is a function declaration tied to a variable. This might seem a bit weird to those unfamiliar to programming, but it is common practice. This&lt;br /&gt;
allows us to easily reference the function specifically in the context of the header we are working on. That explanation probably is a bit confusing, but the&lt;br /&gt;
precise reasoning kind of oversteps the scope of this article. The point of the findSortKey function is determine which column we are sorting by, we can do this&lt;br /&gt;
because we know the element they clicked on is the same index in the table for all the columns we will compare. For instance if they click the third header we&lt;br /&gt;
want to look at the third column of each row to compare what order to place the rows. After we declare this function we then determine the sort order, ascending&lt;br /&gt;
or descending. This is done by looking for the class name of &amp;rsquo;sorted-asc&amp;rsquo; in the table header if it is there we know that it is currently sorted as ascending and&lt;br /&gt;
we need to make descending, otherwise use the default of ascending. This takes care of the case where it is descending and we need to make it ascending again.&lt;br /&gt;
This bit of code returns 1 or -1, we will explain why later.&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
...
var findSortKey = function($cell) {
  return $cell.find(&amp;#039;.sort-key&amp;#039;).text().toUpperCase() + &amp;#039; &amp;#039; + $cell.text().toUpperCase();
};
var sortDirection = $(this).is(&amp;#039;.sorted-asc&amp;#039;) ? -1 : 1;
...
  &lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Now we want to get that specific column from each row and put it in an array, this is done using the jQuery method of&lt;br /&gt;
&lt;a href="http://docs.jquery.com/Core/get"&gt;get()&lt;/a&gt; which takes the rows and puts them in an array which the sort() function can understand. Because the current&lt;br /&gt;
selector was the table head we have to step back up the DOM tree 3 places to find table&amp;gt;tbody&amp;gt;tr&amp;gt;td. Seems a little complex, but in reality it is simple. After&lt;br /&gt;
that we loop through each of the rows we just found and find the column we want to using in sorting. This is done by checking if its index (the number of places&lt;br /&gt;
starting at 0 from the first column in the table) is equal to the index of the clicked header. This is then passed into the findSortKey function so we can&lt;br /&gt;
then set a custom attribute called sortKey that contains the column header we are sorting by and the text of the current column we are looking both of which are&lt;br /&gt;
set to uppercase so the sort is case-insensitive. This is a way we streamline the sorting so that we make it more responsive for large amounts of data.&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
...
    //for sorting
    var $rows = $(this).parent().parent().parent().find(&amp;#039;tbody tr&amp;#039;).get();

    //loop through all the rows and find
    $.each($rows, function(index, row) {
      row.sortKey = findSortKey($(row).children(&amp;#039;td&amp;#039;).eq(column));
    });
...
  &lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Next comes the actual sort() function that I have been going on about. This is called on the array of rows we created using get(). The only parameter we pass is the&lt;br /&gt;
function we want to determine the sorting. That function receives two attributes to compare and returns 1 if the first is greater, -1 if the second is great, and 0&lt;br /&gt;
if they are equal. This is where the sortDirection variable comes into play because the way it works is that we set 1 or -1 to it and then multiply either the&lt;br /&gt;
1 or -1 the function should return by sortDirection, achieving the ascending/descending affect we desire.&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
...
//compare and sort the rows alphabetically
$rows.sort(function(a, b) {
	if (a.sortKey &amp;lt; b.sortKey) return -sortDirection;
	if (a.sortKey &amp;gt; b.sortKey) return sortDirection;
	return 0;
});
...
  &lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;The next bit of code simply adds each row from the now sorted array back into the DOM structure. This is done with the append function which is nice because it&lt;br /&gt;
does not copy the row and place it at the end it actually removes it from the current place in the DOM and places where we tell it, in this case at the end of the&lt;br /&gt;
table. After it has done this for each element in the array it will have moved each row to its new place. Also to do a bit of cleanup we remove the sortKey&lt;br /&gt;
attribute we set earlier.&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
...
//add the rows in the correct order to the bottom of the table
$.each($rows, function(index, row) {
	$(&amp;#039;tbody&amp;#039;).append(row);
	row.sortKey = null;
});
...
  &lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;We are now moving in to the cleanup stage of our function since all the heavy lifting has been done. Next we grab all the cells in the table body, remove any&lt;br /&gt;
lingering sorted attributes in the class declarations, and then filter out all but the columns that are the same index as our sorted header and apply the &amp;rsquo;sorted&amp;rsquo;&lt;br /&gt;
class to them. This is nice for CSS targeting if for instance we wanted to make the column we sort by a different color we could declare this CSS:&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
...
.sorted { background-color: green; }
...
  &lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;The final thing we do is remove any &amp;lsquo;odd&amp;rsquo; CSS declarations and reapply the Zebra Rows just like we did in the filter part.&lt;/p&gt;
&lt;div&gt;
&lt;pre name="code"&gt;
...
$(&amp;#039;.visible td&amp;#039;).removeClass(&amp;#039;odd&amp;#039;);
zebraRows(&amp;#039;.visible:even td&amp;#039;, &amp;#039;odd&amp;#039;);
...
  &lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;That is how we do very simple sorting. It is important to note that this will only sort items alphabetically or numerically and does not work with dates or currency&lt;br /&gt;
for instance. That requires more specialized handling that is beyond our goals of simple table manipulation.&lt;/p&gt;
&lt;div&gt;&lt;img height="339" width="704" alt="Sorting" src="http://ooyes.net/userfiles/media/downloaded/using-jquery-to-manipulate-and-filter-data-2009062309522452-sorting_png.png" /&gt;&lt;/div&gt;
&lt;h3&gt;Wrap Up&lt;/h3&gt;
&lt;p&gt;In this article, we learned how to roll our own table manipulation code using jQuery. This is&lt;br /&gt;
very convenient for both the user and us. The user gets the expected controls for sorting and filtering the data and we have code that is both small and easy to&lt;br /&gt;
understand. Because we wrote this ourselves, we can now extend it in our own ways. Our method is great for simple manipulation, but if you require the kitchen sink, I recommend taking a look at the&lt;br /&gt;
&lt;a href="http://www.datatables.net/"&gt;Data Tables&lt;/a&gt; plugin for jQuery. I&amp;rsquo;d love to answer any questions in the comments or on Twitter&lt;br /&gt;
(&lt;a href="http://twitter.com/noahhendrix"&gt;@noahendrix&lt;/a&gt;). Thanks for reading!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W9uR5S8cHvQe4l7QX1vSn80pBXM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W9uR5S8cHvQe4l7QX1vSn80pBXM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/W9uR5S8cHvQe4l7QX1vSn80pBXM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W9uR5S8cHvQe4l7QX1vSn80pBXM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=eWPqHAU47WQ:17aYE3qRuFM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=eWPqHAU47WQ:17aYE3qRuFM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=eWPqHAU47WQ:17aYE3qRuFM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=eWPqHAU47WQ:17aYE3qRuFM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=eWPqHAU47WQ:17aYE3qRuFM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/eWPqHAU47WQ" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 20 Jul 2009 07:28:18 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/using-jquery-to-manipulate-and-filter-data</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/17aYE3qRuFM/using-jquery-to-manipulate-and-filter-data</feedburner:origLink></item>

        
        
        <item>

          <title>10 Steps to Advanced Keyword Research</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/tDIhaDOxRb0/10-steps-to-advanced-keyword-research</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/10-steps-to-advanced-keyword-research]]></guid>
		 


          <description>&lt;p&gt;Posted by &lt;a href="http://www.seomoz.org/users/view/63"&gt;randfish&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Some keyword research is surface-level, fire and forget type stuff. If you just need to see relative volume levels, then a basic keyword research tool is all you need. If, however, you want to really dive deep and get the full skinny on your keywords, I&amp;#039;d recommend having each of these data points.&lt;/p&gt;
&lt;h2&gt;#1 - Relative Search Volume from 3 Sources&lt;/h2&gt;
&lt;p&gt;There are three sources on the web that I&amp;#039;ve found to work best for comparative numbers research. These are:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;a href="https://adwords.google.com/select/KeywordToolExternal"&gt;Google Adwords: Keyword Tool&lt;/a&gt; - enter any term or phrase and get back data about both the average search volume and the volume from the previous month. &lt;/li&gt;
    &lt;li&gt;&lt;a href="https://adcenter.microsoft.com/research/KeywordResearch.aspx"&gt;MSN AdCenter: Research Keywords Tool&lt;/a&gt; - you need to be logged in to use this, but the data is solid and shows actual counts. &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://freekeywords.wordtracker.com/"&gt;Wordtracker: Keyword Tool&lt;/a&gt; - although the numbers Wordtracker shows are frequently less accurate than the two above, they are reasonably decent for estimating comparative search volume. Unfortunately, due to the declining share of Wordtracker&amp;#039;s data sources (the Infospace owned search engines - Metacrawler, Dogpile, DoGreatGood, etc.), niche and long tail term volume estimates can be way off. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here&amp;#039;s why I don&amp;#039;t use Yahoo!:&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="Yahoo!&amp;#039;s Keyword Volume Estimates" width="533" height="193" src="http://ooyes.net/userfiles/media/downloaded/10-steps-to-advanced-keyword-research-2009072006073075-yahoo-keyword-estimates_gif.gif" /&gt;&lt;/p&gt;
&lt;p&gt;From there, rather than build a spreadsheet just showing raw numbers, I like to work in comparative sizes (the real numbers rarely prove accurate anyway). Thus, rather than having a graph of data like this:&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="Keyword Search Query Volume" width="541" height="336" src="http://ooyes.net/userfiles/media/downloaded/10-steps-to-advanced-keyword-research-2009072006073075-kw-query-volume_gif.gif" /&gt;&lt;/p&gt;
&lt;p align="left"&gt;I can have one like this:&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="Relative Keyword Demand" width="455" height="317" src="http://ooyes.net/userfiles/media/downloaded/10-steps-to-advanced-keyword-research-2009072006073075-relative-kw-volume_gif.gif" /&gt;&lt;/p&gt;
&lt;p&gt;Note how, in this view, I&amp;#039;m showing the relative volume percentage of the demand for keyword &amp;quot;SEO&amp;quot; made up by &amp;quot;seo services&amp;quot; and &amp;quot;seo tools.&amp;quot; This graph tells me that while Google thinks &amp;quot;seo tools&amp;quot; and &amp;quot;seo services&amp;quot; are tiny fractions of the volume that comes in for the broad term, &amp;quot;SEO,&amp;quot; Microsoft &amp;amp;&amp;nbsp;Wordtracker both&amp;nbsp;say these phrases make up a more substantive percentage.&amp;nbsp;Since keyword targeting is really about choosing one keyword over another and much less about trying to estimate exact traffic, the latter system makes much more sense to me.&lt;/p&gt;
&lt;h2&gt;#2 - Temporal Fluctuations&lt;/h2&gt;
&lt;p&gt;When are your queries in highest demand? Knowing the answer can help you predict when competition may ramp up and additional SEO efforts are needed as well as provide insight into your market overall (if demand has been dropping steadily over the last few years, you might want to target some different terms, or even shift product focus). Two sources of data are solid on this front:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.google.com/trends"&gt;Google Trends for Keywords&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="Google Trends" width="550" height="353" src="http://ooyes.net/userfiles/media/downloaded/10-steps-to-advanced-keyword-research-2009072006073075-google-trends-kw_gif.gif" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://adlab.microsoft.com/Keyword-Forecast/"&gt;MSN AdCenter Labs: Keyword Forecast Tool&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="MSN AdCenter Labs" width="590" height="301" src="http://ooyes.net/userfiles/media/downloaded/10-steps-to-advanced-keyword-research-2009072006073075-adcenter-labs-temporal_gif.gif" /&gt;&lt;/p&gt;
&lt;h2&gt;#3 - Top Ranking Domains&lt;/h2&gt;
&lt;p&gt;In order to get a full understanding of the competitive landscape, it&amp;#039;s essential to know who&amp;#039;s ranking for the terms you&amp;#039;re targeting. A basic query is a great start, but I like to append those with a bit of extra data, as I&amp;#039;ve visualized below:&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="SEO Services SERPs with Data Overlay" width="600" height="407" src="http://ooyes.net/userfiles/media/downloaded/10-steps-to-advanced-keyword-research-2009072006073075-seo-services-serps_gif.gif" /&gt;&lt;/p&gt;
&lt;p&gt;Those three are my favorite pieces of link data to append, not because they alone are predictive of rankings, but because the range so perfectly illustrates what&amp;#039;s necessary, on both the URL and domain level to be competitive. Nick&amp;#039;s been pushing hard to get this functionality automatically included with the &lt;a href="http://www.seomoz.org/mozbar"&gt;SEOmoz Toolbar&lt;/a&gt;, so hopefully we can make that happen in the next few months.&lt;/p&gt;
&lt;h2&gt;#4 -&amp;nbsp;Fresh Web (News, Blogosphere, Tweetosphere)&amp;nbsp;Activity&lt;/h2&gt;
&lt;p&gt;The fresh web&amp;nbsp;(aka social media sphere) can help to show how often keywords are appearing in content and conversation in blogs, forums, feeds and more. It&amp;#039;s particularly valuable for identifying emerging trends which may not yet have search volume (but will if the conversational content acceleration continues). There&amp;#039;s a few tools I like on this front:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.facebook.com/lexicon"&gt;Facebook Lexicon&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="Facebook Lexicon Screenshot" width="600" height="410" src="http://ooyes.net/userfiles/media/downloaded/10-steps-to-advanced-keyword-research-2009072006073075-facebook-lexicon_gif.gif" /&gt;&lt;br /&gt;
There appears to be some correlation between &amp;quot;party tonight&amp;quot; on Friday and &amp;quot;hangover&amp;quot; on Saturday&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twist.flaptor.com/"&gt;Twist: See Trends in Twitter&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="Twist: See Trends in Twitter Screenshot" width="600" height="290" src="http://ooyes.net/userfiles/media/downloaded/10-steps-to-advanced-keyword-research-2009072006073075-twist-twitter-trends-seo_gif.gif" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.seomoz.org/labs/blogscape"&gt;Blogscape&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="Blogscape Results for Walter Cronkite vs. Michael Jackson" width="600" height="365" src="http://ooyes.net/userfiles/media/downloaded/10-steps-to-advanced-keyword-research-2009072006073075-blogscape-cronkite-jackson_gif.gif" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://news.google.com/archivesearch"&gt;Google News Trends&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="Google News Archive Search" width="600" height="204" src="http://ooyes.net/userfiles/media/downloaded/10-steps-to-advanced-keyword-research-2009072006073075-gg-news-archive-search_gif.gif" /&gt;&lt;br /&gt;
I&amp;#039;d love to see some of those 19th century SEO tools!&lt;/p&gt;
&lt;p&gt;The real value (and reason for spending time in these sectors) is to:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;A) Identify patterns or trends indicating a keyword/product/concept is on the rise/fall &lt;/li&gt;
    &lt;li&gt;B) Find content that in the past has attracted large amounts of attention around these keywords (an excellent starting point for viral content development) &lt;/li&gt;
    &lt;li&gt;C) Locate portals on the web or in social communities where your topic may be hot, and opportunities for promotion or links exist &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They&amp;#039;re not universally valuable for every part of keyword research, and you shouldn&amp;#039;t trust the volumes to predict keyword demand (some things get written about more than they get searched), but a good SEO leaves no opportunity un-investigated.&lt;/p&gt;
&lt;h2&gt;#5 - Vertical Results (and Vertical Opportunities)&lt;/h2&gt;
&lt;p&gt;It&amp;#039;s wise to be aware of where and how your keywords can cross over into vertical search results. The best way to do this currently is, unfortunately, manually. You&amp;#039;ll want to:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Search for your target terms at the major search engines &lt;/li&gt;
    &lt;li&gt;Identify any vertical results that appears in the top 10-20 listings &lt;/li&gt;
    &lt;li&gt;Employ strategies to reach into the applicable verticals &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The most common and highest value are typically:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Local &lt;/li&gt;
    &lt;li&gt;Product &lt;/li&gt;
    &lt;li&gt;News &lt;/li&gt;
    &lt;li&gt;Images &lt;/li&gt;
    &lt;li&gt;Blog &lt;/li&gt;
    &lt;li&gt;Video &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;#6&amp;nbsp;- Searcher Intent&lt;/h2&gt;
&lt;p&gt;What are the goals of the individuals searching for your targeted keywords? What phase of the decision process are they in? Answering these questions can give you an excellent idea of the potential ROI from drawing in traffic on a given term/phrase. Many times the highest volume keywords are not bringing in the best traffic.&lt;/p&gt;
&lt;p&gt;Some good resources on this front include:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.seomoz.org/blog/segmenting-search-intent"&gt;Segmenting Searcher Intent&lt;/a&gt; - from SEOmoz &lt;/li&gt;
    &lt;li&gt;Two Part Series on Intent Targeting&amp;nbsp;- from Jon Mendez
    &lt;ul&gt;
        &lt;li&gt;A) &lt;a href="http://www.optimizeandprophesize.com/jonathan_mendezs_blog/2007/05/targeting_the_t.html"&gt;Targeting the Two Intentions of Users&lt;/a&gt; &lt;/li&gt;
        &lt;li&gt;B) &lt;a href="http://www.optimizeandprophesize.com/jonathan_mendezs_blog/2007/05/how_brand_produ.html"&gt;How Brand, Product &amp;amp; Community Influence Intention&lt;/a&gt; &lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://searchengineland.com/why-do-people-google-google-understanding-user-data-to-measure-searcher-intent-10091"&gt;Understanding User Data to Measure Searcher Intent&lt;/a&gt; - from SearchEngineLand &lt;/li&gt;
    &lt;li&gt;MSN AdCenter Labs also has&amp;nbsp;their &lt;a href="http://adlab.microsoft.com/Online-Commercial-Intention/"&gt;Online Commercial Intention&amp;nbsp;Tool&lt;/a&gt;&amp;nbsp;which predicts, based on activity, whether a keyword is commercial or informational in intent &lt;/li&gt;
&lt;/ul&gt;
&lt;p align="center"&gt;&lt;img alt="MSN AdCenter Labs&amp;#039; Commercial Intent Detection Tool" width="502" height="351" src="http://ooyes.net/userfiles/media/downloaded/10-steps-to-advanced-keyword-research-2009072006073075-commercial-intent-msn-adcen_gif.gif" /&gt;&lt;/p&gt;
&lt;p&gt;Your goal should be to narrow down the potential tasks a visitor who has just performed the query wants to accomplish. This can dramatically boost your site&amp;#039;s performance when coupled with delivery of those paths upon arrival.&lt;/p&gt;
&lt;h2&gt;#7 - Potential Relevance&lt;/h2&gt;
&lt;p&gt;The best way to determine the relevance between a keyword and the content/service/product you offer is to test. Run a PPC campaign or dig into your analytics and choose only those visitors that have come via the search query. Pull out data like browse rate, time spent on site, conversions, etc.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="Page Views / Visit for Keyword &amp;quot;SEO Blog&amp;quot;" width="585" height="212" src="http://ooyes.net/userfiles/media/downloaded/10-steps-to-advanced-keyword-research-2009072006073075-page-views-keyword-seo-blog_gif.gif" /&gt;&lt;br /&gt;
The majority of visits who come into SEOmoz for the keyword &amp;quot;SEO Blog&amp;quot; stick around to read at least a couple of pages&lt;/p&gt;
&lt;p&gt;Relevance is highly actionable data because it does such a good job predicting which keywords are going to bring valuable traffic. While branded terms often perform highly (and are typically easy to rank well on), longer tail and more specific queries also have this tendency to be more relevant (and, again, are easier to achieve).&lt;/p&gt;
&lt;h2&gt;#8 -&amp;nbsp;PPC Advertising Data&lt;/h2&gt;
&lt;p&gt;Even if you&amp;#039;re not planning on bidding for keywords through paid search campaigns, it&amp;#039;s wise to know what the competition is doing and how much value they&amp;#039;re getting from it (and what they&amp;#039;re willing to pay). A few good resources for this information include:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://adcenter.microsoft.com/Research/KeywordEvaluate.aspx"&gt;MSN AdCenter&amp;#039;s Keyword Estimate&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="AdCenter&amp;#039;s PPC Pricing Graph" width="505" height="335" src="http://ooyes.net/userfiles/media/downloaded/10-steps-to-advanced-keyword-research-2009072006073075-adcenter-ppc-pricing_gif.gif" /&gt;&lt;/p&gt;
&lt;p&gt;I really like what AdCenter does with this spiffy graph - showing the cost and estimated clicks in an easy-to-read graphic. Just remember that MSN is the engine with the fewest advertisers, which often means pricing is less aggressive than on Google or Yahoo!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://adwords.google.com/select/TrafficEstimatorSandbox"&gt;Google AdWords Traffic Estimator&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#039;m a bit less fond of Google&amp;#039;s standard take on the data, but their pricing is the gold standard, as AdWords has the highest number of advertisers and the most traffic by far.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="Google AdWords Traffic Estimator Tool Results" width="600" height="160" src="http://ooyes.net/userfiles/media/downloaded/10-steps-to-advanced-keyword-research-2009072006073075-adwords-estimator-tool-resu_gif.gif" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.semrush.com"&gt;SEMRush&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A solid tool with a lot of uses, particularly for competitive keyword analysis, SEMRush shows some decent numbers around the average CPC and competition levels for most keywords at the head of the demand curve.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="SEMRush Keyword Data" width="551" height="249" src="http://ooyes.net/userfiles/media/downloaded/10-steps-to-advanced-keyword-research-2009072006073075-semrush-ppc-data_gif.gif" /&gt;&lt;/p&gt;
&lt;p&gt;Take the cost-per-click data and competition levels into account when you&amp;#039;re considering things like relevance, potential conversion rates and visitor value. Most companies aren&amp;#039;t dumb - if they&amp;#039;re bidding high dollar values for potential visits, they&amp;#039;re converting those visits into dollars and that means you can both learn from them and find strategies to outperform.&lt;/p&gt;
&lt;h2&gt;#9 - Top Related Queries&lt;/h2&gt;
&lt;p&gt;Related queries is an easy metric to understand - you want to know what other terms searchers who used these keywords also employed. It&amp;#039;s a no-brainer to then add these to your list of potential keyword targets. Many good sources for this data exist:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Google shows related searches in both their &lt;a href="https://adwords.google.com/select/KeywordToolExternal"&gt;AdWords Tool&lt;/a&gt; and through web search (you&amp;#039;ll want to click the &amp;quot;show options&amp;quot; link at the top followed by the &amp;quot;related searches&amp;quot; link in the sidebar) &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://bing.com"&gt;Bing&lt;/a&gt;, Microsoft&amp;#039;s new engine, shows related searches by default in their web search interface &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://search.yahoo.com"&gt;Yahoo! Search&lt;/a&gt; has their &amp;quot;also try&amp;quot; list and clicking &amp;quot;more&amp;quot; will give you an interface just below the search box that finds lots of great, relevant keywords &lt;/li&gt;
    &lt;li&gt;The aforementioned &lt;a href="http://www.semrush.com"&gt;SEMRush&lt;/a&gt; shows great data on this (though you&amp;#039;ll need to sift through as there can be a lot of junk) if you&amp;#039;re a paying member &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://searchanalytics.compete.com"&gt;Compete.com&amp;#039;s Search Analytics&lt;/a&gt; has good information by query and website, though you&amp;#039;ll need to subscribe to their service to get the full value &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Get the related queries, dig into the data about them and target those that have enough volume and relevance to help you get increase valuable traffic from SEO.&lt;/p&gt;
&lt;h2&gt;#10 - Legal Issues&lt;/h2&gt;
&lt;p&gt;Last, and probably least in most cases, it&amp;#039;s wise to do some research into the legalities surrounding the keywords you&amp;#039;d like to target. Using trademarked terms and phrases on your site can cause attorney trouble, and no one likes that. The place to start, at least in the United States, is here - &lt;a href="http://tess2.uspto.gov/bin/gate.exe?f=searchss&amp;amp;state=4010:kcfpov.1.1"&gt;USPTO Trademark Electronic Search System&lt;/a&gt;.&lt;hr /&gt;
Whew... That&amp;#039;s a lot of work for keyword research - now you can see why some firms charge hundreds of dollars per hour for this type of deep dive. Put these recommendations to good use, though, and you&amp;#039;ll have an impressive set of terms to target - and that can be a serious competitive advantage.&lt;/p&gt;
&lt;p&gt;I&amp;#039;ve undoubtedly left out a few metrics and, as always,&amp;nbsp;appreciate any ideas or suggestions you&amp;#039;ve got on this topic.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Do you like this post? &lt;a href="http://www.seomoz.org/thumbs/add/blog/7054/1/0"&gt;Yes&lt;/a&gt; &lt;a href="http://www.seomoz.org/thumbs/add/blog/7054/0/0"&gt;No&lt;/a&gt; &lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/seomoz?a=D4cBWGWtFL8:-O1kb4uYLSg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/seomoz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/seomoz?a=D4cBWGWtFL8:-O1kb4uYLSg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/seomoz?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/seomoz?a=D4cBWGWtFL8:-O1kb4uYLSg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/seomoz?i=D4cBWGWtFL8:-O1kb4uYLSg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/seomoz?a=D4cBWGWtFL8:-O1kb4uYLSg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/seomoz?i=D4cBWGWtFL8:-O1kb4uYLSg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/seomoz/~4/D4cBWGWtFL8" height="1" width="1" /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AFF7ZpvwX9JOc9JRzSr3-G9Dsr0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AFF7ZpvwX9JOc9JRzSr3-G9Dsr0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AFF7ZpvwX9JOc9JRzSr3-G9Dsr0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AFF7ZpvwX9JOc9JRzSr3-G9Dsr0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=tDIhaDOxRb0:GUG8inYWV5E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=tDIhaDOxRb0:GUG8inYWV5E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=tDIhaDOxRb0:GUG8inYWV5E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=tDIhaDOxRb0:GUG8inYWV5E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=tDIhaDOxRb0:GUG8inYWV5E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/tDIhaDOxRb0" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 20 Jul 2009 06:07:35 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/10-steps-to-advanced-keyword-research</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/GUG8inYWV5E/10-steps-to-advanced-keyword-research</feedburner:origLink></item>

        
        
        <item>

          <title>Wallpaper of the Week #58 - Lustix</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/6Nz5W1JWYBo/wallpaper-of-the-week-58-lustix</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/wallpaper-of-the-week-58-lustix]]></guid>
		 


          <description>&lt;h3&gt;The wallpaper of this week is from a motion design and illustrator Gabriel Pulecio, also known as &lt;a href="http://www.lustix.com/" rel="nofollow"&gt;Lustix&lt;/a&gt;. With a very impressive portfolio Gabriel has done some works for Adobe, Mercedez Benz, Fuse and others.&lt;/h3&gt;
&lt;p&gt;For more information visit Lustix&amp;#039;s website at &lt;a href="http://www.lustix.com/" title="http://www.lustix.com/" rel="nofollow"&gt;http://www.lustix.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/wallpaper-of-the-week-58-lustix-2009071912001831-wp_600_jpg.jpg" alt="Abduzeedo&amp;#039;s wallpaper of the week by lustix" /&gt;&lt;br/&gt;&lt;cite&gt;Desktop Version&lt;/cite&gt;&lt;/br/&gt;&lt;/p&gt;
&lt;p&gt; &lt;a href="http://www.abductit.com/files/wallpapers/wpw58/wp_iPhone.jpg" target="_blank" rel="nofollow"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/wallpaper-of-the-week-58-lustix-2009071912001831-wp_iPhone2_jpg.jpg"alt="Abduzeedo&amp;#039;s iPhone wallpaper of the week by lustix" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;cite&gt;iPhone Version&lt;/cite&gt;&lt;/br/&gt;&lt;/p&gt;
&lt;h3&gt;Resolutions:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.abductit.com/files/wallpapers/wpw58/wp_1920.jpg" rel="nofollow"&gt;1920x1200px&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.abductit.com/files/wallpapers/wpw58/wp_1680.jpg" rel="nofollow"&gt;1680x1050px&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.abductit.com/files/wallpapers/wpw58/wp_1440.jpg" rel="nofollow"&gt;1440x900px&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.abductit.com/files/wallpapers/wpw58/wp_1280R.jpg" rel="nofollow"&gt;1280x1024px&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.abductit.com/files/wallpapers/wpw58/wp_1280.jpg" rel="nofollow"&gt;1280x800px&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.abductit.com/files/wallpapers/wpw58/wp_1024.jpg" rel="nofollow"&gt;1024x768px&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.abductit.com/files/wallpapers/wpw58/wp_iPhone.jpg" rel="nofollow"&gt;iPhone&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/ul&gt;&lt;div&gt;&lt;h2&gt;About the author&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/wallpaper-of-the-week-58-lustix-2009071912001831-picture-1_jpg.jpg" alt="User picture" /&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;My name is Fabio Sasso, I&amp;#039;m a graphic/web designer from Porto Alegre, Brazil and I&amp;#039;m the founder of Abduzeedo. I hope we can share lots of information, tips, and ideas through Abduzeedo. Also you can follow me on &lt;a href="http://twitter.com/abduzeedo" rel="nofollow"&gt;Twitter&lt;/a&gt; or my personal site at &lt;a href="http://fabiosasso.com" rel="nofollow"&gt;http://fabiosasso.com&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4&gt;Sponsored Links:&lt;/h4&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;
&lt;div&gt;&lt;a href="http://abdutees.bigcartel.com/product/goddess-of-abduction"&gt;&lt;img src="hhttp://abductit.com/files/articles/abductees/banner.jpg" alt="Buy Abduzeedo T-shirts" title="Abduzeedo T-shirts Banner" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br/&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ueBQjQ68aY-u-dg6iBYnoslWJR0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ueBQjQ68aY-u-dg6iBYnoslWJR0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ueBQjQ68aY-u-dg6iBYnoslWJR0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ueBQjQ68aY-u-dg6iBYnoslWJR0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=6Nz5W1JWYBo:ZKUI1RkosSs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=6Nz5W1JWYBo:ZKUI1RkosSs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=6Nz5W1JWYBo:ZKUI1RkosSs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=6Nz5W1JWYBo:ZKUI1RkosSs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=6Nz5W1JWYBo:ZKUI1RkosSs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/6Nz5W1JWYBo" height="1" width="1"/&gt;</description>
      <pubDate>Sun, 19 Jul 2009 12:00:21 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/wallpaper-of-the-week-58-lustix</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/ZKUI1RkosSs/wallpaper-of-the-week-58-lustix</feedburner:origLink></item>

        
        
        <item>

          <title>20 Stunning Illustrations of Surreal Female Characters</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/gwAweBALgnM/20-stunning-illustrations-of-surreal-female-characters</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/20-stunning-illustrations-of-surreal-female-characters]]></guid>
		 


          <description>&lt;p&gt;Artists and illustrators often display their artwork in the  hopes of not only showing their abilities and skills, but also to inspire  creativity amongst its viewers.&lt;/p&gt;
&lt;p&gt;In this showcase, you will witness a wide range of creative  styles, &lt;strong&gt;featuring female characters as  the subject&lt;/strong&gt;, by some of the world&amp;#8217;s most talented illustrators, artists,  and designers.&lt;/p&gt;
&lt;h3&gt;1. &lt;a href="http://sztyh.cgsociety.org/gallery/759370/"&gt;Sadness&lt;/a&gt; by &lt;a href="http://sztyh.cgsociety.org"&gt;Tang Yuehui&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-22_sadness_by_sztyh_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-02_sadness_by_sztyh_jpg.jpg" width="550" height="550" alt="Sadness by Tang Yuehui" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;2. &lt;a href="http://reiv.cgsociety.org/gallery/272877/"&gt;Pink  Sugar&lt;/a&gt; by &lt;a href="http://reiv.fr.st"&gt;Olivier Ponsonnet&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-24_pink_sugar_by_olivier_ponsonnet_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-04_pink_sugar_by_olivier_ponsonnet_jpg.jpg" width="550" height="550" alt="Pink Sugar by Olivier Ponsonnet" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;3. &lt;a href="http://www.brushsize.com/index.php?pg=view_image.php&amp;amp;img=10"&gt;Boudicca  3060 A.D.&lt;/a&gt; by &lt;a href="http://www.brushsize.com"&gt;John Kearney&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-25_boudicca_3060_ad_by_john_kearney_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-05_boudicca_3060_ad_by_john_kearney_jpg.jpg" width="550" height="550" alt="Boudicca 3060 A.D. by John Kearney" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;4. &lt;a href="http://nwiz25.cgsociety.org/gallery/760188/"&gt;sweet  as candy&lt;/a&gt; by &lt;a href="http://nwiz25.cgsociety.org"&gt;Neville Dsouza&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-27_sweet_as_candy_by_neville_dsouza_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-07_sweet_as_candy_by_neville_dsouza_jpg.jpg" width="550" height="550" alt="sweet as candy by Neville Dsouza" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;5. &lt;a href="http://evniki.cgsociety.org/gallery/703955/"&gt;Floating&lt;/a&gt; by &lt;a href="http://evniki.cgsociety.org"&gt;Sue Marino&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-29_floating_by_evniki_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-09_floating_by_evniki_jpg.jpg" width="550" height="550" alt="Floating by Sue Marino" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;6. &lt;a href="http://michelvictor.cgsociety.org/gallery/749461/"&gt;Anna  Marie&lt;/a&gt; by &lt;a href="http://michelvictor.cgsociety.org"&gt;Michel Victor Oliveira&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-39_anne_marie_by_michelvictor_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-19_anne_marie_by_michelvictor_jpg.jpg" width="550" height="550" alt="Anna Marie by Michel Victor Oliveira" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;7. &lt;a href="http://natsuki-3.deviantart.com/art/The-magic-light-80397224"&gt;The magic  light&lt;/a&gt; by &lt;a href="http://natsuki-3.deviantart.com"&gt;Natsuki-3&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-36_character_by_ark-vfx_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-14_The_magic_light_by_natsuki-3_jpg.jpg" width="550" height="550" alt="The magic light by Natsuki-3" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;8. Cookies (part of the &lt;a href="http://www.antoine-helbert.com/58893-article-105812~Painting-Style-I-idsess44e63066d181273212331363557c8c54"&gt;Painting  I&lt;/a&gt; collection) by &lt;a href="http://www.antoine-helbert.com/anim.php"&gt;Antoine  Helbert&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-21_cookies_by_antoine_helbert_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-01_cookies_by_antoine_helbert_jpg.jpg" width="550" height="550" alt="Cookies (part of the Painting I collection) by Antoine Helbert" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;9. &lt;a href="http://ark-vfx.cgsociety.org/gallery/184010/"&gt;Character&lt;/a&gt; by &lt;a href="http://ark-vfx.cgsociety.org"&gt;Richard Wright&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-38_tomb_raider_by_miketartworks_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-16_character_by_ark-vfx_jpg.jpg" width="550" height="550" alt="Character by Richard Wright" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;10. &lt;a href="http://sztyh.cgsociety.org/gallery/710623/"&gt;Beautiful  lilac&lt;/a&gt; by &lt;a href="http://sztyh.cgsociety.org"&gt;Tang Yuehui&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-23_beautiful_liliac_by_sztyh_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-03_beautiful_liliac_by_sztyh_jpg.jpg" width="550" height="550" alt="Beautiful lilac by Tang Yuehui" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;11. &lt;a href="http://estele.deviantart.com/art/Strange-autumn-77490947"&gt;Strange Autumn&lt;/a&gt; by &lt;a href="http://estele.deviantart.com"&gt;Maria Alaeva&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-30_strange_autumn_by_estele_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-10_strange_autumn_by_estele_jpg.jpg" width="550" height="550" alt="Strange Autumn by Maria Alaeva" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;12. &lt;a href="http://www.brushsize.com/index.php?pg=view_image.php&amp;amp;img=74"&gt;Queen Triffidia&lt;/a&gt; by &lt;a href="http://www.brushsize.com"&gt;John Kearney&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-26_queen_triffidia_beauty_by_john_kearney_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-06_queen_triffidia_beauty_by_john_kearney_jpg.jpg" width="550" height="550" alt="Queen Triffidia by John Kearney" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;13. &lt;a href="http://estele.deviantart.com/art/Fiery-birds-115282858"&gt;Fiery birds&lt;/a&gt; by &lt;a href="http://estele.deviantart.com"&gt;Maria Alaeva&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-31_fiery_birds_by_estele_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-11_fiery_birds_by_estele_jpg.jpg" width="550" height="550" alt="Fiery birds by Maria Alaeva" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;14. &lt;a href="http://evniki.cgsociety.org/gallery/666542/"&gt;Karina&amp;#8217;s  Familiar&lt;/a&gt; by &lt;a href="http://evniki.cgsociety.org"&gt;Sue Marino&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-28_karina_s_familiar_by_evniki_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-08_karina_s_familiar_by_evniki_jpg.jpg" width="550" height="550" alt="Karinas Familiar by Sue Marino" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;15. &lt;a href="http://cryinghorn.deviantart.com/art/Open-Green-94870845"&gt;Open Green&lt;/a&gt; by &lt;a href="http://cryinghorn.deviantart.com"&gt;Andrius Balciunas&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-37_biker_eyes_by_tredistudio_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-15_open_green_by_cryinghorn_jpg.jpg" width="550" height="550" alt="Open Green by Andrius Balciunas" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;16. &lt;a href="http://www.photos-room.com/691/filter/newest/123/"&gt;Morgan  le Fay&lt;/a&gt; by &lt;a href="http://dianephotos.deviantart.com"&gt;Diane Ozdamar&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-34_The_magic_light_by_natsuki-3_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-12_morgan_le_fay_by_dianae_jpg.jpg" width="550" height="550" alt="Morgan le Fay by Diane Ozdamar" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;17. &lt;a href="http://miketartworks.cgsociety.org/gallery/752618/"&gt;Tomb  Raider&lt;/a&gt; by &lt;a href="http://miketartworks.cgsociety.org"&gt;Mike Thompson&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-38_tomb_raider_by_miketartworks_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-18_tomb_raider_by_miketartworks_jpg.jpg" width="550" height="550" alt="Tomb Raider by Mike Thompson" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;18. &lt;a href="http://blackeri.deviantart.com/art/Pandora-42615227"&gt;Pandora&lt;/a&gt; by &lt;a href="http://blackeri.deviantart.com"&gt;Marta Dahlig&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-35_open_green_by_cryinghorn_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-13_pandora_by_blackeri_jpg.jpg" width="550" height="550" alt="Pandora by Marta Dahlig" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;19. &lt;a href="http://tredistudio.cgsociety.org/gallery/301925/"&gt;Biker  Eyes&lt;/a&gt; by &lt;a href="http://tredistudio.cgsociety.org"&gt;Andrea Bertaccini&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-37_biker_eyes_by_tredistudio_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-17_biker_eyes_by_tredistudio_jpg.jpg" width="550" height="550" alt="Biker Eyes by Andrea Bertaccini" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;20. &lt;a href="http://arcipello.deviantart.com/art/Subemergence-25738571"&gt;Submergence&lt;/a&gt; by &lt;a href="http://arcipello.deviantart.com"&gt;Daniel Conway&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://images.sixrevisions.com/2009/07/20-40_subemergence_by_arcipello_full.jpg"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-20-20_subemergence_by_arcipello_jpg.jpg" width="550" height="550" alt="Submergence by Daniel Conway" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Which one is your favorite illustration?&lt;/h3&gt;
&lt;p&gt;Which one among this collection inspires you the most and why? Do you have other favorites not mentioned here? Share it with us in the comments!&lt;/p&gt;
&lt;h3&gt;Related Content&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/web_design/30-creative-examples-of-illustrations-in-web-design/"&gt;30  Creative Examples of Illustrations in Web Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/graphics-design/30-beautiful-photoshop-illustration-tutorials/"&gt;30  Beautiful Photoshop Illustration Tutorials&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/web_design/30-creative-examples-of-illustrations-in-web-design/"&gt;30  Creative Examples of Illustrations in Web Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Related categories&lt;/em&gt;: &lt;a href="http://sixrevisions.com/category/design-showcase-inspiration/"&gt;Design  Showcase / Inspiration&lt;/a&gt; and &lt;a href="http://sixrevisions.com/category/graphics-design/"&gt;Graphic Design&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;About the Author&lt;/h3&gt;
&lt;p&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/20-stunning-illustrations-of-surreal-female-characters-2009071812312056-lilian_ostropel_small_jpg.jpg" alt="" width="80" height="80" /&gt;&lt;span&gt;&lt;strong&gt;Lilian Ostropel&lt;/strong&gt; is a freelancer in search of online  perfection. His passion for quality, in terms of usability and content, speaks  for itself when you take a closer look at &lt;a href="http://www.photos-room.com/"&gt;&lt;strong&gt;Photos-room&lt;/strong&gt;&lt;/a&gt; and &lt;a href="http://www.wallpapers-room.com/"&gt;&lt;strong&gt;Wallpapers-room&lt;/strong&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/SixRevisions/~4/p3U6aokUuh0" height="1" width="1" /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SgDTrjKkTLLXzUVnIzFNWEPwNX8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SgDTrjKkTLLXzUVnIzFNWEPwNX8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SgDTrjKkTLLXzUVnIzFNWEPwNX8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SgDTrjKkTLLXzUVnIzFNWEPwNX8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=gwAweBALgnM:Z1xVvVx6jzI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=gwAweBALgnM:Z1xVvVx6jzI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=gwAweBALgnM:Z1xVvVx6jzI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=gwAweBALgnM:Z1xVvVx6jzI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=gwAweBALgnM:Z1xVvVx6jzI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/gwAweBALgnM" height="1" width="1"/&gt;</description>
      <pubDate>Sat, 18 Jul 2009 12:31:53 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/20-stunning-illustrations-of-surreal-female-characters</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/Z1xVvVx6jzI/20-stunning-illustrations-of-surreal-female-characters</feedburner:origLink></item>

        
        
        <item>

          <title>Best of the Week #74</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/GdR6_R1MRdQ/best-of-the-week-74</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/best-of-the-week-74]]></guid>
		 


          <description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VZyeOvjU8RcyrdMWLkqv0HD-N6E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VZyeOvjU8RcyrdMWLkqv0HD-N6E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VZyeOvjU8RcyrdMWLkqv0HD-N6E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VZyeOvjU8RcyrdMWLkqv0HD-N6E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;It&amp;#039;s time to our best news of this week. We have a lot of graphic and web, a bit of architecture, Ads, tech news, awesome reads and other crazy stuffs! So take a look on the links we&amp;#039;ve selected for your inspiration and to keep you updated about what is going on out there!&lt;/h3&gt;
&lt;p&gt;&amp;lt;!--break--&gt;&lt;/p&gt;
&lt;p&gt; We want to give a big thanks to our sponsors:&lt;br/&gt;&lt;a target="_blank" href="http://www.wix.com/free/website-new?utm_campaign=abduzeedo.com&amp;amp;experiment_id=abduzeedo5" rel="nofollow"&gt;Wix&lt;/a&gt;, &lt;a target="_blank" href="http://www.woothemes.com/" rel="nofollow"&gt;WooThemes&lt;/a&gt;, &lt;a target="_blank" href="http://www.dreamtemplate.com/" rel="nofollow"&gt;DreamTemplate&lt;/a&gt;, &lt;a target="_blank" href="https://w3-markup.com/" rel="nofollow"&gt;W3-Markup&lt;/a&gt;, &lt;a target="_blank" href="http://www.psd2html.com" rel="nofollow"&gt;PSD2HTML&lt;/a&gt;, &lt;a target="_blank" href="http://www.getharvest.com/?r=abduzeedo" rel="nofollow"&gt;Harvest&lt;/a&gt;, &lt;a target="_blank" href="http://www.vectorstock.com/free-vectors" rel="nofollow"&gt;VectorStock™&lt;/a&gt;, &lt;a target="_blank" href="http://www.speaklight.com/" rel="nofollow"&gt;LightCMS&lt;/a&gt;, &lt;a target="_blank" href="http://www.medialab.com/sitegrinder/overview.php?utm_source=abduzeedo&amp;amp;utm_medium=banner&amp;amp;utm_campaign=rejoice" rel="nofollow"&gt;SiteGrinder&lt;/a&gt;, &lt;a target="_blank" href="http://www.splashnology.com/" rel="nofollow"&gt;SPLASHnology&lt;/a&gt; and &lt;a target="_blank" href="http://www.shutterstock.com/?utm_campaign=BuySellAds%2B-%20Graphic%20Design%20%231&amp;amp;utm_source=Abduzeedo.com&amp;amp;utm_medium=Banner&amp;amp;utm_content=120x120_jellyfish.jpg" rel="nofollow"&gt;Shutterstock&lt;/a&gt;. A special mention to &lt;a target="_blank" href="http://mediatemple.net"&gt;Media Temple&lt;/a&gt; for the excellent service and support with Abduzeedo! &lt;/br/&gt;&lt;/p&gt;
&lt;p&gt;You can send me your suggestions via Twitter &lt;a href="http://twitter.com/FabianoMe" rel="nofollow"&gt;twitter.com/FabianoMe&lt;/a&gt; or  &lt;a href="http://twitter.com/abduzeedo" rel="nofollow"&gt;twitter.com/abduzeedo&lt;/a&gt;, and include #abdz_best in the message.&lt;br /&gt;
&lt;h3&gt;Saturday 07/18&lt;/h3&gt;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/zenhabits/~3/JMnT05M2hos/" target="_blank" rel="nofollow"&gt;Take Lots of Breaks to Get More Done&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-20090717break_jpg.jpg" alt="Take Lots of Breaks to Get More Done" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/dyt/~3/kFooI51u6-0/" target="_blank" rel="nofollow"&gt;Perttu Murto updates his site&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-no_heroes_o_jpg.jpg" alt="Perttu Murto updates his site" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.teehanlax.com/blog/?p=1675Palm+Pre" target="_blank" rel="nofollow"&gt;Palm Pre GUI PSD&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-palmprepsd_jpg.jpg" alt="Palm Pre GUI PSD" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/dyt/~3/w7Qte4iPK7s/" target="_blank" rel="nofollow"&gt;Brad Pitt for Wired&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-bradpittforwiredmagazine_01_jpg.jpg" alt="Brad Pitt for Wired" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://writetodone.com/2009/07/18/7-simple-ways-to-dramatically-improve-everything-you-write/" target="_blank" rel="nofollow"&gt;7 Simple Ways to Dramatically Improve Everything You Write&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-writer-sitting-on-bench_jpg.jpg" alt="7 Simple Ways to Dramatically Improve Everything You Write" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3&gt;Friday 07/17&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/Techcrunch/~3/x-SSJag7zIk/" target="_blank" rel="nofollow"&gt;Minority Report Via A Facebook Event Page - For A Barbeque&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-cp_1247845475_precrime-215x123_jpg.jpg" alt="Minority Report Via A Facebook Event Page - For A Barbeque" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.signalnoise.com/?p=1325" target="_blank" rel="nofollow"&gt;New Signalnoise poster: Awesome&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-i_awesome_jpg.jpg" alt="New Signalnoise poster: Awesome" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.signalnoise.com/?p=1319" target="_blank" rel="nofollow"&gt;New Signalnoise poster: Liquid Gold 77&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-i_77_jpg.jpg" alt="New Signalnoise poster: Liquid Gold 77" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/blogmacmagazine/~3/R-Mcq4mKt3A/" target="_blank" rel="nofollow"&gt;Veja como seria o Apple.com se ele existisse em 1983 :-D&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-17-apple_1983-550x466_png.png" alt="Veja como seria o Apple.com se ele existisse em 1983 :-D" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.smashingmagazine.com/2009/07/13/css-3-cheat-sheet-pdf/" target="_blank" rel="nofollow"&gt;CSS 3 Cheat Sheet (PDF)&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-pdfcss3_gif.gif" alt="CSS 3 Cheat Sheet (PDF)" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3&gt;Thursday 07/16&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.webdesignerdepot.com/2009/07/50-examples-of-vintage-typography/" target="_blank" rel="nofollow"&gt;50 Examples of Vintage Typography&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-vintage-type-24_jpg.jpg" alt="50 Examples of Vintage Typography" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/Techcrunch/~3/X8uyn30Ppa0/" target="_blank" rel="nofollow"&gt;Google Wants You To Know A Google Docs Redesign Is Coming (I Wonder Why)&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-picture-65_png.png" alt="Google Wants You To Know A Google Docs Redesign Is Coming (I Wonder Why)" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cpluv.com/www/feeditem/7884" target="_blank" rel="nofollow"&gt;Fierce Speed&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-Sooz_4a5fce84718b3_jpg.jpg" alt="Fierce Speed" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cpluv.com/www/feeditem/7884" target="_blank" rel="nofollow"&gt;Pizza Hut lança aplicativo para iPhone&lt;br/&gt;&lt;br/&gt;&lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.cpluv.com/www/feeditem/7876" target="_blank" rel="nofollow"&gt;Mebucaine: Mouth of Horrors&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-Fil_4a5f3e0f02b1d_jpg.jpg" alt="Mebucaine: Mouth of Horrors" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/FuelYourCreativity/~3/YeqONY--GxU/" target="_blank" rel="nofollow"&gt;Building Community – The Sites that are Getting it Right!&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-com_dcth_jpg.jpg" alt="Building Community – The Sites that are Getting it Right!" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/psdtuts/~3/uwgTKWzUhPE/" target="_blank" rel="nofollow"&gt;110+ Artworks From The Top 20 Digital Artists in Europe&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-artwork_1_jpg.jpg" alt="110+ Artworks From The Top 20 Digital Artists in Europe" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/InspiredologycomInspiredologycom/~3/8v-B3f_xOl0/" target="_blank" rel="nofollow"&gt;25 Large Photo Background Websites&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-3675696124_0db94ff723_o_png.png" alt="25 Large Photo Background Websites" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/dyt/~3/zExzd6Z-PYI/" target="_blank" rel="nofollow"&gt;20 Streetwear Blogs for Hype Shopping &amp;amp; Design Inspiration&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-hype_mash_jpg.jpg" alt="20 Streetwear Blogs for Hype Shopping &amp;amp; Design Inspiration" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/zenhabits/~3/EbtrCEfEsyE/" target="_blank" rel="nofollow"&gt;A Beautiful Method to Find Peace of Mind&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-20090716serene_jpg.jpg" alt="A Beautiful Method to Find Peace of Mind" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/Fleck/~3/XuKl3d045UI/" target="_blank" rel="nofollow"&gt;Sex in the 21st Century&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-504x_by_texting_f_jpg.jpg" alt="Sex in the 21st Century" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.designboom.com/weblog/cat/9/view/7003/axis-mundi-unveils-conceptual-design-for-moma-tower.html" target="_blank" rel="nofollow"&gt;axis mundi unveils conceptual design for MoMA tower&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-moma01_jpg.jpg" alt="axis mundi unveils conceptual design for MoMA tower" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/psdtuts/~3/5VMwub4Kzf4/" target="_blank" rel="nofollow"&gt;Download 9 Layered .Psd Artworks from SlashTHREE&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-express3_jpg.jpg" alt="Download 9 Layered .Psd Artworks from SlashTHREE" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/readwriteweb/~3/fruLlXW9SpA/tweeting_via_facebook.php" target="_blank" rel="nofollow"&gt;Tweeting via Facebook?&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-facebook_twitter_jul09_jpg.jpg" alt="Tweeting via Facebook?" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3&gt;Wednesday 07/15&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/Techcrunch/~3/pcJjocx-Zzg/" target="_blank" rel="nofollow"&gt;NetVibes Adds Drag And Follow Search Widgets For Twitter, Facebook And MySpace&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-drag_netvibes_jpg.jpg" alt="NetVibes Adds Drag And Follow Search Widgets For Twitter, Facebook And MySpace" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/Techcrunch/~3/6Hw0HL08TT8/" target="_blank" rel="nofollow"&gt;Chris Anderson’s Free Is Now Available For Free On The Kindle&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-41ujse4ntsl_sl500_aa246_pikin2bottomright-1534_aa280_sh20_ou01__jpg.jpg" alt="Chris Anderson’s Free Is Now Available For Free On The Kindle" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/dyt/~3/gUFM5lPTjNY/" target="_blank" rel="nofollow"&gt;Gisele Bunchen x Versace F/W 2009-2010&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-giselebundchenversace01_jpg.jpg" alt="Gisele Bunchen x Versace F/W 2009-2010" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/dyt/~3/v6LxD_WRxYQ/" target="_blank" rel="nofollow"&gt;Banksy spotted in Africa&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-banksy1_jpg.jpg" alt="Banksy spotted in Africa" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.gawker.com/~r/lifehacker/full/~3/S0welIuPeCU/google-voice-apps-land-on-android-and-blackberry" target="_blank" rel="nofollow"&gt;Google Voice Apps Land on Android and BlackBerry&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-504x_google_voice_android_jpg.jpg" alt="Google Voice Apps Land on Android and BlackBerry" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/project83/~3/g2gceTtpidE/" target="_blank" rel="nofollow"&gt;How to Give an Accurate Project Estimate&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-accurate_price_png.png" alt="How to Give an Accurate Project Estimate" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/FreelanceSwitch/~3/Vr57uSzcEtc/" target="_blank" rel="nofollow"&gt;How to Client-Proof Your Work Schedule&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-thumb3_jpg.jpg" alt="How to Client-Proof Your Work Schedule" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/Techcrunch/~3/it_XFlQJMqc/" target="_blank" rel="nofollow"&gt;Final Tweet: The Twitter Reality TV Show Pitch&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-finaltweet1_jpg.jpg" alt="Final Tweet: The Twitter Reality TV Show Pitch" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3&gt;Tuesday 07/14&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://typesites.com/helveticons/" target="_blank" rel="nofollow"&gt;helveticons&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-helveticons_jpg.jpg" alt="helveticons" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://thecrewdesign.blogspot.com/2009/07/2009-logo-trends.html" target="_blank" rel="nofollow"&gt;2009 Logo Trends&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-Logo-Trends-VariDot_jpg.jpg" alt="2009 Logo Trends" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.fubiz.net/2009/07/14/niagara-falls-in-motion/" target="_blank" rel="nofollow"&gt;Niagara Falls in Motion&lt;br/&gt;&lt;br/&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://vimeo.com/5370705" rel="nofollow"&gt;Niagara Falls in Motion&lt;/a&gt; from &lt;a href="http://vimeo.com/wartman" rel="nofollow"&gt;Matthew Wartman&lt;/a&gt; on &lt;a href="http://vimeo.com" rel="nofollow"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.smashingmagazine.com/2009/07/14/quality-price-ratio-in-web-design-pricing-design-work/" target="_blank" rel="nofollow"&gt;Quality-Price-Ratio in Web Design (Pricing Design Work)&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-designpricewine_jpg.jpg" alt="Quality-Price-Ratio in Web Design (Pricing Design Work)" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/dyt/~3/tMtJwOHBZOM/" target="_blank" rel="nofollow"&gt;Fantastic Worlds of David Schleinkofer&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-Schleinkofer5_jpg.jpg" alt="Fantastic Worlds of David Schleinkofer" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/Techcrunch/~3/rkBJiGvspa0/" target="_blank" rel="nofollow"&gt;How We Know Chrome OS Will Be A Hit: Steve Ballmer Doesn’t Think So&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-steve_ballmer-from-btl_jpg.jpg" alt="How We Know Chrome OS Will Be A Hit: Steve Ballmer Doesn’t Think So" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/readwriteweb/~3/vs3XZToJiyI/browsing_youtube_with_ie6_at_work_those_days_may_soon_be_over.php" target="_blank" rel="nofollow"&gt;Browsing YouTube with IE6 at Work? Those Days May Soon be Over&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-youtube_ie6_end_png.png" alt="Browsing YouTube with IE6 at Work? Those Days May Soon be Over" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/uxbooth/~3/cHqJ_eY5In0/" target="_blank" rel="nofollow"&gt;Speed Up Your Website with Better Image Optimization in Photoshop&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-save-for-web_jpg.jpg" alt="Speed Up Your Website with Better Image Optimization in Photoshop" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/dyt/~3/d6xOtLegrVA/" target="_blank" rel="nofollow"&gt;Fatoe&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-f80_madvillain_01_jpg.jpg" alt="Fatoe" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3&gt;Monday 07/13&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/creattica/~3/TcHUrIiMBac/" target="_blank" rel="nofollow"&gt;16 Awesome And Inspiring Videos&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-break-dance_jpg.jpg" alt="16 Awesome And Inspiring Videos" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.gawker.com/~r/lifehacker/full/~3/kQ90c9SIoWI/microsoft-office-2010-in-videos" target="_blank" rel="nofollow"&gt;Microsoft Office 2010 in Videos [Video Demonstration]&lt;br/&gt;&lt;br/&gt;&lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.iso50.com/2009/07/13/mike-cina-spirit-edit-jazz-mix/" target="_blank" rel="nofollow"&gt;Mike Cina: Spirit Edit Jazz Mix&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-04-450x319_jpg.jpg" alt="Mike Cina: Spirit Edit Jazz Mix" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/Techcrunch/~3/KrdjFhSzn14/" target="_blank" rel="nofollow"&gt;Why Teens Aren’t Using Twitter: It Doesn’t Feel Safe&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-2755v28-max-250x250_png.png" alt="Why Teens Aren’t Using Twitter: It Doesn’t Feel Safe" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.engadget.com/2009/07/13/more-alleged-chrome-os-screenshots-for-your-viewing-pleasure/" target="_blank" rel="nofollow"&gt;More alleged Chrome OS screenshots for your viewing pleasure&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-2009-07-13chromepage_jpg.jpg" alt="More alleged Chrome OS screenshots for your viewing pleasure" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.gawker.com/~r/lifehacker/full/~3/nji0a_pA4Q8/gmail-labs-adds-anti+phishing-key" target="_blank" rel="nofollow"&gt;Gmail Labs Adds Anti-Phishing Key&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-authenticated-icon-1_jpg.jpg" alt="Gmail Labs Adds Anti-Phishing Key" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ibelieveinadv.com/2009/07/gcap-press-the-8/" target="_blank" rel="nofollow"&gt;GCAP: Press the 8&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-pressthe8_obama-412x582_jpg.jpg" alt="GCAP: Press the 8" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/dyt/~3/orxshvXxaMM/" target="_blank" rel="nofollow"&gt;Storefronts of New York City &lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-ZIGZAG_jpg.jpg" alt="Storefronts of New York City " /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.landor.com/blog/postid/20036" target="_blank" rel="nofollow"&gt;The long tail of stupid prices &lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-20036_1_png.png" alt="The long tail of stupid prices" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/dyt/~3/aQrW9_LXSx8/" target="_blank" rel="nofollow"&gt;Madonna x Louis Vuitton’s Fall/Winter 2009-2010&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-LVMadonna01_jpg.jpg" alt="Madonna x Louis Vuitton’s Fall/Winter 2009-2010" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://thelittlechimpsociety.com/inkymole/inkymoles-4th-july-fireworks-poster-campaign-for-macys/" target="_blank" rel="nofollow"&gt;Inkymole’s 4th July Fireworks Poster Campaign for Macy’s&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-FIREWORKS09POSTER_Local_jpg.jpg" alt="Inkymole’s 4th July Fireworks Poster Campaign for Macy’s" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.designboom.com/weblog/cat/11/view/6978/shepard-fairey-sentenced-to-two-years-probation.html" target="_blank" rel="nofollow"&gt;shepard fairey sentenced to two years&amp;#039; probation&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-shepard01_jpg.jpg" alt="shepard fairey sentenced to two years&amp;#039; probation" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/Techcrunch/~3/82dxA_C-Ap0/" target="_blank" rel="nofollow"&gt;Rollip Brings Back Distant Memories Of Discolored Polaroid Photos&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-rollip_jpg.jpg" alt="Rollip Brings Back Distant Memories Of Discolored Polaroid Photos" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/FuelYourCreativity/~3/dFd4Dqvxx3M/" target="_blank" rel="nofollow"&gt;Brush Pilot Review and Giveaway&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-brush_header2_jpg.jpg" alt="Brush Pilot Review and Giveaway" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/dyt/~3/C4keFO8M-HQ/" target="_blank" rel="nofollow"&gt;Virages . Aston Martin dedicated magazine&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-viragesn1068_jpg.jpg" alt="Virages . Aston Martin dedicated magazine" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.designboom.com/weblog/cat/9/view/6973/oma-de-rotterdam-netherlands.html" target="_blank" rel="nofollow"&gt;OMA: de rotterdam, netherlands&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-rum4_jpg.jpg" alt="OMA: de rotterdam, netherlands" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedproxy.google.com/~r/carsonified/~3/CBT3S27Q6ZM/" target="_blank" rel="nofollow"&gt;How to Design a Portfolio Site&lt;br/&gt;&lt;br/&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-20090709-maxh1stphjhm2465xd84a3ue5b_jpg.jpg" alt="How to Design a Portfolio Site" /&gt; &lt;/br/&gt;&lt;/br/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;div&gt;&lt;h2&gt;About the author&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/best-of-the-week-74-2009071812042160-picture-12_png.png" alt="User picture" /&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;I&amp;#039;m from Brazil, co-founder of &lt;a href="http://zee.com.br" rel="nofollow"&gt;Zee&lt;/a&gt; with Fabio. Nowadays I like to play with Fireworks, Photoshop and improve my skills in CSS. If you wanna request some posts, please feel free to &lt;a href="mailto:fabiano@zee.com.br" rel="nofollow"&gt;contact me&lt;/a&gt; or follow on &lt;a href="http://twitter.com/FabianoMe" rel="nofollow"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4&gt;Sponsored Links:&lt;/h4&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;
&lt;div&gt;&lt;a href="http://abdutees.bigcartel.com/product/goddess-of-abduction"&gt;&lt;img src="hhttp://abductit.com/files/articles/abductees/banner.jpg" alt="Buy Abduzeedo T-shirts" title="Abduzeedo T-shirts Banner" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=8agRLOSTW8c:O0usq4QteoU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=8agRLOSTW8c:O0usq4QteoU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?i=8agRLOSTW8c:O0usq4QteoU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=8agRLOSTW8c:O0usq4QteoU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=8agRLOSTW8c:O0usq4QteoU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?i=8agRLOSTW8c:O0usq4QteoU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=8agRLOSTW8c:O0usq4QteoU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=8agRLOSTW8c:O0usq4QteoU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?i=8agRLOSTW8c:O0usq4QteoU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=8agRLOSTW8c:O0usq4QteoU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=8agRLOSTW8c:O0usq4QteoU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/abduzeedo/~4/8agRLOSTW8c" height="1" width="1" /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LDTHX7fhHRrodXxQ5-2L0_Xjo7w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LDTHX7fhHRrodXxQ5-2L0_Xjo7w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LDTHX7fhHRrodXxQ5-2L0_Xjo7w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LDTHX7fhHRrodXxQ5-2L0_Xjo7w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=GdR6_R1MRdQ:U6vEUP9kMGo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=GdR6_R1MRdQ:U6vEUP9kMGo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=GdR6_R1MRdQ:U6vEUP9kMGo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=GdR6_R1MRdQ:U6vEUP9kMGo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=GdR6_R1MRdQ:U6vEUP9kMGo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/GdR6_R1MRdQ" height="1" width="1"/&gt;</description>
      <pubDate>Sat, 18 Jul 2009 12:04:30 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/best-of-the-week-74</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/U6vEUP9kMGo/best-of-the-week-74</feedburner:origLink></item>

        
        
        <item>

          <title>Reader Tutorial: 16bits Vector Style Illustration</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/_NCRsU2ZBFc/reader-tutorial-16bits-vector-style-illustration</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/reader-tutorial-16bits-vector-style-illustration]]></guid>
		 


          <description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/y4bNP68ft34dC2ws4GrV42GW9qU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y4bNP68ft34dC2ws4GrV42GW9qU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/y4bNP68ft34dC2ws4GrV42GW9qU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y4bNP68ft34dC2ws4GrV42GW9qU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Mario! everyday he saves the princess! Between some enthusiasts he is a great hero, outside and inside the gamers world, he is one of my favorite characters, so I decided to show how to vectorize a Mario from super nes with illustrator. The same process can be used for any other game or character. &lt;/h3&gt;
&lt;h3&gt;What you will need?&lt;/h3&gt;
&lt;p&gt;
	- A Super Nintendo emulator called Snes9x - &lt;a href="http://files.ipherswipsite.com/snes9x/snes9x-1.51-win32.zip"&gt;Download it here&lt;/a&gt;&lt;br /&gt;
	- A rom from Super Mario World - &lt;a href="http://w19.easy-share.com/1903037866.html"&gt;Download it here&lt;/a&gt;&lt;br /&gt;
	- Photoshop and Illustrator, in this case I used CS4&lt;br /&gt;
	- A hot chocolate mug if it&amp;#039;s cold, and in case it&amp;#039;s hot, lots of coke
&lt;/p&gt;
&lt;h3&gt;What you will get?&lt;/h3&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image16_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;h3&gt;Step 1&lt;/h3&gt;
&lt;p&gt;Ok, let&amp;#039;s open our emulator. Click at the snes9x icon to start the game. Click at File/Load Game or simply ctrl+O.&lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image01_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;h3&gt;Step 2&lt;/h3&gt;
&lt;p&gt;Go to the place where you saved the rom of the SMW to run the game and then you need to Open a room (or two clicks). If everything goes right, you will see nintendo&amp;#039;s logo and the game will begin.&lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image02_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;h3&gt;Step 3&lt;/h3&gt;
&lt;p&gt;Now you need to capture de screen image (print screen) to get our Mario. Then past it at photoshop.&lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image03_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;h3&gt;Step 4&lt;/h3&gt;
&lt;p&gt;Now, with the crop tool (C) select only Mario.&lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image04_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;h3&gt;Step 5&lt;/h3&gt;
&lt;p&gt;Now we will clean the scenario. You can do that manually with the selection tool or via Color Range.&lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image05_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;h3&gt;Step 6&lt;/h3&gt;
&lt;p&gt;Click at the most visible color as below:&lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image06_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;h3&gt;Step 7&lt;/h3&gt;
&lt;p&gt;At the &amp;#039;not selected&amp;#039; parts you can use the selection. In summary: the main thing is to select the character or that it out of it, depends on your method. &lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image07_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;p&gt;Mario with the scenario selected, then I pressed delete.&lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image08_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;p&gt;Cool!&lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image09_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;h3&gt;Step 8&lt;/h3&gt;
&lt;p&gt;After that, open Illustrator. Select our Mario from photoshop and paste it here. Then click on it and go to &lt;strong&gt; Live Trace&amp;gt; Tracing Options&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image10_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;h3&gt;Step 9&lt;/h3&gt;
&lt;p&gt;Select the options as below and give a priority to the option Preview so our result will we showed in real time as the selections are activated. &lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image11_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;p&gt;
	Mode: Color&lt;br /&gt;
	Max Color: 256&lt;br /&gt;
	Blur: 0px&lt;br /&gt;
	Path: Fitting: 0px&lt;br /&gt;
	Minimun Area: 0px&lt;br /&gt;
	Corner Angle: 0px
&lt;/p&gt;
&lt;p&gt;So do a Trace (at the Mode option, then you can alternate the Color, Greyscale and Black/White), this way you will have different looks in a gameboy style. Go to &lt;strong&gt; Object&amp;gt; Expand&lt;/strong&gt; and click ok.&lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image12_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;h3&gt;Step 10&lt;/h3&gt;
&lt;p&gt;Now your image became a Vector, so now ungroup it (Ctrl+Shift+G).&lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image13_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;h3&gt;Step 11&lt;/h3&gt;
&lt;p&gt;Select the small dirty parts and the white background that are at the image and delete them. &lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image14_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;h3&gt;Step 12&lt;/h3&gt;
&lt;p&gt;Some fonts in a pixel style will do great with our Mario.&lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image15_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;p&gt;And our image is ready! You can also do some posters with this, in a bigger size. There is no limit for your creativity... and ok I know that you didn&amp;#039;t drink your chocolate or coke. :)&lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://ooyes.net/userfiles/media/downloaded/reader-tutorial-16bits-vector-style-illustration-2009071806101972-image16_jpg.jpg" alt="Image selected for Reader Tutorial: 16bits Vector Style Illustration" /&gt;
&lt;/p&gt;
&lt;p&gt;I hope you liked the tutorial!!&lt;/p&gt;
&lt;p&gt;To download the illustrator file from this tutorial &lt;a href="http://abductit.com/files/articles/tutorial_fabricio/mario.ai.zip"&gt;click here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;About the author&lt;/h2&gt;
&lt;p&gt;My name is Fabrício Falco and I live in Curitiba, Brazil. Actually I&amp;#039;ve been knocking my head as a freelancer doing some wordpress and joomla websites. Check out my &lt;a href="http://www.fabriciofalco.com.br"&gt;personal website&lt;/a&gt; and also add me to your facebook.&lt;/p&gt;
&lt;p&gt;Edited by GisMullr&lt;/p&gt;
&lt;br/&gt;&lt;br/&gt;
&lt;div&gt;&lt;a href="http://abdutees.bigcartel.com/product/goddess-of-abduction"&gt;&lt;img src="hhttp://abductit.com/files/articles/abductees/banner.jpg" alt="Buy Abduzeedo T-shirts" title="Abduzeedo T-shirts Banner" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=G-_ei247ZNU:L5Tju1iNZjM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=G-_ei247ZNU:L5Tju1iNZjM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?i=G-_ei247ZNU:L5Tju1iNZjM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=G-_ei247ZNU:L5Tju1iNZjM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=G-_ei247ZNU:L5Tju1iNZjM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?i=G-_ei247ZNU:L5Tju1iNZjM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=G-_ei247ZNU:L5Tju1iNZjM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=G-_ei247ZNU:L5Tju1iNZjM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?i=G-_ei247ZNU:L5Tju1iNZjM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=G-_ei247ZNU:L5Tju1iNZjM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/abduzeedo?a=G-_ei247ZNU:L5Tju1iNZjM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/abduzeedo?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/abduzeedo/~4/G-_ei247ZNU" height="1" width="1" /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gnGlklGLIxNX5AuOfifuArqcjts/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gnGlklGLIxNX5AuOfifuArqcjts/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gnGlklGLIxNX5AuOfifuArqcjts/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gnGlklGLIxNX5AuOfifuArqcjts/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=_NCRsU2ZBFc:TPjptWmCxTg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=_NCRsU2ZBFc:TPjptWmCxTg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=_NCRsU2ZBFc:TPjptWmCxTg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=_NCRsU2ZBFc:TPjptWmCxTg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=_NCRsU2ZBFc:TPjptWmCxTg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/_NCRsU2ZBFc" height="1" width="1"/&gt;</description>
      <pubDate>Sat, 18 Jul 2009 06:10:22 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/reader-tutorial-16bits-vector-style-illustration</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/TPjptWmCxTg/reader-tutorial-16bits-vector-style-illustration</feedburner:origLink></item>

        
        
        <item>

          <title>10 Free High Res Coffee Stains Textures</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/5ePDfW9Jnb4/10-free-high-res-coffee-stains-textures</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/10-free-high-res-coffee-stains-textures]]></guid>
		 


          <description>&lt;p&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/10-free-high-res-coffee-stains-textures-2009071804311814-19-01_coffee_stains_freebie_lead_image_jpg.jpg" width="550" height="250" alt="10 Free High Res Coffee Stains Textures" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;In this set, you’ll find &lt;strong&gt;10 high-resolution and large-scale coffee stains texture stock images&lt;/strong&gt;.  They have a very liberal &lt;em&gt;Creative Commons&lt;/em&gt; license so that you can use them in any manner you choose, whether it’s &lt;em&gt;personal&lt;/em&gt; or &lt;em&gt;commercial&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Since they’re all &lt;strong&gt;2,896px  by 1,944px&lt;/strong&gt; in size, they’re big and can be rescaled down for most purposes.&lt;/p&gt;
&lt;h3&gt;Preview&lt;/h3&gt;
&lt;p&gt;Click on the image or title that you&amp;#8217;re interested in so  that you can view various sizes of the image on its Flickr page. Alternatively,  feel free to browse the entire &lt;strong&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/sets/72157621501860633/"&gt;Coffee  Stains Textures&lt;/a&gt;&lt;/strong&gt; Flickr set.&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731902884/in/set-72157621501860633/"&gt;Coffee  Stains Texture 01&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731902884/" title="Coffee Stains Texture 01 by SixRevisions, on Flickr"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/10-free-high-res-coffee-stains-textures-2009071804311814-3731902884_151985b65f_jpg.jpg" width="500" height="335" alt="Coffee Stains Texture 01" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731106389/in/set-72157621501860633/"&gt;Coffee  Stains Texture 02&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731106389/" title="Coffee Stains Texture 02 by SixRevisions, on Flickr"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/10-free-high-res-coffee-stains-textures-2009071804311814-3731106389_14da866001_jpg.jpg" width="500" height="335" alt="Coffee Stains Texture 02" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731106661/in/set-72157621501860633/"&gt;Coffee  Stains Texture 03&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731106661/" title="Coffee Stains Texture 03 by SixRevisions, on Flickr"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/10-free-high-res-coffee-stains-textures-2009071804311814-3731106661_ecd3bd0b6f_jpg.jpg" width="500" height="335" alt="Coffee Stains Texture 03" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731106877/in/set-72157621501860633/http:/www.flickr.com/photos/31288116@N02/3731106661/sizes/m/in/set-72157621501860633/"&gt;Coffee  Stains Texture 04&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731106877/" title="Coffee Stains Texture 04 by SixRevisions, on Flickr"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/10-free-high-res-coffee-stains-textures-2009071804311814-3731106877_10339770fb_jpg.jpg" width="500" height="335" alt="Coffee Stains Texture 04" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731107097/in/set-72157621501860633/"&gt;Coffee  Stains Texture 05&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731107097/" title="Coffee Stains Texture 05 by SixRevisions, on Flickr"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/10-free-high-res-coffee-stains-textures-2009071804311814-3731107097_2120c8d200_jpg.jpg" width="500" height="335" alt="Coffee Stains Texture 05" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731107419/in/set-72157621501860633/"&gt;Coffee  Stains Texture 06&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731107419/" title="Coffee Stains Texture 06 by SixRevisions, on Flickr"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/10-free-high-res-coffee-stains-textures-2009071804311814-3731107419_c05ee92bdd_jpg.jpg" width="500" height="335" alt="Coffee Stains Texture 06" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731107975/in/set-72157621501860633/"&gt;Coffee  Stains Texture 07&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731107975/" title="Coffee Stains Texture 07 by SixRevisions, on Flickr"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/10-free-high-res-coffee-stains-textures-2009071804311814-3731107975_380a66e684_jpg.jpg" width="500" height="335" alt="Coffee Stains Texture 07" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731108469/in/set-72157621501860633/"&gt;Coffee  Stains Texture 08&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731108469/" title="Coffee Stains Texture 08 by SixRevisions, on Flickr"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/10-free-high-res-coffee-stains-textures-2009071804311814-3731108469_ed5a63c09d_jpg.jpg" width="500" height="335" alt="Coffee Stains Texture 08" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731905658/in/set-72157621501860633/"&gt;Coffee  Stains Texture 09&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731905658/" title="Coffee Stains Texture 09 by SixRevisions, on Flickr"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/10-free-high-res-coffee-stains-textures-2009071804311814-3731905658_577e197fe4_jpg.jpg" width="500" height="335" alt="Coffee Stains Texture 09" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731109335/in/set-72157621501860633/"&gt;Coffee  Stains Texture 10&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/31288116@N02/3731109335/" title="Coffee Stains Texture 10 by SixRevisions, on Flickr"&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/10-free-high-res-coffee-stains-textures-2009071804311814-3731109335_2e174232a5_jpg.jpg" width="500" height="335" alt="Coffee Stains Texture 10" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Licensing details&lt;/h3&gt;
&lt;p&gt;The above works that featured here and in the &lt;a href="http://www.flickr.com/photos/31288116@N02/sets/72157621501860633/"&gt;Coffee  Stains Texture&lt;/a&gt; set  are licensed under the &lt;a href="http://creativecommons.org/licenses/by/3.0/us/"&gt;Creative  Commons&lt;/a&gt; license and can be used for &lt;strong&gt;personal&lt;/strong&gt; and/or &lt;strong&gt;commercial&lt;/strong&gt; purposes.&lt;/p&gt;
&lt;p&gt;The Creative Commons license requires you to &amp;#34;&lt;em&gt;attribute the work in the manner specified  by the author or licensor&lt;/em&gt;&amp;#34;. Our attribution specification: you &lt;em&gt;don’t&lt;/em&gt; need to attribute the work to us  (though you’re more then welcome to, and we will definitely appreciate it).&lt;/p&gt;
&lt;h3&gt;Related content&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/freebies/brushes/sr-grunge-free-high-resolution-photoshop-grunge-brushes/"&gt;SR  Grunge: Free High Resolution Photoshop Grunge Brushes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/freebies/textures/grunge-extreme-volume-2-10-high-quality-free-grunge-textures/"&gt;High  Quality Free Grunge Textures&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/freebies/textures/10-high-quality-free-leaf-textures/"&gt;10  High-Quality Free Leaf Textures&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Related categories&lt;/em&gt;: &lt;a href="http://sixrevisions.com/category/freebies/"&gt;Freebies&lt;/a&gt; and &lt;a href="http://sixrevisions.com/category/graphics-design/"&gt;Graphic Design&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;About the Author&lt;/h3&gt;
&lt;p&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/10-free-high-res-coffee-stains-textures-2009071804311814-jc_parmley_small_jpg.jpg" alt="" width="80" height="80" /&gt;&lt;span&gt;&lt;strong&gt;JC Parmley&lt;/strong&gt; is a U.S.-based web designer and developer from Indiana. When he&amp;#8217;s not designing interfaces and creating .NET apps, you can find him in the Frozen Waste fighting for the Horde (&lt;a href="http://www.worldofwarcraft.com/index.xml"&gt;World of Warcraft&lt;/a&gt;) or kicking butt in the kitchen.&lt;/span&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/SixRevisions/~4/MrMJT3hwTqo" height="1" width="1" /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fRL2TxVkPjQXcV6sU707JEODIFk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fRL2TxVkPjQXcV6sU707JEODIFk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fRL2TxVkPjQXcV6sU707JEODIFk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fRL2TxVkPjQXcV6sU707JEODIFk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=5ePDfW9Jnb4:hERy8jCFDso:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=5ePDfW9Jnb4:hERy8jCFDso:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=5ePDfW9Jnb4:hERy8jCFDso:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=5ePDfW9Jnb4:hERy8jCFDso:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=5ePDfW9Jnb4:hERy8jCFDso:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/5ePDfW9Jnb4" height="1" width="1"/&gt;</description>
      <pubDate>Sat, 18 Jul 2009 04:31:25 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/10-free-high-res-coffee-stains-textures</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/hERy8jCFDso/10-free-high-res-coffee-stains-textures</feedburner:origLink></item>

        
        
        <item>

          <title>15 Really Useful Web-based HTML Editors</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/Ol82t4brPxE/15-really-useful-web-based-html-editors</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/15-really-useful-web-based-html-editors]]></guid>
		 


          <description>&lt;p&gt;Web-based HTML Editor, WYSIWYG editor, or rich text editor, is a web component that let users enter rich text input within the browser. Most of the time, these html editors are used within content management systems where administrators or authors can easily create posts and contents from the backend system.&lt;/p&gt;
&lt;p&gt;Without talking much, let&amp;#8217;s see these powerful Web-based HTML Editors.&lt;/p&gt;
&lt;h3&gt;1. &lt;a title="FCKeditor" href="http://www.fckeditor.net/" target="_blank"&gt;FCKeditor&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;FCKeditor is one of the most famous online HTML editor. It brings the power and features of desktop editors to the web. It offers a complete integration pack for ASP, ASP.NET, PHP, Java, Perl, Phyton and etc. It supports skins, spell checker, lightweight, fast and has a lot of cool features.&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-968" title="FCKeditor" src="http://ooyes.net/userfiles/media/downloaded/15-really-useful-web-based-html-editors-2009071711071442-fckeditor_jpg.jpg" alt="FCKeditor" width="500" height="161" /&gt;&lt;/p&gt;
&lt;h3&gt;2. &lt;a title="NicEdit" href="http://nicedit.com/" target="_blank"&gt;NicEdit&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;NicEdit is a Javascript that integrates into any web page easily. It can turns any element/div to become editable or convert standard textareas to rich text editing.&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-969" title="NicEdit" src="http://ooyes.net/userfiles/media/downloaded/15-really-useful-web-based-html-editors-2009071711071442-nicedit_jpg.jpg" alt="NicEdit" width="500" height="104" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;3. &lt;a title="TinyMCE" href="http://tinymce.moxiecode.com/" target="_blank"&gt;TinyMCE&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;TinyMCE is an online wysiwyg html editor released under LGPL license. Like other wysiwyg html editors, it is able to convert textarea or other html elements to editor instances.&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-970" title="TinyMCE" src="http://ooyes.net/userfiles/media/downloaded/15-really-useful-web-based-html-editors-2009071711071442-tinymce_jpg.jpg" alt="TinyMCE" width="500" height="181" /&gt;&lt;/p&gt;
&lt;h3&gt;4. &lt;a title="jwysiwyg" href="http://code.google.com/p/jwysiwyg/" target="_blank"&gt;jwysiwyg&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;jwysiwyg is a jQuery WYSIWYG plugin with a tiny size (7kb packed). It is very simple and without much features.&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-971" title="jwysiwyg - jQuery WYSIWYG plugin" src="http://ooyes.net/userfiles/media/downloaded/15-really-useful-web-based-html-editors-2009071711071442-jwysiwyg_jpg.jpg" alt="jwysiwyg - jQuery WYSIWYG plugin" width="500" height="198" /&gt;&lt;/p&gt;
&lt;h3&gt;5. &lt;a title="Yahoo! UI Library: Rich Text Editor" href="http://developer.yahoo.com/yui/editor/" target="_blank"&gt;Yahoo! UI Library: Rich Text Editor&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The Rich Text Editor is part of the Yahoo YUI library and users can easily extend the features via creating plugin for it. It is very suitable for those who already familiar with other controls from YUI library.&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-972" title="Yahoo! UI Library: Rich Text Editor" src="http://ooyes.net/userfiles/media/downloaded/15-really-useful-web-based-html-editors-2009071711071442-yui-rich-text-editor_jpg.jpg" alt="Yahoo! UI Library: Rich Text Editor" width="500" height="331" /&gt;&lt;/p&gt;
&lt;h3&gt;6. &lt;a title="Xinha" href="http://xinha.webfactional.com/" target="_blank"&gt;Xinha&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Xinha is a powerful WYSIWYG HTML editor component that works in all current browsers. It is built by the open source community, and everyone are welcome to contribute to the project.&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-973" title="xinha" src="http://ooyes.net/userfiles/media/downloaded/15-really-useful-web-based-html-editors-2009071711071442-xinha_jpg.jpg" alt="xinha" width="500" height="330" /&gt;&lt;/p&gt;
&lt;h3&gt;7. &lt;a title="Openwysiwyg" href="http://www.openwebware.com/" target="_blank"&gt;Openwysiwyg&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Openwysiwyg is yet another powerful open source cross browser WYSIWYG editor that contains a lot of features. It enhances table creation and you can easily create tables and customize them with built-in properties.&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-974" title="openwysiwyg: Free cross browser wysiwyg editor" src="http://ooyes.net/userfiles/media/downloaded/15-really-useful-web-based-html-editors-2009071711071442-openwysiwyg_jpg.jpg" alt="openwysiwyg: Free cross browser wysiwyg editor" width="500" height="246" /&gt;&lt;/p&gt;
&lt;h3&gt;8. &lt;a title="Free Rich Text Editor" href="http://freerichtexteditor.com/" target="_blank"&gt;Free Rich Text Editor&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Free Rich Text Editor is an extremely easy to use FREE javascript based HTML WYSIWYG editor for your website. It is easy to implement and manage to output XHTML compliant code.&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-976" title="Free Rich Text Editor" src="http://ooyes.net/userfiles/media/downloaded/15-really-useful-web-based-html-editors-2009071711071442-free-rich-text-editor_jpg.jpg" alt="Free Rich Text Editor" width="500" height="382" /&gt;&lt;/p&gt;
&lt;h3&gt;9. &lt;a title="WMD: The Wysiwym Markdown Editor" href="http://wmd-editor.com/" target="_blank"&gt;WMD: The Wysiwym Markdown Editor&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;WMD is a simple and lightweight HTML editor which can be used in blog comment section or forum posts.&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-977" title="WMD: The Wysiwym Markdown Editor" src="http://ooyes.net/userfiles/media/downloaded/15-really-useful-web-based-html-editors-2009071711071442-wmd_jpg.jpg" alt="WMD: The Wysiwym Markdown Editor" width="500" height="286" /&gt;&lt;/p&gt;
&lt;h3&gt;10. &lt;a title="TTW HTML Editor" href="http://koivi.com/WYSIWYG-Editor/" target="_blank"&gt;TTW HTML Editor&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;TTW HTML Editor is a very simple wysiwyg html editor that powered by javascript. Its spell checking feature is powered by SpellerPages, which can easily being implemented by adding parameter to the editor.&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-978" title="TTW HTML Editor" src="http://ooyes.net/userfiles/media/downloaded/15-really-useful-web-based-html-editors-2009071711071442-ttw-html-editor_jpg.jpg" alt="TTW HTML Editor" width="500" height="313" /&gt;&lt;/p&gt;
&lt;h3&gt;11. &lt;a title="Free Text Box" href="http://freetextbox.com/" target="_blank"&gt;Free Text Box&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;FreeTextBox is the most-used HTML editor for ASP.NET. It is compatible with IE on the PC, and Mozilla and Firefox on all platforms.&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-979" title="Free Text Box" src="http://ooyes.net/userfiles/media/downloaded/15-really-useful-web-based-html-editors-2009071711071442-free-text-box_jpg.jpg" alt="Free Text Box" width="500" height="378" /&gt;&lt;/p&gt;
&lt;h3&gt;12. &lt;a title="WYMeditor" href="http://www.wymeditor.org/" target="_blank"&gt;WYMeditor&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;WYMeditor is a web based XHTML editor. WYMeditor has been created to generate perfectly structured XHTML strict code, to conform to the W3C XHTML specifications and to facilitate further processing by modern applications.&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-980" title="WYMeditor" src="http://ooyes.net/userfiles/media/downloaded/15-really-useful-web-based-html-editors-2009071711071442-wymeditor_jpg.jpg" alt="WYMeditor" width="500" height="203" /&gt;&lt;/p&gt;
&lt;h3&gt;13. &lt;a title="BlueShoes Wysiwyg Editor" href="http://www.blueshoes.org/en/javascript/editor/" target="_blank"&gt;BlueShoes Wysiwyg Editor&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;It is a DHTML and Javascript based editor which has a lot of cool features. For example, user can easily resize the editor, select special characters, and pick color using the color picker tool.&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-981" title="BlueShoes Wysiwyg Editor" src="http://ooyes.net/userfiles/media/downloaded/15-really-useful-web-based-html-editors-2009071711071442-blueshoes-wysiwys-editor_jpg.jpg" alt="BlueShoes Wysiwyg Editor" width="500" height="350" /&gt;&lt;/p&gt;
&lt;h3&gt;14. &lt;a title="markItUp" href="http://markitup.jaysalvat.com/home/" target="_blank"&gt;markItUp&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;markItUp! is a JavaScript plugin built on the jQuery library. It is very lightweight and very customizable. You can even define your favorite keyboard shortcuts, which adds extra user friendly feature.&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-982" title="markItUp! Universal markup editor" src="http://ooyes.net/userfiles/media/downloaded/15-really-useful-web-based-html-editors-2009071711071442-mark-it-up_jpg.jpg" alt="markItUp! Universal markup editor" width="500" height="341" /&gt;&lt;/p&gt;
&lt;h3&gt;15. &lt;a title="SPAW Editor" href="http://spaweditor.com/en/disp.php/en_products/en_spaw/en_spaw_intro" target="_blank"&gt;SPAW Editor&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;It is a web based WYSIWYG editor which had tabbed multi-document interface, floating/shared toolbars and a very cool interface. It is available in PHP and .NET versions.&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-983" title="spaw-editor" src="http://ooyes.net/userfiles/media/downloaded/15-really-useful-web-based-html-editors-2009071711071442-spaw-editor_jpg.jpg" alt="spaw-editor" width="500" height="418" /&gt;
&lt;ul&gt;
&lt;li&gt;No Related Post&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/69hMgPuFFBlxrI7jw7s1ZyYq5Gw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/69hMgPuFFBlxrI7jw7s1ZyYq5Gw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/69hMgPuFFBlxrI7jw7s1ZyYq5Gw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/69hMgPuFFBlxrI7jw7s1ZyYq5Gw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=Ol82t4brPxE:xxWytRi9S5k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=Ol82t4brPxE:xxWytRi9S5k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=Ol82t4brPxE:xxWytRi9S5k:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=Ol82t4brPxE:xxWytRi9S5k:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=Ol82t4brPxE:xxWytRi9S5k:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/Ol82t4brPxE" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 17 Jul 2009 11:07:20 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/15-really-useful-web-based-html-editors</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/xxWytRi9S5k/15-really-useful-web-based-html-editors</feedburner:origLink></item>

        
        
        <item>

          <title>Add Progressive Icons to Your Site Using :after pseudo-element</title>
          <link>http://feedproxy.google.com/~r/massmediagroup_full/~3/gSsn5vf6AFw/add-progressive-icons-to-your-site-using-after-pseudo-element</link>
          <guid isPermaLink="false"><![CDATA[http://ooyes.net/blog/add-progressive-icons-to-your-site-using-after-pseudo-element]]></guid>
		 


          <description>&lt;p&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/add-progressive-icons-to-your-site-using-after-pseudo-element-2009071710311778-progressive-icons-large_jpg.jpg" alt="progressive-icons-large" title="progressive-icons-large" width="575" height="332" class="paddedborder" /&gt;&lt;/p&gt;
&lt;h2&gt;Preview &amp;#038; Files&lt;/h2&gt;
&lt;p&gt;Before we get started, check out a &lt;a href="http://www.myinkblog.com/live/progressive-icons" target="_blank"&gt;preview&lt;/a&gt; of what we are trying to accomplish, and grab &lt;a href="http://www.myinkblog.com/wp-content/freebies/progressive-icons.zip"&gt;the files&lt;/a&gt; to follow along. Ideally enough, the previous sentence was a preview in its own right.&lt;/p&gt;
&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;Lately, I&amp;#8217;ve been getting more and more into designing with &lt;a href="http://www.alistapart.com/articles/progressiveenhancementwithcss/"&gt;progressive enhancements&lt;/a&gt; in mind. I think it&amp;#8217;s a combination of &lt;del&gt;forward&lt;/del&gt; wishful thinking, and a &lt;a href="http://po-ru.com/diary/ie6-not-on-my-internet/"&gt;spiteful attitude towards IE&lt;/a&gt;. It&amp;#8217;s also encouraging that over 67% of this blog&amp;#8217;s readership browses through on Firefox, and only 13.5% do so in IE. No doubt that&amp;#8217;s shifted my thinking and gives me the confidence to play around with some of the cool new features of &lt;a href="http://www.css3.info/"&gt;CSS3&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the steps that follow I&amp;#8217;ll show you how to add descriptive icons to your links using a CSS &lt;a href="http://www.456bereastreet.com/archive/200509/css_21_selectors_part_1/"&gt;pseudo selector element&lt;/a&gt;. Pseudo selectors were introduced back in &lt;a href="http://www.w3.org/TR/CSS2/"&gt;CSS 2.1&lt;/a&gt;, but the fine folks at IE still haven&amp;#8217;t adopted them. This small progressive enhancement greatly improves a site&amp;#8217;s usability by helping the user understand what type of link they would be clicking. In the end I&amp;#8217;ll reluctantly show you how to make things work in IE using a background image. &lt;/p&gt;
&lt;h2&gt;How It&amp;#8217;s Done&lt;/h2&gt;
&lt;p&gt;In the demo, I styled PDFs, Word docs, and external links, but conceivably you could assign an icon to any file extension that you can think of. First, you&amp;#8217;ll need an icon. There are lots of places to find cool icons, but my overwhelming favorite has become &lt;a href="http://www.iconfinder.net/"&gt;Iconfinder&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After grabbing the icon that you need, you can assign it to a file type in the CSS. Let&amp;#8217;s take a look at the styling for PDF&amp;#8217;s&amp;#8230;&lt;/p&gt;

&lt;div&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;1
2
3
4
&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre&gt;a&lt;span&gt;&amp;#91;&lt;/span&gt;href$&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;#039;.pdf&amp;#039;&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;:after &lt;/span&gt;&lt;span&gt;&amp;#123;&lt;/span&gt;
	&lt;span&gt;content&lt;/span&gt;&lt;span&gt;:&lt;/span&gt; &lt;span&gt;url&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;../images/pdf.png&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
	&lt;span&gt;margin-left&lt;/span&gt;&lt;span&gt;:&lt;/span&gt; &lt;span&gt;3px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Awesomely enough, this syntax will work in just the way you might imagine. We tell the css to look for any files that end in .pdf and assign an image with a 3px margin on the left.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s beautifully simple, and in an ideal world that would be all you&amp;#8217;d have to code. I suppose if you consider the very nature of progressive enhancements we could stop there. Afterall, the site will look just fine in IE, and those users will never know the icons should be there at all. But considering the somewhat depressing general &lt;a href="http://www.w3counter.com/globalstats.php"&gt;browser statistics&lt;/a&gt; for June 2009 we should probably push further.&lt;/p&gt;
&lt;h2&gt;Getting IE to Behave&lt;/h2&gt;
&lt;p&gt;So how do we get things working in IE? Well, first we have to offer up a new stylesheet if the browser is determined to be IE. To do so, we can drop this handy little if statement in the head of our document.&lt;/p&gt;

&lt;div&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;1
2
3
&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre&gt;&amp;#60;!--[if IE]&amp;#62;
&amp;#60;link rel=&amp;#34;stylesheet&amp;#34; type=&amp;#34;text/css&amp;#34; href=&amp;#34;css/ie.css&amp;#34; /&amp;#62;
&amp;#60;![endif]--&amp;#62;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The CSS is also pretty simple; we just use a background image instead of a pseudo selector. Take a look&amp;#8230;&lt;/p&gt;

&lt;div&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;1
2
3
4
&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre&gt;a&lt;span&gt;&amp;#91;&lt;/span&gt;href$&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;#039;.pdf&amp;#039;&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
	&lt;span&gt;background&lt;/span&gt;&lt;span&gt;:&lt;/span&gt; &lt;span&gt;transparent&lt;/span&gt; &lt;span&gt;url&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;../images/icons/pdf.png&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;no-repeat&lt;/span&gt; &lt;span&gt;center&lt;/span&gt; &lt;span&gt;right&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
	&lt;span&gt;padding&lt;/span&gt;&lt;span&gt;:&lt;/span&gt; &lt;span&gt;0&lt;/span&gt; &lt;span&gt;20px&lt;/span&gt; &lt;span&gt;0&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;The IE Issue&lt;/h2&gt;
&lt;p&gt;The main drawback with using a background image with a position &amp;#8216;right&amp;#8217; attribute is how the styling breaks down if the link extends to more than one line. Despite this setback, the icons look good most of the time in IE and will only really be an issue on skinny columns. Perhaps this is best described with an illustration.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://ooyes.net/userfiles/media/downloaded/add-progressive-icons-to-your-site-using-after-pseudo-element-2009071710311778-ie-issue_jpg.jpg" alt="ie-issue" title="ie-issue" width="575" height="150" class="paddedborder" /&gt;&lt;/p&gt;
&lt;h2&gt;Showing A Little Class&lt;/h2&gt;
&lt;p&gt;With the way the selectors are set up for external links, the css will drop an icon in for any outgoing link. Which looks great on image links, but looks ugly on image links. To fix this issue you can make a no-icon class for your images to override the selectors, or you can make a class for external links and assign that class to the links that you&amp;#8217;d like to display an icon for. Although this option is less dynamic, I like the added control.&lt;/p&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;Are you starting to use progressive enhancements on your site? What CSS3 changes are you most excited about?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QBo9J0PiOSXa22649tSfMzg1XA4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QBo9J0PiOSXa22649tSfMzg1XA4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QBo9J0PiOSXa22649tSfMzg1XA4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QBo9J0PiOSXa22649tSfMzg1XA4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=gSsn5vf6AFw:6Gcx4c9i71A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=gSsn5vf6AFw:6Gcx4c9i71A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=gSsn5vf6AFw:6Gcx4c9i71A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/massmediagroup_full?a=gSsn5vf6AFw:6Gcx4c9i71A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/massmediagroup_full?i=gSsn5vf6AFw:6Gcx4c9i71A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/massmediagroup_full/~4/gSsn5vf6AFw" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 17 Jul 2009 10:31:18 -0700</pubDate>
        <feedburner:origLink>http://ooyes.net/blog/add-progressive-icons-to-your-site-using-after-pseudo-element</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/massmediagroup/~3/6Gcx4c9i71A/add-progressive-icons-to-your-site-using-after-pseudo-element</feedburner:origLink></item>

        
        
    </channel></rss>
