<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://www.smashingmagazine.com/wp-atom.php">
    <title type="text">Smashing Magazine Feed</title>
    <subtitle type="text">For Professional Web Designers and Developers</subtitle>

    <updated>2012-06-01T07:26:01Z</updated>
            

    <link rel="alternate" type="text/html" href="http://www.smashingmagazine.com" />
    <id>http://www.smashingmagazine.com/feed/atom/</id>
    

            
                <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/SmashingMagazine" /><feedburner:info uri="smashingmagazine" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
        <author>
            <name>Smashing Editorial</name>
                                    <uri>http://www.smashingmagazine.com</uri>
                    </author>
        <title type="html"><![CDATA[Desktop Wallpaper Calendar: June 2012]]></title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SmashingMagazine/~3/_mx284zwoJ8/" />
        <id>http://www.smashingmagazine.com/?p=133855</id>
        <updated>2012-05-31T13:04:51Z</updated>
        <published>2012-05-31T12:32:36Z</published>
            <category scheme="http://www.smashingmagazine.com" term="Graphics" /><category scheme="http://www.smashingmagazine.com" term="Wallpapers" />        <summary type="html"><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=1" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=2" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=3" border="0" alt="" /></a>
    </div></td></tr></table>
<p>We always try our best to challenge your artistic abilities and produce some interesting, beautiful and creative artwork. And as designers we usually turn to different sources of inspiration. As a matter of fact, we’ve discovered the best one — <strong>desktop wallpapers</strong> that are a little more distinctive than the usual crowd.</p>

<p><a href="http://www.smashingmagazine.com/2012/05/31/desktop-wallpaper-calendar-june-2012/"><img width="500" height="312" alt="Smashing Wallpaper - June 2012" src="http://files.smashingmagazine.com/wallpapers/june-12/images/without_angry__34.png" /></a></p> 

<p>This creativity mission has been going on for over four years now, and we are very thankful to all designers who have contributed and are still diligently contributing each month. This post features <strong>free desktop wallpapers</strong> created by artists across the globe for June 2012. Both versions with a calendar and without a calendar can be downloaded for free. It’s time to freshen up your wallpaper!</p>

<p>Please note that:</p>
<ul>
	<li>All <strong>images can be clicked on</strong> and lead to the preview of the wallpaper,</li>
	<li>You can <a href="http://www.smashingmagazine.com/2008/03/19/desktop-wallpaper-calendar-join-in/">feature your work in our magazine</a> by taking part in our Desktop Wallpaper Calendar series. We are regularly looking for creative designers and artists to be featured on Smashing Magazine. Are you one of them?</li>
</ul>]]></summary>
                    <content type="html" xml:base="http://www.smashingmagazine.com/2012/05/31/desktop-wallpaper-calendar-june-2012/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yqqM66xtMJs1OSwDGyxw_7WOBqY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yqqM66xtMJs1OSwDGyxw_7WOBqY/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/yqqM66xtMJs1OSwDGyxw_7WOBqY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yqqM66xtMJs1OSwDGyxw_7WOBqY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;table width="650"&gt;
&lt;tr&gt;
&lt;td width="650"&gt;
&lt;div style="width:650px;"&gt;
      &lt;img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /&gt;&lt;br /&gt;
      &lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=1" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=1" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=2" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=2" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=3" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=3" border="0" alt="" /&gt;&lt;/a&gt;
    &lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;We always try our best to challenge your artistic abilities and produce some interesting, beautiful and creative artwork. And as designers we usually turn to different sources of inspiration. As a matter of fact, we’ve discovered the best one—&lt;strong&gt;desktop wallpapers&lt;/strong&gt; that are a little more distinctive than the usual crowd.&lt;/p&gt;
&lt;p&gt;This creativity mission has been going on for over four years now, and we are very thankful to all designers who have contributed and are still diligently contributing each month. This post features &lt;strong&gt;free desktop wallpapers&lt;/strong&gt; created by artists across the globe for June 2012. Both versions with a calendar and without a calendar can be downloaded for free. It’s time to freshen up your wallpaper!&lt;/p&gt;
&lt;p&gt;Please note that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;All &lt;strong&gt;images can be clicked on&lt;/strong&gt; and lead to the preview of the wallpaper,&lt;/li&gt;
&lt;li&gt;You can &lt;a href="http://www.smashingmagazine.com/2008/03/19/desktop-wallpaper-calendar-join-in/"&gt;feature your work in our magazine&lt;/a&gt; by taking part in our Desktop Wallpaper Calendar series. We are regularly looking for creative designers and artists to be featured on Smashing Magazine. Are you one of them?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="without_angry__34"&gt;Without Angry&lt;/h3&gt;
&lt;p&gt;&amp;quot;This bird is cool not angry :-).&amp;quot; Designed by &lt;a href="http://www.tinjo.in"&gt;Tinjo Thomas&lt;/a&gt; from India.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/without_angry__34.png"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/without_angry__34.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/without_angry__34.png"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-without_angry__34-calendar-320x480.png"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-without_angry__34-calendar-1024x1024.png"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-without_angry__34-calendar-1280x1024.png"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-without_angry__34-calendar-1366x768.png"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-without_angry__34-calendar-1440x900.png"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-without_angry__34-calendar-1680x1050.png"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-without_angry__34-calendar-1920x1080.png"&gt;1920&amp;times;1080&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-without_angry__34-nocal-320x480.png"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-without_angry__34-nocal-1024x1024.png"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-without_angry__34-nocal-1280x1024.png"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-without_angry__34-nocal-1366x768.png"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-without_angry__34-nocal-1440x900.png"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-without_angry__34-nocal-1680x1050.png"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-without_angry__34-nocal-1920x1080.png"&gt;1920&amp;times;1080&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="hello_summer__66"&gt;Hello Summer&lt;/h3&gt;
&lt;p&gt;&amp;quot;Flying people are saying hello to summer.&amp;quot; Designed by &lt;a href="http://www.capcan.net"&gt;Paul Capcan&lt;/a&gt; from Moldova.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/hello_summer__66.jpg"&gt;&lt;img width="500" height="281" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/hello_summer__66.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/hello_summer__66.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-hello_summer__66-calendar-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-hello_summer__66-calendar-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-hello_summer__66-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-hello_summer__66-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-hello_summer__66-calendar-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-hello_summer__66-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-hello_summer__66-nocal-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-hello_summer__66-nocal-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-hello_summer__66-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-hello_summer__66-nocal-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-hello_summer__66-nocal-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-hello_summer__66-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="chromatic_baba__95"&gt;Chromatic Baba&lt;/h3&gt;
&lt;p&gt;&amp;quot;Baba(sadhu) is the Hindu ascetic who has renounced caste, social position, money, and authority and occupies a special place in Hindu society.He absorbed all colors from a spiritual life, devoid of material pleasure, mostly engaged in visiting holy places.&amp;quot; Designed by &lt;a href="http://www.behance.net/yoshita"&gt;Yoshita Singhai&lt;/a&gt; from India.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/chromatic_baba__95.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/chromatic_baba__95.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/chromatic_baba__95.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-calendar-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-calendar-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-calendar-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-calendar-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-nocal-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-nocal-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-nocal-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-nocal-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-nocal-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-chromatic_baba__95-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="fontstache__72"&gt;Fontstache&lt;/h3&gt;
&lt;p&gt;&amp;quot;This piece pays homage to Mr. Roger Hargreaves, creative kids author to such imaginative stories as Mr. Messy and my personal favourite: Mr. Bounce.We utilized the &amp;#8216;Curly Brackets&amp;#8217; and titled each according to the font type that was used. Appropriate for the month of June as we celebrate Father&amp;#8217;s Day this month.&amp;quot; Designed by &lt;a href="http://www.popupfactory.com"&gt;Pop Up Factory&lt;/a&gt; from Milton, Ontario, Canada.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/fontstache__72.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/fontstache__72.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/fontstache__72.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-800x480.jpg"&gt;800&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-800x600.jpg"&gt;800&amp;times;600&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-1152x864.jpg"&gt;1152&amp;times;864&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-1280x720.jpg"&gt;1280&amp;times;720&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-1280x960.jpg"&gt;1280&amp;times;960&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-1400x1050.jpg"&gt;1400&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-1600x1200.jpg"&gt;1600&amp;times;1200&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-1680x1200.jpg"&gt;1680&amp;times;1200&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-1920x1440.jpg"&gt;1920&amp;times;1440&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-calendar-2560x1440.jpg"&gt;2560&amp;times;1440&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-800x480.jpg"&gt;800&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-800x600.jpg"&gt;800&amp;times;600&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-1152x864.jpg"&gt;1152&amp;times;864&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-1280x720.jpg"&gt;1280&amp;times;720&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-1280x960.jpg"&gt;1280&amp;times;960&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-1400x1050.jpg"&gt;1400&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-1600x1200.jpg"&gt;1600&amp;times;1200&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-1680x1200.jpg"&gt;1680&amp;times;1200&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-1920x1440.jpg"&gt;1920&amp;times;1440&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fontstache__72-nocal-2560x1440.jpg"&gt;2560&amp;times;1440&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="gonutsfordonuts__86"&gt;Go Nuts For Donuts&lt;/h3&gt;
&lt;p&gt;Designed by &lt;a href="http://www.bonniebladen.com"&gt;Bonnie Bladen&lt;/a&gt; from USA.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/gonutsfordonuts__86.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/gonutsfordonuts__86.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/gonutsfordonuts__86.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-gonutsfordonuts__86-calendar-1366x768.jpg"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-gonutsfordonuts__86-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-gonutsfordonuts__86-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-gonutsfordonuts__86-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-gonutsfordonuts__86-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-gonutsfordonuts__86-nocal-1366x768.jpg"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-gonutsfordonuts__86-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-gonutsfordonuts__86-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-gonutsfordonuts__86-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-gonutsfordonuts__86-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="brjs__91"&gt;Brjs &amp;#8211; Playing Cards&lt;/h3&gt;
&lt;p&gt;Designed by &lt;a href="http://www.gisebla.com.ar"&gt;Gisela Eblagon&lt;/a&gt; from Argentina.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/brjs__91.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/brjs__91.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/brjs__91.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-brjs__91-calendar-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-brjs__91-calendar-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-brjs__91-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-brjs__91-calendar-1366x768.jpg"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-brjs__91-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-brjs__91-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-brjs__91-calendar-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-brjs__91-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-brjs__91-nocal-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-brjs__91-nocal-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-brjs__91-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-brjs__91-nocal-1366x768.jpg"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-brjs__91-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-brjs__91-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-brjs__91-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="sunset__71"&gt;Sunset In Jamaica&lt;/h3&gt;
&lt;p&gt;&amp;quot;Photo from a recent trip to Jamaica edited to give a retro look and feel.&amp;quot; Designed by &lt;a href="http://www.tdigiovanni.com"&gt;Tommy Digiovanni&lt;/a&gt; from USA.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/sunset__71.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/sunset__71.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/sunset__71.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-calendar-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-calendar-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-calendar-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-calendar-1280x720.jpg"&gt;1280&amp;times;720&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-calendar-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-calendar-2560x1440.jpg"&gt;2560&amp;times;1440&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-nocal-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-nocal-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-nocal-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-nocal-1280x720.jpg"&gt;1280&amp;times;720&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-nocal-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-sunset__71-nocal-2560x1440.jpg"&gt;2560&amp;times;1440&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="beach__17"&gt;Beach&lt;/h3&gt;
&lt;p&gt;Designed by &lt;a href="http://www.lotum.de"&gt;Lotum&lt;/a&gt; from Germany.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/beach__17.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/beach__17.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/beach__17.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-calendar-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-calendar-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-calendar-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-nocal-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-nocal-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-nocal-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-nocal-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-beach__17-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="dreams__42"&gt;Dreams&lt;/h3&gt;
&lt;p&gt;&amp;quot;This is the summer of dreams. Go get them!&amp;quot; Designed by &lt;a href="http://www.stungmedia.com"&gt;Nandor Tamas&lt;/a&gt; from USA.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/dreams__42.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/dreams__42.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/dreams__42.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-dreams__42-calendar-1280x720.jpg"&gt;1280&amp;times;720&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-dreams__42-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-dreams__42-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-dreams__42-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-dreams__42-calendar-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-dreams__42-nocal-1280x720.jpg"&gt;1280&amp;times;720&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-dreams__42-nocal-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-dreams__42-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-dreams__42-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-dreams__42-nocal-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="friendly_fire__72"&gt;Friendly Fire&lt;/h3&gt;
&lt;p&gt;Designed by &lt;a href="http://blog.szaboka.hu"&gt;Roland Szabo&lt;/a&gt; from Hungary.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/friendly_fire__72.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/friendly_fire__72.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/friendly_fire__72.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-friendly_fire__72-calendar-1280x720.jpg"&gt;1280&amp;times;720&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-friendly_fire__72-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-friendly_fire__72-calendar-1366x768.jpg"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-friendly_fire__72-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-friendly_fire__72-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-friendly_fire__72-calendar-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-friendly_fire__72-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-friendly_fire__72-nocal-1280x720.jpg"&gt;1280&amp;times;720&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-friendly_fire__72-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-friendly_fire__72-nocal-1366x768.jpg"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-friendly_fire__72-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-friendly_fire__72-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-friendly_fire__72-nocal-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-friendly_fire__72-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="june_romance__57"&gt;June Romance&lt;/h3&gt;
&lt;p&gt;&amp;quot;Mark and Jenny Linn are, perhaps, the dreamiest and the most romantic couple in the whole world. Their love story began in a vintage San Francisco bookstore 5 years ago and continues till the present day. In June Mark and Jenny usually arrange aspecial dinner to watch the night sky and make a common wish for the future, while watching the falling star.&amp;quot; Designed by &lt;a href="http://www.4shared.com/"&gt;Maria S.&lt;/a&gt; from USA.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/june_romance__57.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/june_romance__57.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/june_romance__57.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-calendar-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-calendar-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-calendar-1366x768.jpg"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-calendar-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-nocal-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-nocal-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-nocal-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-nocal-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-nocal-1366x768.jpg"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-nocal-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_romance__57-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="magic_night__22"&gt;Magic Night&lt;/h3&gt;
&lt;p&gt;Designed by &lt;a href="http://mloved.pl/"&gt;Mateusz Mackowiak&lt;/a&gt; from Poland.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/magic_night__22.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/magic_night__22.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/magic_night__22.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-magic_night__22-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-magic_night__22-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-magic_night__22-calendar-1366x768.jpg"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-magic_night__22-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-magic_night__22-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-magic_night__22-calendar-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-magic_night__22-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-magic_night__22-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-magic_night__22-nocal-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-magic_night__22-nocal-1366x768.jpg"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-magic_night__22-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-magic_night__22-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-magic_night__22-nocal-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-magic_night__22-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="africa__73"&gt;Africa&lt;/h3&gt;
&lt;p&gt;Designed by &lt;a href="http://www.cheloveche.ru"&gt;Cheloveche.ru&lt;/a&gt; from Russia.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/africa__73.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/africa__73.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/africa__73.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-africa__73-calendar-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-africa__73-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-africa__73-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-africa__73-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-africa__73-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-africa__73-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-africa__73-nocal-395x512.jpg"&gt;395&amp;times;512&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-africa__73-nocal-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-africa__73-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-africa__73-nocal-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-africa__73-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-africa__73-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-africa__73-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="fruit_ninja__60"&gt;Fruit Ninja Did This&lt;/h3&gt;
&lt;p&gt;Designed by &lt;a href="http://yootfolio.tumblr.com"&gt;Ioana Bitin (aka Yoot)&lt;/a&gt; from Romania.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/fruit_ninja__60.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/fruit_ninja__60.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/fruit_ninja__60.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fruit_ninja__60-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fruit_ninja__60-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fruit_ninja__60-calendar-1366x768.jpg"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fruit_ninja__60-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fruit_ninja__60-calendar-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fruit_ninja__60-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fruit_ninja__60-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fruit_ninja__60-nocal-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fruit_ninja__60-nocal-1366x768.jpg"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fruit_ninja__60-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fruit_ninja__60-nocal-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-fruit_ninja__60-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="nagraj__97"&gt;Basketball Nagraj&lt;/h3&gt;
&lt;p&gt;&amp;quot;Nagraj is an comic superhero in India. In this wallpaper i shows &amp;#8220;Nagraj with BasketBall&amp;#8221;. I made this a little fun because in india june is a Holiday season for children.Hi,It&amp;#8217;s my first time i am submitting my wallpaper in smashing magazine. I hope you like the concept. In this i show Nagraj as a basketball. Nagraj is an comic superhero in India. I made this a little funny because in india june is a Holiday season for children.&amp;quot; Designed by &lt;a href="http://alienchela.com/"&gt;Sandeep Virk&lt;/a&gt; from India.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/nagraj__97.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/nagraj__97.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/nagraj__97.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-nagraj__97-calendar-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-nagraj__97-calendar-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-nagraj__97-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-nagraj__97-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-nagraj__97-calendar-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-nagraj__97-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-nagraj__97-nocal-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-nagraj__97-nocal-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-nagraj__97-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-nagraj__97-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-nagraj__97-nocal-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-nagraj__97-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="retro_smile__21"&gt;Retro Smile&lt;/h3&gt;
&lt;p&gt;&amp;quot;This is the retro photography of my aunt from 1964 photographed in the beautiful village near the city Nis in Serbia.&amp;quot; Designed by &lt;a href="http://www.marijazaric.com"&gt;Marija Zaric&lt;/a&gt; from Serbia.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/retro_smile__21.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/retro_smile__21.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/retro_smile__21.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-retro_smile__21-calendar-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-retro_smile__21-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-retro_smile__21-calendar-1280x960.jpg"&gt;1280&amp;times;960&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-retro_smile__21-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-retro_smile__21-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-retro_smile__21-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-retro_smile__21-nocal-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-retro_smile__21-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-retro_smile__21-nocal-1280x960.jpg"&gt;1280&amp;times;960&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-retro_smile__21-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-retro_smile__21-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-retro_smile__21-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="vidovdan__47"&gt;Vidovdan &amp;#8211; Folk Festival&lt;/h3&gt;
&lt;p&gt;Designed by &lt;a href="http://www.tihomirbudic.com"&gt;Tihomir Budic&lt;/a&gt; from BiH/Republika Srpska.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/vidovdan__47.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/vidovdan__47.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/vidovdan__47.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-calendar-480x800.jpg"&gt;480&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-calendar-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-calendar-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-calendar-1366x768.jpg"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-calendar-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-nocal-480x800.jpg"&gt;480&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-nocal-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-nocal-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-nocal-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-nocal-1366x768.jpg"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-nocal-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-vidovdan__47-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="i_need_holidays__43"&gt;I Need Holidays&lt;/h3&gt;
&lt;p&gt;&amp;quot;After a busy year, we need a long vacation!&amp;quot; Designed by &lt;a href="http://www.gopango.com/"&gt;Gopango Networks&lt;/a&gt; from Spain.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/i_need_holidays__43.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/i_need_holidays__43.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/i_need_holidays__43.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-i_need_holidays__43-calendar-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-i_need_holidays__43-calendar-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-i_need_holidays__43-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-i_need_holidays__43-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-i_need_holidays__43-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-i_need_holidays__43-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-i_need_holidays__43-calendar-2560x1440.jpg"&gt;2560&amp;times;1440&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-i_need_holidays__43-nocal-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-i_need_holidays__43-nocal-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-i_need_holidays__43-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-i_need_holidays__43-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-i_need_holidays__43-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-i_need_holidays__43-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-i_need_holidays__43-nocal-2560x1440.jpg"&gt;2560&amp;times;1440&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="out_of_the_box__19"&gt;Out Of The Box&lt;/h3&gt;
&lt;p&gt;&amp;quot;Release your creativity!&amp;quot; Designed by &lt;a href="http://iamajan.com"&gt;Ajan Navaratnasingam&lt;/a&gt; from London, UK.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/out_of_the_box__19.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/out_of_the_box__19.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/out_of_the_box__19.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-calendar-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-calendar-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-calendar-1400x900.jpg"&gt;1400&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-calendar-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-nocal-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-nocal-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-nocal-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-nocal-1400x900.jpg"&gt;1400&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-nocal-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-out_of_the_box__19-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="june_charts__38"&gt;Fete De La Musique&lt;/h3&gt;
&lt;p&gt;&amp;quot;La Fete de la Musique, also known as World Music Day, is a music festival taking place on June 21, read more on wikipedia.&amp;quot; Designed by &lt;a href="http://mondedesign.net"&gt;Sherif Saleh&lt;/a&gt; from France.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/june_charts__38.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/june_charts__38.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/june_charts__38.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-640x480.jpg"&gt;640&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-640x960.jpg"&gt;640&amp;times;960&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-800x480.jpg"&gt;800&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-800x600.jpg"&gt;800&amp;times;600&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-1152x864.jpg"&gt;1152&amp;times;864&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-1280x720.jpg"&gt;1280&amp;times;720&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-1280x960.jpg"&gt;1280&amp;times;960&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-1360x768.jpg"&gt;1360&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-1366x768.jpg"&gt;1366&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-1440x1050.jpg"&gt;1440&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-1600x1200.jpg"&gt;1600&amp;times;1200&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_charts__38-calendar-1680x1200.jpg"&gt;1680&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="june_pastures__11"&gt;June Pastures&lt;/h3&gt;
&lt;p&gt;Designed by &lt;a href="http://www.thedreamer.in"&gt;Nishant Sapra&lt;/a&gt; from India.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/june_pastures__11.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/june_pastures__11.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/june_pastures__11.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_pastures__11-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_pastures__11-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_pastures__11-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_pastures__11-calendar-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_pastures__11-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_pastures__11-nocal-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_pastures__11-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_pastures__11-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_pastures__11-nocal-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-june_pastures__11-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="girl__25"&gt;Illustration&lt;/h3&gt;
&lt;p&gt;&amp;quot;Vector hand drawing illustration of beautiful woman&amp;#8217;s face with flowers in her hair and floral pattern behind her.&amp;quot; Designed by &lt;a href="http://elmiko.daportfolio.com/"&gt;Jane Lane&lt;/a&gt; from Russia.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/girl__25.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/girl__25.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/girl__25.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-girl__25-calendar-800x1210.jpg"&gt;800&amp;times;1210&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-girl__25-calendar-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-girl__25-calendar-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-girl__25-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-girl__25-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-girl__25-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-girl__25-nocal-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-girl__25-nocal-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-girl__25-nocal-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-girl__25-nocal-1176x735.jpg"&gt;1176&amp;times;735&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-girl__25-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-girl__25-nocal-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="euro_2012__18"&gt;Euro 2012&lt;/h3&gt;
&lt;p&gt;Designed by &lt;a href="http://www.phpfaber.com.ua/portfolio"&gt;Katerina Bobkova&lt;/a&gt; from Ukraine.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/euro_2012__18.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/euro_2012__18.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/euro_2012__18.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-euro_2012__18-calendar-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-euro_2012__18-calendar-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-euro_2012__18-calendar-1024x1024.jpg"&gt;1024&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-euro_2012__18-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-euro_2012__18-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-euro_2012__18-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-euro_2012__18-calendar-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-euro_2012__18-nocal-320x480.jpg"&gt;320&amp;times;480&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-euro_2012__18-nocal-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-euro_2012__18-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-euro_2012__18-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-euro_2012__18-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-euro_2012__18-nocal-1920x1080.jpg"&gt;1920&amp;times;1080&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="paris_summer__53"&gt;Paris Summer&lt;/h3&gt;
&lt;p&gt;Designed by &lt;a href="http://www.softpae.com"&gt;Martina Pitбkovб&lt;/a&gt; from Slovakia.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/paris_summer__53.jpg"&gt;&lt;img width="500" height="312" alt="Smashing Wallpaper - june 12" src="http://files.smashingmagazine.com/wallpapers/june-12/images/paris_summer__53.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/images/full/paris_summer__53.jpg"&gt;preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;with calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-paris_summer__53-calendar-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-paris_summer__53-calendar-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-paris_summer__53-calendar-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-paris_summer__53-calendar-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-paris_summer__53-calendar-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-paris_summer__53-calendar-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-paris_summer__53-calendar-2036x1440.jpg"&gt;2036&amp;times;1440&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;without calendar:  &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-paris_summer__53-nocal-1024x768.jpg"&gt;1024&amp;times;768&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-paris_summer__53-nocal-1280x800.jpg"&gt;1280&amp;times;800&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-paris_summer__53-nocal-1280x1024.jpg"&gt;1280&amp;times;1024&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-paris_summer__53-nocal-1440x900.jpg"&gt;1440&amp;times;900&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-paris_summer__53-nocal-1680x1050.jpg"&gt;1680&amp;times;1050&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-paris_summer__53-nocal-1920x1200.jpg"&gt;1920&amp;times;1200&lt;/a&gt;, &lt;a href="http://files.smashingmagazine.com/wallpapers/june-12/june-12-paris_summer__53-nocal-2036x1440.jpg"&gt;2036&amp;times;1440&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Join In Next Month!&lt;/h3&gt;
&lt;p&gt;Please note that we respect and carefully consider the ideas and motivation behind each and every artist’s work. This is why we give all artists the &lt;strong&gt;full freedom to explore their creativity&lt;/strong&gt; and express emotions and experience throughout their works. This is also why the themes of the wallpapers weren’t anyhow influenced by us, but rather designed from scratch by the artists themselves.&lt;/p&gt;
&lt;p&gt;A big thank you to all designers for their participation. &lt;a href="http://www.smashingmagazine.com/2008/03/19/desktop-wallpaper-calendar-join-in/"&gt;Join in next month&lt;/a&gt;!&lt;/p&gt;
&lt;h4&gt;What’s Your Favourite?&lt;/h4&gt;
&lt;p&gt;What’s your favorite theme or wallpaper for this month? Please let us know in the comment section below.&lt;/p&gt;
&lt;p&gt;Stay creative and keep on smashing!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(il) (vf)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© Smashing Editorial for &lt;a href="http://www.smashingmagazine.com"&gt;Smashing Magazine&lt;/a&gt;, 2012.&lt;/small&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/_mx284zwoJ8" height="1" width="1"/&gt;</content>
                                                            <link rel="replies" type="text/html" href="http://www.smashingmagazine.com/2012/05/31/desktop-wallpaper-calendar-june-2012/#comments" thr:count="16" />
        <link rel="replies" type="application/atom+xml" href="http://www.smashingmagazine.com/2012/05/31/desktop-wallpaper-calendar-june-2012/feed/atom/" thr:count="16" />
        <thr:total>16</thr:total>
    <feedburner:origLink>http://www.smashingmagazine.com/2012/05/31/desktop-wallpaper-calendar-june-2012/</feedburner:origLink></entry>
            <entry>
        <author>
            <name>Sam Deering</name>
                                    <uri>http://www.jquery4u.com</uri>
                    </author>
        <title type="html"><![CDATA[Useful jQuery Function Demos For Your Projects]]></title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SmashingMagazine/~3/m6f5FI8S-v4/" />
        <id>http://mgmt.smashingmagazine.com/?p=133867</id>
        <updated>2012-05-31T17:03:08Z</updated>
        <published>2012-05-31T09:02:01Z</published>
            <category scheme="http://www.smashingmagazine.com" term="Coding" />        <summary type="html"><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=1" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=2" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=3" border="0" alt="" /></a>
    </div></td></tr></table>
<p>Every aspiring web developer should know about the power of JavaScript and how it can be used effectively to enhance the ways in which see and interact with web pages. Fortunately, to help us be more productive we can use the power of JavaScript Libraries and this article we will take a good look at jQuery in action.</p>

<p><a href="http://coding.smashingmagazine.com/2012/05/31/50-jquery-function-demos-for-aspiring-web-developers/"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/50-jQuery-Function-Demos.jpg" width="500" height="250" alt="50 jQuery Function Demos for Aspiring Web Developers" title="50 jQuery Function Demos for Aspiring Web Developers" /></a></p>

<p>In a nutshell, <strong>jQuery is a leading JavaScript Library</strong> that can perform wonders with your web pages and makes your web development life much easier and more enjoyable. The rise in popularity of jQuery since its arrival in 2006 has seen an estimated over 24 million websites (50% of the 10,000 most visited websites) currently reaping the benefits and as <a rel="nofollow" href="http://www.google.com/trends?q=mootools%2Cjquery%2Cprototype+js%2Cyui%2Cdojo&#38;ctab=0&#38;geo=all&#38;date=all&#38;sort=1" target="_blank&#34;">Google Trends</a> suggests it's the popular JavaScript Library of choice.</p>]]></summary>
                    <content type="html" xml:base="http://www.smashingmagazine.com/2012/05/31/50-jquery-function-demos-for-aspiring-web-developers/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Nhdp8v_u0aF4kwTpablPsg-24TY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Nhdp8v_u0aF4kwTpablPsg-24TY/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/Nhdp8v_u0aF4kwTpablPsg-24TY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Nhdp8v_u0aF4kwTpablPsg-24TY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;table width="650"&gt;
&lt;tr&gt;
&lt;td width="650"&gt;
&lt;div style="width:650px;"&gt;
      &lt;img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /&gt;&lt;br /&gt;
      &lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=1" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=1" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=2" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=2" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=3" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=3" border="0" alt="" /&gt;&lt;/a&gt;
    &lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Every aspiring Web developer should know about the power of JavaScript and how it can be used to enhance the ways in which people see and interact with Web pages. Fortunately, to help us be more productive, we can use the power of JavaScript libraries, and in this article we will take a good look at jQuery in action.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/50-jQuery-Function-Demos.jpg" alt="50 jQuery Function Demos for Aspiring Web Developers" title="50 jQuery Function Demos for Aspiring Web Developers" width="500" height="250" class="alignnone size-full wp-image-120108" /&gt;&lt;/p&gt;
&lt;div id="j4u-post" class="post"&gt;
&lt;!-- deleted script tag --&gt;&lt;/p&gt;
&lt;!-- deleted style tag --&gt;
&lt;h4&gt;What Is jQuery?&lt;/h4&gt;
&lt;p&gt;In a nutshell, &lt;strong&gt;jQuery is a leading JavaScript library&lt;/strong&gt; that can perform wonders on your Web pages and make your Web development life much easier and more enjoyable. With the rise in popularity of jQuery since its arrival in 2006, over an estimated 24 million websites (50% of them being the 10,000 most visited websites) currently reap the benefits, and as &lt;a rel="nofollow" href="http://www.google.com/trends?q=mootools%2Cjquery%2Cprototype+js%2Cyui%2Cdojo&amp;amp;ctab=0&amp;amp;geo=all&amp;amp;date=all&amp;amp;sort=1"&gt;Google Trends&lt;/a&gt; suggests, it’s the most popular JavaScript library.&lt;/p&gt;
&lt;p&gt;Thousands of Web developers worldwide use jQuery to innovate on their websites and stay up to date on trends. This surge has been influenced by several &lt;a rel="nofollow" href="http://www.jquery4u.com/articles/top-10-jquery-gurus-hit-internet/"&gt;jQuery gurus&lt;/a&gt; who have helped make jQuery what is today. I would like to personally thank these guys and gals for their hard work and would like to do my part to spread the news about JavaScript and jQuery. In this article, we’ll show you over &lt;strong&gt;50 of jQuery’s most renowned functions&lt;/strong&gt;, demonstrated with live visual examples. The jQuery library is comprehensive, so hopefully seeing these most frequently used functions in action will improve your understanding of how they can work together to produce excellent results.&lt;/p&gt;
&lt;h3&gt;jQuery And CSS&lt;/h3&gt;
&lt;p&gt;Styles play a big part in the look and feel of any website, and jQuery can help us change them dynamically. In this section, we will look at how jQuery can be used to dynamically add and remove style classes and entire cascading style sheets.&lt;/p&gt;
&lt;h4&gt;.css()&lt;/h4&gt;
&lt;p&gt;You can &lt;strong&gt;change your website’s styles dynamically&lt;/strong&gt; with jQuery’s &lt;a href="http://api.jquery.com/css/"&gt;.css()&lt;/a&gt; function. Either change styles that are already declared inline or in CSS files (such as &lt;code&gt;font-size&lt;/code&gt;, &lt;code&gt;color&lt;/code&gt;, &lt;code&gt;background-color&lt;/code&gt;, etc.) or create new styles for elements.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Change text color and background color&lt;/p&gt;
&lt;div class="demoarea" id="css1"&gt;
&lt;p style="font-size:24px;padding:10px;"&gt;Blue text with orange background&lt;/p&gt;
&lt;/div&gt;
&lt;p class="example"&gt;Demo: Add a style sheet&lt;/p&gt;
&lt;div class="demoarea" id="css2" style="padding:0;"&gt;&lt;/div&gt;
&lt;h4&gt;.addClass() and .toggleClass()&lt;/h4&gt;
&lt;p&gt;In addition to the &lt;code&gt;.css()&lt;/code&gt; function, you can &lt;strong&gt;apply currently defined CSS classes&lt;/strong&gt; by using the &lt;a href="http://api.jquery.com/addClass/"&gt;.addClass()&lt;/a&gt; function. Its counterpart function, &lt;code&gt;.removeClass()&lt;/code&gt;, reverses the action.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Add a CSS class to an element&lt;/p&gt;
&lt;p&gt;Click “Run demo” to add the styles to the button. Click “Reset” to remove the styles.&lt;/p&gt;
&lt;div class="demoarea" id="addClass"&gt;&lt;a href="#" class="clickmsgbtn"&gt;Anchor Button&lt;/a&gt;&lt;span class="clickmsg" style='display:none;color:green;margin-left:5px;background-image: url("http://media.smashingmagazine.com/wp-content/uploads/2011/11/twitter-eyes-closed.jpg");'&gt;Click!&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;The &lt;a href="http://api.jquery.com/toggleClass/"&gt;.toggleClass()&lt;/a&gt; function is a &lt;strong&gt;huge time-saver&lt;/strong&gt; for toggling a state on and off with CSS. The following example sets event handlers for &lt;code&gt;mouseenter&lt;/code&gt; (which applies the CSS class &lt;code&gt;img-hover&lt;/code&gt; to the image) and &lt;code&gt;mouseleave&lt;/code&gt; (which removes it).&lt;/p&gt;
&lt;p class="example"&gt;Demo: Toggle a CSS class on an element&lt;/p&gt;
&lt;div class="demoarea twittereyesclosed" id="toggleClass" style="width:640px;height:40px;background-color:#002D46;padding:10px;"&gt;&lt;/div&gt;
&lt;h3&gt;jQuery Animations And Effects&lt;/h3&gt;
&lt;p&gt;We can use jQuery to create some very smooth animations and effects with minimal effort. Animations and effects are always best demonstrated with examples, so let’s dive right in.&lt;/p&gt;
&lt;h4&gt;.animate()&lt;/h4&gt;
&lt;p&gt;The &lt;a href="http://api.jquery.com/animate/"&gt;.animate()&lt;/a&gt; function can be used to animate the movement and/or appearance of elements on a Web page. Let’s look at both. You may define the settings parameter with a set duration (in milliseconds) or any of the words &lt;code&gt;slow&lt;/code&gt;, &lt;code&gt;normal&lt;/code&gt; or &lt;code&gt;fast&lt;/code&gt;. The callback, which is the function that runs after the animation has finished, is optional.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Animate text&lt;/p&gt;
&lt;div class="demoarea" id="animate1" style="width:600px;height:35px;"&gt;&lt;/div&gt;
&lt;p class="example"&gt;Demo: Animate size&lt;/p&gt;
&lt;p&gt;Easily change the size of a div.&lt;/p&gt;
&lt;div class="demoarea" id="animate2" style="width:200px;height:0px;overflow:hidden;"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/jquery-books.jpg" alt="jquery books" /&gt;&lt;/div&gt;
&lt;p class="example"&gt;Demo: Animate movement&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;.animate()&lt;/code&gt; function is asynchronous, so &lt;strong&gt;multiple animations may run at the same time&lt;/strong&gt;. You can also use the &lt;code&gt;.stop()&lt;/code&gt; function to stop the animation. If you click “Run demo” and then “Reset” during the animation, it will demonstrate the &lt;code&gt;.stop()&lt;/code&gt; function.&lt;/p&gt;
&lt;div class="demoarea" id="animate3"&gt;
&lt;img id="car1" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/car1.jpg" alt="jquery car 1" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img id="car2" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/car2.jpg" alt="jquery car 2" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img id="car3" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/car3.jpg" alt="jquery car 3" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img id="car4" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/car4.jpg" alt="jquery car 4" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img id="car5" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/car5.jpg" alt="jquery car 5" /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Many pure JavaScript functions&lt;/strong&gt; are used frequently in animations, such as &lt;code&gt;setInterval()&lt;/code&gt;, &lt;code&gt;clearInterval()&lt;/code&gt;, &lt;code&gt;setTimeout()&lt;/code&gt; and &lt;code&gt;clearTimeout()&lt;/code&gt;. Once again, these functions are included in the list because understanding what they can do is important to supporting the jQuery’s animation functions.&lt;/p&gt;
&lt;h4&gt;setInterval() and clearInterval()&lt;/h4&gt;
&lt;p&gt;You can &lt;strong&gt;automate a task based on time&lt;/strong&gt; using the JavaScript &lt;code&gt;setInterval()&lt;/code&gt; function, which can be used to specify a regular time-based trigger.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Simple time counter&lt;/p&gt;
&lt;p&gt;Click “Run demo” to start the timer, and click “Reset” to stop it.&lt;/p&gt;
&lt;div class="demoarea" id="setInterval1"&gt;&lt;span class="counter" id="jquery4ucounter"&gt;0&lt;/span&gt; seconds elapsed&lt;/div&gt;
&lt;p class="example"&gt;Demo: Digital time display&lt;/p&gt;
&lt;div class="demoarea" id="setInterval2"&gt;&lt;span id="jq4uclock"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h4&gt;setTimeout() and clearTimeout()&lt;/h4&gt;
&lt;p&gt;You can also &lt;strong&gt;delay a task based on time&lt;/strong&gt; using the JavaScript &lt;code&gt;setTimeout()&lt;/code&gt; function, which can be set to wait for a specified length of time before running the code.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Do something after a specified length of time.&lt;/p&gt;
&lt;p&gt;Click “Run demo” to set the timeout and, click “Reset” to clear it.&lt;/p&gt;
&lt;div class="demoarea" id="setTimeout"&gt;This text will disappear after three seconds.&lt;/div&gt;
&lt;h4&gt;.slideToggle() and .fadeToggle()&lt;/h4&gt;
&lt;p&gt;jQuery provides various toggle functions that save us heaps of time when we want to &lt;strong&gt;bind related events to the same element&lt;/strong&gt;. For example, &lt;a href="http://api.jquery.com/slideToggle/"&gt;.slideToggle()&lt;/a&gt; binds both &lt;a href="http://api.jquery.com/slideUp/"&gt;.slideUp()&lt;/a&gt; and &lt;a href="http://api.jquery.com/slideDown/"&gt;.slideDown()&lt;/a&gt; to the element and also manages that state for us.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Slide an element in and out of view.&lt;/p&gt;
&lt;p&gt;Click “Run demo” to show the paragraph, and click again to hide.&lt;/p&gt;
&lt;div class="demoarea" id="slideToggle"&gt;
&lt;div class="readmore" style="display:none"&gt;Curabitur placerat commodo augue eget congue. Aliquam id ante leo. Duis at libero magna, at dignissim odio. Aliquam aliquet suscipit mollis. Pellentesque libero tortor, elementum id mattis vel, mattis eget metus. Nam convallis interdum imperdiet. Fusce at magna tellus. Sed mi ante, aliquam at accumsan ac, tristique sit amet dui. Aliquam eleifend molestie ligula. Vivamus eleifend, diam id tincidunt posuere, ipsum dui elementum sapien, posuere pulvinar risus neque id turpis. Nullam volutpat cursus libero, sit amet euismod justo eleifend vitae.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;.slideToggle()&lt;/code&gt; function is similar to &lt;code&gt;.slideToggle()&lt;/code&gt; but with a &lt;strong&gt;fading effect&lt;/strong&gt; that uses the &lt;code&gt;.fadeIn()&lt;/code&gt; and &lt;code&gt;.fadeOut()&lt;/code&gt; methods.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Fade an element in and out of view.&lt;/p&gt;
&lt;p&gt;Click “Run demo” to show the paragraph, and click again to hide it.&lt;/p&gt;
&lt;div class="demoarea" id="fadeToggle"&gt;
&lt;div class="readmore" style="display:none"&gt;Curabitur placerat commodo augue eget congue. Aliquam id ante leo. Duis at libero magna, at dignissim odio. Aliquam aliquet suscipit mollis. Pellentesque libero tortor, elementum id mattis vel, mattis eget metus. Nam convallis interdum imperdiet. Fusce at magna tellus. Sed mi ante, aliquam at accumsan ac, tristique sit amet dui. Aliquam eleifend molestie ligula. Vivamus eleifend, diam id tincidunt posuere, ipsum dui elementum sapien, posuere pulvinar risus neque id turpis. Nullam volutpat cursus libero, sit amet euismod justo eleifend vitae.&lt;/div&gt;
&lt;/div&gt;
&lt;h4&gt;.delay()&lt;/h4&gt;
&lt;p&gt;In this demonstration, we’ll mainly use jQuery’s awesome function-chaining ability by running the &lt;code&gt;.fadeOut()&lt;/code&gt;, &lt;code&gt;.fadeIn()&lt;/code&gt; and &lt;code&gt;.delay()&lt;/code&gt; functions together on the same element. This is very similar to the &lt;code&gt;setTimeout()&lt;/code&gt; function we saw earlier but without allowing us to easily interrupt the delay.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Use &lt;code&gt;.delay()&lt;/code&gt; to create a delay between function calls.&lt;/p&gt;
&lt;div class="demoarea" id="delay"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/alert-msg.jpg" alt="alert msg" /&gt;&lt;/div&gt;
&lt;h3&gt;jQuery And DOM Manipulation&lt;/h3&gt;
&lt;p&gt;The DOM (document object model) is all of the HTML content that you see on a website (text, images, container elements, etc.). We can use jQuery to &lt;strong&gt;perform wonders with the DOM&lt;/strong&gt; when all page elements have been loaded. The event that captures when the DOM is ready is called &lt;a href="http://api.jquery.com/ready/" rel="nofollow"&gt;&lt;code&gt;.ready()&lt;/code&gt;&lt;/a&gt;, and there are a &lt;a rel="nofollow" href="http://www.jquery4u.com/dom-modification/types-document-ready/"&gt;few ways&lt;/a&gt; to call it. In this section are demos of jQuery functions that change the DOM in some way.&lt;/p&gt;
&lt;h4&gt;.clone()&lt;/h4&gt;
&lt;p&gt;The jQuery &lt;a href="http://api.jquery.com/clone/"&gt;&lt;code&gt;.clone()&lt;/code&gt;&lt;/a&gt; function is pretty simple to use; it basically just copies the element that you specify into a new element.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Clone an element.&lt;/p&gt;
&lt;div class="demoarea" id="clone"&gt;&lt;/div&gt;
&lt;h4&gt;.html(), .text() and .empty()&lt;/h4&gt;
&lt;p&gt;Using &lt;a href="http://api.jquery.com/html/"&gt;&lt;code&gt;.html()&lt;/code&gt;&lt;/a&gt; is the most common way to &lt;strong&gt;get or set the content of an element&lt;/strong&gt; using jQuery. If you just want the text and not the HTML tags, you can use &lt;a href="http://api.jquery.com/text/"&gt;&lt;code&gt;.text()&lt;/code&gt;&lt;/a&gt;, which will return a string containing the combined text of all matched elements. These functions are browser-dependent (i.e. &lt;code&gt;.html()&lt;/code&gt; uses the browser’s &lt;code&gt;innerHTML&lt;/code&gt; property), so the results returned (including white space and line breaks) will always depend on the browser you are using.&lt;/p&gt;
&lt;p&gt;In this example, we are also making use of the &lt;a href="http://api.jquery.com/empty/"&gt;&lt;code&gt;.empty()&lt;/code&gt;&lt;/a&gt; function, which is a quick way to get rid of the content within, and &lt;code&gt;.prev()&lt;/code&gt;, which can be used to reference the preceding element, in this case the demo buttons.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Get the content of an element.&lt;/p&gt;
&lt;div class="demoarea" id="html" style="border:1px solid orange; padding:20px;"&gt;&lt;/div&gt;
&lt;h4&gt;.append(), prepend(), .after() and .before()&lt;/h4&gt;
&lt;p&gt;These function provide the means of &lt;strong&gt;inserting content in particular places&lt;/strong&gt; relative to elements already on the Web page. Although the differences may appear trivial, each has its own purpose, and knowing exactly where they will all place content will save you coding time.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Insert content onto a Web page.&lt;/p&gt;
&lt;div class="demoarea" id="append"&gt;
txt = &amp;#8216;&lt;span&gt;This is the content we wish to insert.&lt;/span&gt;&amp;#8216;&lt;/p&gt;
&lt;p&gt;&lt;a href="#" class="append"&gt;innerDiv.&lt;strong&gt;append&lt;/strong&gt;(txt)&lt;/a&gt; | &lt;a href="#" class="prepend"&gt;innerDiv.&lt;strong&gt;prepend&lt;/strong&gt;(txt)&lt;/a&gt; | &lt;a href="#" class="after"&gt;innerDiv.&lt;strong&gt;after&lt;/strong&gt;(txt)&lt;/a&gt; | &lt;a href="#" class="before"&gt;innerDiv.&lt;strong&gt;before&lt;/strong&gt;(txt)&lt;/a&gt;&lt;/p&gt;
&lt;div class="outerDiv" style="border:1px solid orange; padding:25px;"&gt;
&lt;p&gt;outerDiv&lt;/p&gt;
&lt;div class="innerDiv" style="border:1px solid blue; padding:25px;"&gt;
&lt;p&gt;innerDiv&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;jQuery And AJAX&lt;/h3&gt;
&lt;p&gt;The jQuery library has a full suite of AJAX capabilities that &lt;strong&gt;enables us to load data from a server without refreshing the browser page&lt;/strong&gt;. In this section, we will have a quick look at refreshing page content, loading scripts and retrieving data from different Web pages and servers.&lt;/p&gt;
&lt;h4&gt;$.ajax()&lt;/h4&gt;
&lt;p&gt;The &lt;a href="http://api.jquery.com/jQuery.ajax/"&gt;&lt;code&gt;$.ajax()&lt;/code&gt;&lt;/a&gt; function is arguably the most used jQuery function. It gives us a means of &lt;strong&gt;dynamically loading content, scripts and data&lt;/strong&gt; and using them on a live Web page. Other common uses are submitting a form using AJAX and sending data to server-side scripts for storing in a database.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;$.ajax()&lt;/code&gt; function has a lot of settings, and the kind team at jQuery has provided many &lt;strong&gt;shorthand AJAX methods that already contain the settings we require&lt;/strong&gt;. Some developers like to write out the full AJAX settings, mainly because they require more options than many shorthand methods provide (such as &lt;code&gt;beforeSubmit()&lt;/code&gt;). Also, note that you can use the Firebug NET.panel to &lt;a href="http://www.jquery4u.com/testing/http-request-net-panel-httpfox-fiddler2/" rel="nofollow"&gt;analyze HTTP requests&lt;/a&gt; for testing, monitoring and debugging AJAX calls.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Use &lt;code&gt;$.ajax()&lt;/code&gt; to load content without reloading the entire page.&lt;/p&gt;
&lt;p&gt;For this demo, HTML content is held in separate files, which are inserted below using AJAX. Showing a loading icon while an AJAX request is processing is courteous. The third content block below has a two-second delay to simulate the loading icon.&lt;/p&gt;
&lt;div class="demoarea" id="ajax"&gt;
&lt;div class="contentarea" style="border:1px solid orange;padding:10px;margin-bottom:5px;"&gt;Content will appear here.&lt;/div&gt;
&lt;p&gt;&lt;button class="content1"&gt;Load content 1&lt;/button&gt; &lt;button class="content2"&gt;Load content 2&lt;/button&gt; &lt;button class="content3"&gt;Load content 3&lt;/button&gt;&lt;/div&gt;
&lt;p&gt;We can also use functions such as &lt;a href="http://api.jquery.com/jQuery.parseJSON/"&gt;&lt;code&gt;$.parseJSON()&lt;/code&gt;&lt;/a&gt; and &lt;a href="http://www.json.org/js.html"&gt;&lt;code&gt;JSON.parse()&lt;/code&gt;&lt;/a&gt; from ECMAScript5, which simplifies JSON parsing. If you’re interested in JSON parsing and tree recursion, see the “&lt;a href="http://www.jquery4u.com/demos/online-json-tree-viewer/" rel="nofollow"&gt;Online JSON Tree Viewer Tool&lt;/a&gt;.”&lt;/p&gt;
&lt;h4&gt;.load()&lt;/h4&gt;
&lt;p&gt;The &lt;a href="http://api.jquery.com/load/"&gt;&lt;code&gt;.load()&lt;/code&gt;&lt;/a&gt; function is an AJAX &lt;strong&gt;shorthand method for inserting HTML&lt;/strong&gt; straight into a matched element on the Web page.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Use &lt;code&gt;.load()&lt;/code&gt; to grab HTML content from another Web page.&lt;/p&gt;
&lt;div class="demoarea" id="load"&gt;&lt;/div&gt;
&lt;h4&gt;JSONP&lt;/h4&gt;
&lt;p&gt;AJAX requests are subject to the &lt;a href="http://en.wikipedia.org/wiki/Same_origin_policy" rel="nofollow"&gt;same origin policy&lt;/a&gt;, which means you may only send requests to the same domain. Fortunately, &lt;code&gt;$.ajax()&lt;/code&gt; has a property named &lt;a href="http://www.jquery4u.com/json/jsonp-examples/"&gt;JSONP&lt;/a&gt; (i.e. JSON with padding), which allows a page to request data from a server on a different domain. It works by wrapping the target data in a JavaScript callback function. Note that the response is not parsed as JSON and may be any JavaScript expression.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Use AJAX and JSONP to load data from an external source.&lt;/p&gt;
&lt;p&gt;This demo will load the latest pictures tagged “jQuery” from Flickr’s public feed.&lt;/p&gt;
&lt;div class="demoarea" id="JSONP" style="display:inline-block"&gt;&lt;/div&gt;
&lt;p&gt;The AJAX shorthand functions &lt;a href="http://api.jquery.com/jQuery.getJSON/" rel="nofollow"&gt;&lt;code&gt;$.getJSON&lt;/code&gt;&lt;/a&gt; and &lt;a href="http://api.jquery.com/jQuery.getScript/" rel="nofollow"&gt;&lt;code&gt;$.getScript&lt;/code&gt;&lt;/a&gt; and &lt;a href="http://www.jquery4u.com/demos/ajax/" rel="nofollow"&gt;more AJAX examples&lt;/a&gt; can be found on my blog.&lt;/p&gt;
&lt;h3&gt;jQuery And Events&lt;/h3&gt;
&lt;p&gt;Managing events using regular JavaScript is entirely possible, however, jQuery provides a much more user-friendly interface to manage Web page events. Examples of such events are clicking a hyperlink, moving the mouse over an image and even pressing a key on the keyboard; the list goes on. Here are some examples of key jQuery functions that may be used to manage events.&lt;/p&gt;
&lt;h4&gt;.bind() and .unbind()&lt;/h4&gt;
&lt;p&gt;The &lt;a href="http://api.jquery.com/bind/"&gt;&lt;code&gt;.bind()&lt;/code&gt;&lt;/a&gt; function is very useful for &lt;strong&gt;adding event triggers and handlers to your DOM elements&lt;/strong&gt;. In case you didn’t know, you can bind your DOM elements to a whole &lt;a href="http://www.jquery4u.com/events/jquery-list-events-bind/" rel="nofollow"&gt;list of events&lt;/a&gt;, such as &lt;code&gt;submit&lt;/code&gt;, &lt;code&gt;change&lt;/code&gt;, &lt;code&gt;mouseenter&lt;/code&gt; and &lt;code&gt;mouseleave&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You may have also seen &lt;a href="http://api.jquery.com/click/"&gt;&lt;code&gt;.click()&lt;/code&gt;&lt;/a&gt; used in jQuery code. There is no functional difference between &lt;code&gt;.click()&lt;/code&gt; and &lt;code&gt;.bind('click')&lt;/code&gt;, but with the latter we have the benefits of being able to specify custom events and add data parameters. There is also an &lt;a href="http://api.jquery.com/unbind/"&gt;&lt;code&gt;.unbind()&lt;/code&gt;&lt;/a&gt; function to remove any events that have already been bound.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Trigger an event when the user clicks on or hovers over a div.&lt;/p&gt;
&lt;div class="demoarea" id="bind1"&gt;
&lt;div style="padding:25px;background-color:green;color:white;font-size:18px;"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p class="example"&gt;Demo: Trigger an event when the user hovers over or double-clicks a div.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Press “Run demo” a few times in a row for some nice effects&lt;/strong&gt;. Also, double-clicking the boxes will make them disappear!&lt;/p&gt;
&lt;div class="demoarea" id="bind2" style="display:inline-block"&gt;&lt;/div&gt;
&lt;p class="example"&gt;Demo: Trigger an event when the user presses a key.&lt;/p&gt;
&lt;p&gt;Press any key shown in the boxes below.&lt;/p&gt;
&lt;div class="demoarea" id="bind3" style="display:inline-block"&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The key difference between &lt;code&gt;keydown&lt;/code&gt; and &lt;code&gt;keypress&lt;/code&gt; events is that the latter captures each individual character entered, as opposed to just firing once per key press. To illustrate, this simple tool &lt;a href="http://www.jquery4u.com/events/find-keycode-keyboard-key-press" rel="nofollow"&gt;shows the keycodes for any key&lt;/a&gt; that you press.&lt;/p&gt;
&lt;h4&gt;.live(), .on() and .off()&lt;/h4&gt;
&lt;p&gt;The &lt;a href="http://api.jquery.com/live/"&gt;&lt;code&gt;.live()&lt;/code&gt;&lt;/a&gt; function is essentially the same as &lt;code&gt;.bind()&lt;/code&gt;, but it can &lt;strong&gt;capture events on new elements&lt;/strong&gt; that didn’t exist on the page when it was loaded; for example, if your Web page has loaded and then you dynamically insert an image onto it. If we used &lt;code&gt;.bind()&lt;/code&gt; to attach an event when the mouse hovers over the image, it would not work. But if we used &lt;code&gt;.live()&lt;/code&gt;, it would work! As of jQuery 1.7, you are advised to &lt;strong&gt;make use of the new &lt;code&gt;.on()&lt;/code&gt; and &lt;code&gt;.off()&lt;/code&gt; functions&lt;/strong&gt;, instead of the &lt;code&gt;.live()&lt;/code&gt; function, which has a few disadvantages to &lt;a href="http://api.jquery.com/on/"&gt;&lt;code&gt;.on()&lt;/code&gt;&lt;/a&gt;. See “&lt;a href="http://www.jquery4u.com/jquery-functions/on-vs-live-review/"&gt;jQuery 1.7+ &lt;code&gt;.on()&lt;/code&gt; vs. &lt;code&gt;.live()&lt;/code&gt; Review&lt;/a&gt;” for a more detailed explanation of the differences.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Capture events on new or changed elements.&lt;/p&gt;
&lt;p&gt;Click “Run demo” to dynamically insert more images and check that the event still fires on them.&lt;/p&gt;
&lt;div class="demoarea" id="live"&gt;&lt;/div&gt;
&lt;h4&gt;.delegate()&lt;/h4&gt;
&lt;p&gt;The &lt;a href="http://api.jquery.com/delegate/"&gt;&lt;code&gt;.delegate()&lt;/code&gt;&lt;/a&gt; function provides a means of attaching event handlers to new elements (similar to the &lt;code&gt;.live()&lt;/code&gt; function covered above). You might find &lt;strong&gt;&lt;code&gt;.delegate()&lt;/code&gt; to be faster than &lt;code&gt;.live()&lt;/code&gt;&lt;/strong&gt; because the latter searches the entire document namespace for the elements as opposed to a single document. The much more important difference is that &lt;code&gt;.live()&lt;/code&gt; is prone to break if used with traversing.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Delegate events to the child elements of a root element.&lt;/p&gt;
&lt;p&gt;The demo area is the root element (orange border) with colored span child elements that have a hover event attached. Click “Run demo” a few times and hover with the mouse to trigger the effects.&lt;/p&gt;
&lt;div class="demoarea" id="delegate" style="border:1px solid orange;padding:20px;"&gt;&lt;/div&gt;
&lt;h4&gt;.preventDefault()&lt;/h4&gt;
&lt;p&gt;The &lt;a href="http://api.jquery.com/event.preventDefault/"&gt;&lt;code&gt;.preventDefault()&lt;/code&gt;&lt;/a&gt; function can be applied to &lt;strong&gt;stop any element with a default action from firing&lt;/strong&gt;: hyperlinks, keyboard shortcuts, form submit buttons, etc. These are probably the most common uses, and the function stops the hyperlink from going to its destination (the &lt;code&gt;href&lt;/code&gt;). It’s very useful for stopping those default actions and running your custom JavaScript actions instead.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Prevent a hyperlink from going to its &lt;code&gt;href&lt;/code&gt;.&lt;/p&gt;
&lt;div class="demoarea" id="preventDefault"&gt;&lt;/div&gt;
&lt;h4&gt;.stopPropagation()&lt;/h4&gt;
&lt;p&gt;There are methods that do things similar to &lt;code&gt;.preventDefault()&lt;/code&gt; but that behave differently. The &lt;a href="http://api.jquery.com/event.stopPropagation/"&gt;&lt;code&gt;.stopPropagation()&lt;/code&gt;&lt;/a&gt; function &lt;strong&gt;prevents the event from occurring on any ancestor elements&lt;/strong&gt;. This can be used if you have an exception to the rule that you’ve specified for a container element with child elements. This function currently &lt;strong&gt;does not work with &lt;code&gt;.live()&lt;/code&gt; events&lt;/strong&gt; because it handles events once they have propagated to the top of the document.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Prevent a parent container from firing its event when its child is clicked.&lt;/p&gt;
&lt;p&gt;Click both the link and div box area to see which event is fired.&lt;/p&gt;
&lt;div class="demoarea" id="stopPropagation"&gt;
&lt;p&gt;This div does &lt;strong&gt;not&lt;/strong&gt; use the &lt;code&gt;.stopPropagation()&lt;/code&gt; function.&lt;/p&gt;
&lt;div class="divlink1" style="border:1px solid orange; padding:25px;"&gt;&lt;a href="http://www.smashingmagazine.com" rel="nofollow"&gt;http://www.smashingmagazine.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;This div &lt;strong&gt;does&lt;/strong&gt; use the &lt;code&gt;.stopPropagation()&lt;/code&gt; function.&lt;/p&gt;
&lt;div class="divlink2" style="border:1px solid orange; padding:25px;"&gt;&lt;a href="http://www.smashingmagazine.com" rel="nofollow"&gt;http://www.smashingmagazine.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;As you can see, when you click the top link it also fires off the div event, but the bottom link uses &lt;code&gt;.stopPropagation()&lt;/code&gt;, which prevents the div event from firing. The div event will still fire if you click inside the div, as expected.&lt;/p&gt;
&lt;/div&gt;
&lt;h4&gt;.stopImmediatePropagation()&lt;/h4&gt;
&lt;p&gt;This function is nice for &lt;strong&gt;stopping all future bound events&lt;/strong&gt;. The events will fire in the order they were bound, and when it hits the &lt;a href="http://api.jquery.com/event.stopImmediatePropagation/"&gt;&lt;code&gt;.stopImmediatePropagation()&lt;/code&gt;&lt;/a&gt; function, all further bound events are not fired.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Prevent all future bound events from firing.&lt;/p&gt;
&lt;p&gt;Click both the link and div box area to see which event is fired.&lt;/p&gt;
&lt;div class="demoarea" id="stopImmediatePropagation"&gt;
&lt;p&gt;This div does &lt;strong&gt;not&lt;/strong&gt; use the &lt;code&gt;.stopImmediatePropagation()&lt;/code&gt; function.&lt;/p&gt;
&lt;div class="divlink1" style="border:1px solid orange; padding:25px;"&gt;
Link 1: &lt;a class="link1" href="http://smashingmagazine.com" rel="nofollow"&gt;http://www.smashingmagazine.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Link 2: &lt;a class="link2" href="http://smashingmagazine.com" rel="nofollow"&gt;http://www.smashingmagazine.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Link 3: &lt;a class="link3" href="http://smashingmagazine.com" rel="nofollow"&gt;http://www.smashingmagazine.com&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This div &lt;strong&gt;does&lt;/strong&gt; use the &lt;code&gt;.stopImmediatePropagation()&lt;/code&gt; function.&lt;/p&gt;
&lt;div class="divlink2" style="border:1px solid orange; padding:25px;"&gt;
Link 1: &lt;a class="link1" href="http://smashingmagazine.com" rel="nofollow"&gt;http://www.smashingmagazine.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Link 2: &lt;a class="link2" href="http://smashingmagazine.com" rel="nofollow"&gt;http://www.smashingmagazine.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Link 3: &lt;a class="link3" href="http://smashingmagazine.com" rel="nofollow"&gt;http://www.smashingmagazine.com&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;As you can see, when you click the links in the top div, all of the events fire off. But when you click the links in the bottom div, only the code for all of the links fires off because it calls &lt;code&gt;.stopImmediatePropagation()&lt;/code&gt; on the event. This function also &lt;strong&gt;prevents the event from firing on any ancestor elements&lt;/strong&gt;, just like the &lt;code&gt;.stopPropagation()&lt;/code&gt; function, as seen in the example where the div &lt;code&gt;click&lt;/code&gt; event doesn’t fire on the bottom links.&lt;/p&gt;
&lt;/div&gt;
&lt;h3&gt;Finding, Looping And Filtering Results&lt;/h3&gt;
&lt;p&gt;jQuery gives us fast access to finding anything on the page and the ability to &lt;strong&gt;loop through or filter results&lt;/strong&gt; as we please. It also has &lt;strong&gt;powerful functions to manipulate and extend data&lt;/strong&gt; and functionality associated with JavaScript objects. There are so many things to cover in this section, so we have narrowed them down to a few key functions.&lt;/p&gt;
&lt;h4&gt;$.each() and .each()&lt;/h4&gt;
&lt;p&gt;There are two different methods for iterating with jQuery: &lt;a href="http://api.jquery.com/each/"&gt;&lt;code&gt;.each()&lt;/code&gt;&lt;/a&gt; is used to iterate only over jQuery objects collections, while &lt;a href="http://api.jquery.com/jquery.each/"&gt;&lt;code&gt;$.each()&lt;/code&gt;&lt;/a&gt; is a general function for iterating over JavaScript objects and arrays. I am a big fan of functions such as these and &lt;a href="http://www.jquery4u.com/javascript/shorthand-javascript-techniques/" rel="nofollow"&gt;JavaScript shorthand techniques&lt;/a&gt; that provide us with a fast alternative to basic JavaScript coding.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Use &lt;code&gt;$.each()&lt;/code&gt; to loop through values in an array.&lt;/p&gt;
&lt;p&gt;Output the countries of the world (stored in an array).&lt;/p&gt;
&lt;div class="demoarea" id="each1"&gt;&lt;/div&gt;
&lt;p class="example"&gt;Demo: Use &lt;code&gt;.each()&lt;/code&gt; to loop through DOM elements.&lt;/p&gt;
&lt;p&gt;This demo loops through all of the &lt;code&gt;h2&lt;/code&gt; tags on this Web page and creates a table of contents.&lt;/p&gt;
&lt;div class="demoarea" id="each2"&gt;
&lt;ol&gt;&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;You can use &lt;code&gt;$.each()&lt;/code&gt; and &lt;code&gt;.each()&lt;/code&gt; on a lot of different things, such as DOM elements, arrays, objects and JSON. For those of you who are keen, you could try &lt;a href="http://www.jquery4u.com/jquery-functions/jquery-each-examples/" rel="nofollow"&gt;five more jQuery &lt;code&gt;.each()&lt;/code&gt; examples&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;$.data(), .data(), $.hasData() and $.removeData()&lt;/h4&gt;
&lt;p&gt;Updates to the jQuery library (mainly since 1.4) has brought the ability to &lt;strong&gt;attach data of any type to DOM elements&lt;/strong&gt;. This is a very useful alternative to storing data in JavaScript objects and other such methods. There are two versions: &lt;a href="http://api.jquery.com/jquery.data/"&gt;&lt;code&gt;$.data()&lt;/code&gt;&lt;/a&gt;, which takes in the element as a parameter, and &lt;a href="http://api.jquery.com/data/"&gt;&lt;code&gt;.data()&lt;/code&gt;&lt;/a&gt;, which can attach directly to matched elements.&lt;/p&gt;
&lt;p&gt;Note that &lt;code&gt;$.data()&lt;/code&gt; returns a data object to the caller, whereas &lt;code&gt;.data()&lt;/code&gt; does not. There are also many utility functions, such as &lt;a href="http://api.jquery.com/jQuery.hasData/"&gt;&lt;code&gt;$.hasData()&lt;/code&gt;&lt;/a&gt;, &lt;a href="http://api.jquery.com/jQuery.removeData/"&gt;&lt;code&gt;$.removeData()&lt;/code&gt;&lt;/a&gt;, that help with data management.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Attach data to DOM elements.&lt;/p&gt;
&lt;p&gt;The following example sets and gets a data object into the div for this demo area.&lt;/p&gt;
&lt;div class="demoarea" id="data" style="border:1px solid orange; padding:25px;height: 80px;"&gt;
&lt;div style="width:330px;float:left;"&gt;
&lt;form&gt;&lt;label&gt;Enter something: &lt;/label&gt;&lt;/p&gt;
&lt;input/&gt;&lt;/form&gt;
&lt;p&gt;&lt;a class="set" href="#"&gt;Set data&lt;/a&gt; | &lt;a class="get" href="#"&gt;Get data&lt;/a&gt; | &lt;a class="has" href="#"&gt;Has data?&lt;/a&gt; | &lt;a class="remove" href="#"&gt;Remove data&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style="width:250px; display:inline-block; height: 50px;font-size:16px;color:blue;"&gt;
Data: &lt;span id="datadisplay" style="padding 25px;"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4&gt;.match(), .test() and :contains()&lt;/h4&gt;
&lt;p&gt;Together with the jQuery &lt;a href="http://api.jquery.com/contains-selector/"&gt;&lt;code&gt;:contains()&lt;/code&gt;&lt;/a&gt; selector, you can use the pure JavaScript functions &lt;code&gt;.match()&lt;/code&gt; and &lt;code&gt;.test()&lt;/code&gt; to &lt;strong&gt;save time when filtering for string values&lt;/strong&gt;. Let’s look at some examples.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Extract email addresses from inside HTML (i.e. a string).&lt;/p&gt;
&lt;p&gt;We can use &lt;code&gt;.test()&lt;/code&gt; to check whether any emails are present, and use &lt;code&gt;.match()&lt;/code&gt; to extract them.&lt;/p&gt;
&lt;div class="demoarea" id="match1"&gt;
&lt;p&gt;Curabitur placerat commodo augue eget congue. Aliquam id ante leo. Duis at libero magna, at dignissim odio. Aliquam aliquet suscipit mollis. Pellentesque libero tortor, elementum id mattis vel, mattis eget metus. somebody1@somewhere.com Nam convallis interdum imperdiet. Fusce at magna tellus. Sed mi ante, aliquam at accumsan ac, tristique sit amet dui. Aliquam eleifend molestie ligula. Vivamus eleifend, somebody2@somewhere.com diam id tincidunt posuere, ipsum dui elementum sapien, posuere pulvinar risus neque id turpis. Nullam volutpat cursus libero, sit amet euismod justo eleifend vitae.&lt;/p&gt;
&lt;p&gt;&lt;button class="test"&gt;Emails are present?&lt;/button&gt;&lt;button class="extract"&gt;Extract emails&lt;/button&gt;&lt;span class="extractedemails" style="color: green; font-weight: bold; margin-left: 10px;"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p class="example"&gt;Demo: Use the jQuery &lt;code&gt;:contains()&lt;/code&gt; selector to match elements with substrings.&lt;/p&gt;
&lt;p&gt;We can use the &lt;code&gt;:contains()&lt;/code&gt; selector to match substrings inside any of that element’s descendants (this is case sensitive).&lt;/p&gt;
&lt;div class="demoarea" id="match2"&gt;
&lt;ul class="listnomargin"&gt;
&lt;li&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit.&lt;/li&gt;
&lt;li&gt;Curabitur quis arcu ac justo pellentesque ullamcorper sit amet quis mi.&lt;/li&gt;
&lt;li&gt;Nam a lorem quis lacus dapibus egestas et a ipsum.&lt;/li&gt;
&lt;li&gt;Phasellus nec magna quis diam cursus egestas quis aliquet tortor.&lt;/li&gt;
&lt;li&gt;Ut feugiat vestibulum mi, sit amet consequat orci facilisis ac.&lt;/li&gt;
&lt;li&gt;Phasellus et enim ut sem dapibus hendrerit.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Search:&lt;/p&gt;
&lt;input type="text" class="contains" value="sit amet" /&gt;&lt;button class="contains"&gt;:contains(Search)&lt;/button&gt;
&lt;/div&gt;
&lt;h4&gt;.find()&lt;/h4&gt;
&lt;p&gt;The &lt;a href="http://api.jquery.com/find/"&gt;&lt;code&gt;.find()&lt;/code&gt;&lt;/a&gt; function is very useful for &lt;strong&gt;matching elements filtered by a selector, jQuery object or element&lt;/strong&gt;. The &lt;code&gt;.find()&lt;/code&gt; function can be used with the functions &lt;a href="http://api.jquery.com/children/"&gt;&lt;code&gt;.children()&lt;/code&gt;&lt;/a&gt; (which searches only the direct child siblings of the matched elements) and &lt;a href="http://api.jquery.com/parents/"&gt;&lt;code&gt;.parents()&lt;/code&gt;&lt;/a&gt; (which searches the direct parent elements of the matched element).&lt;/p&gt;
&lt;p class="example"&gt;Demo: Finde specific descendants of matched elements.&lt;/p&gt;
&lt;div class="demoarea" id="find" style="border:1px solid orange; padding:25px;"&gt;
&lt;button class="ffbtn"&gt;find(folders)&lt;/button&gt; &lt;button class="fibtn"&gt;find(items)&lt;/button&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;ul id="filetree"&gt;
&lt;li&gt;&lt;span class="folder"&gt;Folder 1&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="folder"&gt;Subfolder 1&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="file"&gt;Item 1.1.1&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span class="folder"&gt;Subfolder 2&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="file"&gt;Item 1.2.1&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="file"&gt;Item 1.2.1.1&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="file"&gt;Item 1.2.1.2&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span class="folder"&gt;Folder 2&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="file"&gt;Item 1.3.1&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="file"&gt;Item 1.3.1.1&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="file"&gt;Item 1.3.1.2&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h4&gt;.filter()&lt;/h4&gt;
&lt;p&gt;The &lt;a href="http://api.jquery.com/filter/"&gt;&lt;code&gt;.filter()&lt;/code&gt;&lt;/a&gt; function allows us to &lt;strong&gt;reduce a set of matched elements&lt;/strong&gt; based on a jQuery selector. This is useful when you want to process a group of elements and then further process specific child elements. The &lt;code&gt;.filter()&lt;/code&gt; function can be used in a few different ways, such as to filter by a class name, function or jQuery object.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Use &lt;code&gt;.filter()&lt;/code&gt; to match subelements.&lt;/p&gt;
&lt;p&gt;In this example, &lt;code&gt;.filter()&lt;/code&gt; is used to style paragraphs based on their content.&lt;/p&gt;
&lt;div class="demoarea" id="filter" style="border:1px solid orange; padding:25px;"&gt;
&lt;button class="alternates"&gt;Alternates&lt;/button&gt; &lt;button class="strongs"&gt;Strong tags&lt;/button&gt; &lt;button class="spans"&gt;Span tags&lt;/button&gt; &lt;button class="highlights"&gt;“highlight” class&lt;/button&gt;&lt;/p&gt;
&lt;p&gt;Paragraph 1&lt;/p&gt;
&lt;p&gt;Paragraph 2 with &lt;span&gt;span tag&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paragraph 3 with strong tag&lt;/strong&gt;&lt;/p&gt;
&lt;p class="highlight"&gt;Paragraph 4 with highlight class.&lt;/p&gt;
&lt;p&gt;Paragraph 5 with &lt;span&gt;span tag&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Paragraph 6&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paragraph 7 with strong tag&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Paragraph 8 with &lt;span&gt;span tag&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Paragraph 9&lt;/p&gt;
&lt;/div&gt;
&lt;h4&gt;.slice()&lt;/h4&gt;
&lt;p&gt;&lt;!-- deleted script tag --&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://api.jquery.com/slice/"&gt;&lt;code&gt;.slice()&lt;/code&gt;&lt;/a&gt; function lets us easily &lt;strong&gt;specify a subset of elements to perform actions on&lt;/strong&gt;. It takes two parameters: &lt;code&gt;start&lt;/code&gt; and &lt;code&gt;end&lt;/code&gt; indices of subelements in a matched parent element.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Use &lt;code&gt;.slice()&lt;/code&gt; to perform actions on a subset of elements.&lt;/p&gt;
&lt;div class="demoarea" id="slice" style="border:1px solid orange; padding:25px;min-height: 300px;"&gt;
&lt;div style="width:300px;float:left;"&gt;
&lt;table border="1"&gt;
&lt;tr&gt;
&lt;th&gt;Slice 1&lt;/th&gt;
&lt;th&gt;Slice 2&lt;/th&gt;
&lt;th&gt;Slice 3&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;&lt;button&gt;Slice me!&lt;/button&gt;
&lt;/div&gt;
&lt;div style="width:250px; display:inline-block; height: 160px;font-size:16px;color:blue;"&gt;
&lt;span id="sparklinesExample"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4&gt;.prev() and next()&lt;/h4&gt;
&lt;p&gt;The &lt;a href="http://api.jquery.com/prev/"&gt;&lt;code&gt;.prev()&lt;/code&gt;&lt;/a&gt; and &lt;a href="http://api.jquery.com/next/"&gt;&lt;code&gt;.next()&lt;/code&gt;&lt;/a&gt; functions can be used to &lt;strong&gt;reference the immediately preceding or next element in a set of matched elements&lt;/strong&gt; (in the DOM hierarchy). You can also add a selector to the functions that acts as a filter on the elements (shown in the demo).&lt;/p&gt;
&lt;p class="example"&gt;Demo: Reference the previous and next elements in a list.&lt;/p&gt;
&lt;div class="demoarea" id="prev" style="border:1px solid orange; padding:20px;"&gt;
&lt;a class="prev" href="" style="text-decoration:none;"&gt;&lt; Prev&lt;/a&gt; | &lt;a class="next" href="" style="text-decoration:none;"&gt;Next &gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;List item 1&lt;/li&gt;
&lt;li&gt;List item 2&lt;/li&gt;
&lt;li&gt;List item 3&lt;/li&gt;
&lt;li&gt;List item 4&lt;/li&gt;
&lt;li&gt;List item 5&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h4&gt;$.extend()&lt;/h4&gt;
&lt;p&gt;The &lt;a href="http://api.jquery.com/jquery.extend/"&gt;&lt;code&gt;$.extend()&lt;/code&gt;&lt;/a&gt; function can be used to &lt;strong&gt;combine two or more objects&lt;/strong&gt; into the first object or into a completely new object.&lt;/p&gt;
&lt;pre class="brush: js"&gt;
$.extend( target, [object1,] [objectN] )
&lt;/pre&gt;
&lt;p&gt;In the demo, we have a functional contact form on our website, and we want two more forms with similar functionality. Instead of copying all of the code that processes the form, we can use &lt;code&gt;$.extend()&lt;/code&gt; to &lt;strong&gt;copy the functionality to our new forms&lt;/strong&gt;, thus avoiding repetitive code. You might have noticed that the target element specified is a blank object; this is a trick that you will often see to create a new object of &lt;code&gt;object1&lt;/code&gt; and extend it with &lt;code&gt;objectN&lt;/code&gt; (&lt;code&gt;N&lt;/code&gt; representing any number of objects). So, in the example, we want to “copy” the existing functionality of &lt;code&gt;forms.enquiry&lt;/code&gt; and simply override the email address.&lt;/p&gt;
&lt;p class="example"&gt;Demo: Use &lt;code&gt;$.extend()&lt;/code&gt; to change the &lt;code&gt;send&lt;/code&gt; action on a form to different email addresses based on the form used.&lt;/p&gt;
&lt;p&gt;This demo simulates the submission of three forms that all use the same code base.&lt;/p&gt;
&lt;div class="demoarea" id="extend1"&gt;&lt;/div&gt;
&lt;p class="example"&gt;Demo: Use &lt;code&gt;$.extend()&lt;/code&gt; to specify custom settings for a plugin.&lt;/p&gt;
&lt;p&gt;This demo shows how to specify the length of paragraph excerpts. The default is 150 characters.&lt;/p&gt;
&lt;div style="" class="demoarea" id="extend2"&gt;
&lt;div class="settingsarea"&gt;&lt;label for="excerptLength"&gt;Excerpt length: &lt;/label&gt;&lt;/p&gt;
&lt;input type="number" value="280" name="excerptLength"&gt; &lt;a href="#" style="margin: 10px;" class="btn runexcerpts"&gt;Run Excerpts plugin&lt;/a&gt;&lt;/div&gt;
&lt;p class="excerpt"&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod&lt;br /&gt;
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,&lt;br /&gt;
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo&lt;br /&gt;
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse&lt;br /&gt;
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non&lt;br /&gt;
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;
&lt;p class="excerpt"&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod&lt;br /&gt;
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,&lt;br /&gt;
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo&lt;br /&gt;
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse&lt;br /&gt;
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non&lt;br /&gt;
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;
&lt;p class="excerpt"&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod&lt;br /&gt;
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,&lt;br /&gt;
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo&lt;br /&gt;
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse&lt;br /&gt;
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non&lt;br /&gt;
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Addy Osmani’s book &lt;a href="http://addyosmani.com/resources/essentialjsdesignpatterns/book/#jquerypluginpatterns"&gt;&lt;em&gt;Learning JavaScript Design Patterns&lt;/em&gt;&lt;/a&gt; gives greater insight into how to use the &lt;code&gt;$.extend()&lt;/code&gt; function to override the default values of jQuery plugins.&lt;/p&gt;
&lt;h4&gt;.serialize() and .serializeArray()&lt;/h4&gt;
&lt;p&gt;The &lt;a href="http://api.jquery.com/serialize/"&gt;&lt;code&gt;.serialize()&lt;/code&gt;&lt;/a&gt; and &lt;a href="http://api.jquery.com/serializeArray/"&gt;&lt;code&gt;.serializeArray()&lt;/code&gt;&lt;/a&gt; functions can &lt;strong&gt;create string and array values from form fields&lt;/strong&gt; in seconds! There are two demos here: the first outputs all of the form’s fields and their values, and the second creates a URL string with the form fields and values appended to the form action ready to be sent.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To run the demo,&lt;/strong&gt; enter anything into the form and click the “Run demo” buttons below the form.&lt;/p&gt;
&lt;p&gt;&lt;!-- HTML Form --&gt;&lt;/p&gt;
&lt;form id="jq4u-demo-form" action="www.example.com/process.php"&gt;
&lt;p&gt;&lt;label for="name"&gt;Name&lt;/label&gt;&lt;/p&gt;
&lt;input type="text" size="30" name="name" id="name" value="Joe Bloggs"&gt;
&lt;p&gt;&lt;label for="email"&gt;Email&lt;/label&gt;&lt;/p&gt;
&lt;input type="text" size="30" name="email" id="email" value="joe@bloggs.com"&gt;
&lt;p&gt;&lt;label for="phone"&gt;Phone&lt;/label&gt;&lt;/p&gt;
&lt;input type="text" size="30" name="phone" id="phone" value="123456789"&gt;
&lt;p&gt;&lt;label for="message"&gt;Message&lt;/label&gt;&lt;br /&gt;
&lt;textarea rows="5" name="message" id="message" cols="30"&gt;My name is not John Smith.&lt;/textarea&gt;&lt;/p&gt;
&lt;p&gt;&lt;button id="send-message" disabled="disabled"&gt;Send message&lt;/button&gt;&lt;br /&gt;
&lt;/form&gt;
&lt;p class="example"&gt;Demo: Create an array of all of the form’s field values&lt;/p&gt;
&lt;div class="demoarea" id="serializeArray1"&gt;&lt;/div&gt;
&lt;p class="example"&gt;Demo: Create a URL string with all of the form’s field values&lt;/p&gt;
&lt;div class="demoarea" id="serializeArray2"&gt;&lt;/div&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Although we have only scratched the surface of jQuery in this article, we hope you have learned something about some of the most popular jQuery functions and are able to use them to write fantastic code for your next Web development project. Thanks for reading.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;em&gt;(al) (km)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© Sam Deering for &lt;a href="http://www.smashingmagazine.com"&gt;Smashing Magazine&lt;/a&gt;, 2012.&lt;/small&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/m6f5FI8S-v4" height="1" width="1"/&gt;</content>
                                                            <link rel="replies" type="text/html" href="http://www.smashingmagazine.com/2012/05/31/50-jquery-function-demos-for-aspiring-web-developers/#comments" thr:count="0" />
        <link rel="replies" type="application/atom+xml" href="http://www.smashingmagazine.com/2012/05/31/50-jquery-function-demos-for-aspiring-web-developers/feed/atom/" thr:count="0" />
        <thr:total>0</thr:total>
    <feedburner:origLink>http://www.smashingmagazine.com/2012/05/31/50-jquery-function-demos-for-aspiring-web-developers/</feedburner:origLink></entry>
            <entry>
        <author>
            <name>Drew Clemens</name>
                                    <uri>http://heysparkbox.com</uri>
                    </author>
        <title type="html"><![CDATA[Design Process In The Responsive Age]]></title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SmashingMagazine/~3/eIvIxuvzcNg/" />
        <id>http://mgmt.smashingmagazine.com/?p=133688</id>
        <updated>2012-05-30T12:55:32Z</updated>
        <published>2012-05-30T12:55:32Z</published>
            <category scheme="http://www.smashingmagazine.com" term="UX Design" />        <summary type="html"><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=1" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=2" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=3" border="0" alt="" /></a>
    </div></td></tr></table>
<p>You cannot plan for and design a <em>responsive</em>, <em>content-focused</em>, <em>mobile-first</em> website the same way you’ve been creating websites for years&#8212;you just can’t. If your goal is to produce something that is not fixed-width and serves smaller devices just the styles they require, why would you use a dated process that contradicts those goals?</p>

<p><a href="http://uxdesign.smashingmagazine.com/2012/05/30/design-process-responsive-age/"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/change-process-feature-image500.jpeg" alt="Design Process In the Responsive Age" title="Design Process In the Responsive Age" width="500" height="333" class="alignnone size-full wp-image-112248" /></a></p>

<p>I'd like to walk you through some problems caused by using old processes with responsive design. Let's  look into an evolving design process we've been using with some <strong>promising new deliverables and tools</strong>. This should provide a starting point for you to freshen up your own process and bring it into the responsive age.</p>]]></summary>
                    <content type="html" xml:base="http://www.smashingmagazine.com/2012/05/30/design-process-in-the-responsive-age/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VjKwVN--Z8buF5IM-1tf0VjBwu0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VjKwVN--Z8buF5IM-1tf0VjBwu0/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/VjKwVN--Z8buF5IM-1tf0VjBwu0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VjKwVN--Z8buF5IM-1tf0VjBwu0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;table width="650"&gt;
&lt;tr&gt;
&lt;td width="650"&gt;
&lt;div style="width:650px;"&gt;
      &lt;img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /&gt;&lt;br /&gt;
      &lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=1" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=1" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=2" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=2" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=3" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=3" border="0" alt="" /&gt;&lt;/a&gt;
    &lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;You cannot plan for and design a &lt;a href="http://www.alistapart.com/articles/responsive-web-design/"&gt;responsive&lt;/a&gt;, &lt;a href="http://adactio.com/journal/4523/"&gt;content-focused&lt;/a&gt;, &lt;a href="http://www.lukew.com/ff/entry.asp?933"&gt;mobile-first&lt;/a&gt; website the same way you’ve been creating websites for years&amp;mdash;you just can’t. If your goal is to produce something that is not fixed-width and serves smaller devices just the styles they require, why would you use a dated process that contradicts those goals?&lt;/p&gt;
&lt;p&gt;I&amp;#8217;d like to walk you through some problems caused by using old processes with responsive design. Let&amp;#8217;s look into an evolving design process &lt;a href="http://seesparkbox.com/" title="SparkBox"&gt;we&amp;#8217;ve&lt;/a&gt; been using with some &lt;strong&gt;promising new deliverables and tools&lt;/strong&gt;. This should provide a starting point for you to freshen up your own process and bring it into the responsive age.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/change-process-feature-image500.jpeg" alt="Design Process In the Responsive Age" title="Design Process In the Responsive Age" width="500" height="333" class="alignnone size-full wp-image-112248" /&gt;&lt;/p&gt;
&lt;h3&gt;The Problem&lt;/h3&gt;
&lt;p&gt;The issues caused when trying to force new results from an old process are significant yet, strangely enough, not immediately obvious. We’ve all &lt;strong&gt;just gotten used to them&lt;/strong&gt;, like the annoying quirk we didn’t realize we had, until someone points it out. And from that point forward, it drives you crazy. For example, when we create a desktop-sized, fixed-width site layout in Photoshop and hand it to a developer to interpret into HTML/CSS, we are asking the developer to make a lot of design decisions&amp;mdash;possibly without even realizing it. Below is just a small sample:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How should the layout adjust for smaller-sized devices? (&lt;em&gt;It sure would be nice to have a hierarchy of important page elements based on their purpose, huh?)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;What is the hierarchy of the content? (&lt;em&gt;Gee, all that “Lorem Ipsum” doesn’t make it obvious?)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;How does the navigation respond to smaller screens? (&lt;em&gt;How do I handle ten links with five child pages each revealed on hover with a 320×480 touch device?!)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This can cause major problems if the developer doesn’t feel confident in the visual arena. Even designers/developers who feel comfortable making those calls can get in hot water. In the end, the developer is often forced to make assumptions where plans were not made clear beforehand&amp;mdash;sometimes days before feedback from designer or client becomes available. Sometimes it works, sometimes it doesn’t.&lt;/p&gt;
&lt;h4&gt;Work More or Work Efficiently?&lt;/h4&gt;
&lt;p&gt;It’s easy to resort to working more to resolve these new challenges. What comes naturally? Do a desktop and mobile-sized wireframe, then turn around and design a desktop and mobile-sized layout. This sort of solves the problem. You and your developer have more to work with, at least. However, what about all the device widths in-between&amp;mdash;you’ll have to cover those as well, right?&lt;/p&gt;
&lt;p&gt;At this point, you wake up and realize you&amp;#8217;re stuck in a familiar loop of ever-increasing deliverables and ever-shrinking profits. Using this old process to tackle new problems &lt;strong&gt;doesn’t really solve any of them&lt;/strong&gt;, and it’s going to kill you from lack of sleep, make you poor from lack of profit, or both.&lt;/p&gt;
&lt;p&gt;There are some good ideas floating around dealing with new processes. &lt;a href="http://www.stuffandnonsense.co.uk/blog/about/time_to_stop_showing_clients_static_design_visuals/"&gt;Some smart folks&lt;/a&gt; are of the very sensible opinion that the only answer is to design in the browser. However, &lt;a href="http://www.sazzy.co.uk/2012/02/why-i-cant-design-in-the-browser/"&gt;other smart folks&lt;/a&gt; have admitted for the quiet rest of us that it&amp;#8217;s really, really hard to design freely in the browser&amp;mdash;at least with current tools.&lt;/p&gt;
&lt;p&gt;Of the emerging new process ideas, those that involve &lt;a href="http://www.thismanslife.co.uk/projects/lab/responsivewireframes/"&gt;responsive HTML/CSS prototypes&lt;/a&gt; look very promising. I&amp;#8217;m planning to investigate these further. However, there are some definite challenges with this approach, not the least of which is the time it takes to create them when the &lt;strong&gt;site content is complex&lt;/strong&gt;. Most of the examples I’ve seen are fairly generic, which doesn&amp;#8217;t translate well to real projects.&lt;/p&gt;
&lt;p&gt;Currently, we are successfully using a different approach. It attempts to optimize content, design, and development time, finding a budget-friendly balance of appropriate direction from all disciplines&amp;mdash;something that is effective, lean and uses quick, widely-accessible tools.&lt;/p&gt;
&lt;h3&gt;Solution: The Priority Guide&lt;/h3&gt;
&lt;p&gt;I used to call this my &amp;#8220;mobile-sized content prototype wireframe thingy.&amp;#8221; For obvious reasons, however, I was encouraged to change the name by pretty much everyone I know. I liked the specificity of the name, but brevity won out. So, I settled on: &lt;strong&gt;Priority Guide&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Essentially, with the priority guide, we create a &lt;strong&gt;single deliverable&lt;/strong&gt; that provides direction for content-focused design and mobile-first development in something resembling a wireframe.&lt;/p&gt;
&lt;p&gt;&lt;a title="Download PDF" href="http://media.smashingmagazine.com/wp-content/uploads/2012/05/Dress-Responsively-Wireframe.pdf"&gt;&lt;img class="alignnone size-full wp-image-112249" title="Dress Responsively Site Priority Guide" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/RWD1.jpg" alt="Image of several screens from the Dress Responsively Site priority guide." width="500" height="444" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a title="Download PDF" href="http://media.smashingmagazine.com/wp-content/uploads/2012/05/Dress-Responsively-Wireframe.pdf"&gt;Download a PDF of the guide.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;By nature, a mobile-sized approach is narrow and forces more of a single column layout. The single column, in turn, causes a linear display of content and features. This linear display makes priority and hierarchy much more apparent than a desktop-sized wireframe, especially if you attempt to use a draft of real content instead of greek text&amp;mdash;hence the &lt;a href="http://uxdesign.smashingmagazine.com/2011/09/26/content-prototyping-in-responsive-web-design/"&gt;content prototype&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;At that point, armed with just this priority guide, the designer sets off to create something beautiful. The designer cranks up trusty ol&amp;#8217; Photoshop and begins a new layout at a traditional desktop resolution&amp;mdash;just like you may have done for the past ten years. For a good web designer (outfitted with his super-duper powers of visualization), it is a &lt;strong&gt;snap to make design decisions&lt;/strong&gt; for a desktop resolution while looking at a mobile plan. That’s just how their minds work.&lt;/p&gt;
&lt;p&gt;&lt;a title="Download JPG" href="http://media.smashingmagazine.com/wp-content/uploads/2012/05/Dress-Responsively-Home.jpg"&gt;&lt;img class="alignnone size-full wp-image-112250" title="Dress Responsively Site Design" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/change-process-site-design500.jpeg" alt="Homepage design for Dress Responsively site." width="500" height="444" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a title="Download JPG" href="http://media.smashingmagazine.com/wp-content/uploads/2012/05/Dress-Responsively-Home.jpg"&gt;Download a hi-res JPG of the final design.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once the design work is done, the handoff to the developer consists of the completed desktop-sized design and the original mobile-sized wireframe.&lt;/p&gt;
&lt;h4&gt;Don&amp;#8217;t Let the Simplicity Fool You&lt;/h4&gt;
&lt;p&gt;This approach may sound simple&amp;mdash;which is part of the beauty of it&amp;mdash;, but it also provides some &lt;strong&gt;real benefits&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The developer is provided a sort of bookended direction, both desktop and mobile. Two guides to follow, each offering unique information. Some interpretation still has to be made, which isn’t a bad thing, but there is far less guess work.&lt;/li&gt;
&lt;li&gt;The designer is given a wireframe that provides hierarchy but does not dictate desktop-sized layout, where ample real estate allows for more creative room to breathe&amp;mdash;designers need to be given their freedom, lest they shrivel up into sad, hollow, hipster-jean-wearing shells of themselves.&lt;/li&gt;
&lt;li&gt;From the prototype and their linear approach, hierarchy can be understood fairly quickly, and the foundation for mobile-first markup and style is implied but flexible.&lt;/li&gt;
&lt;li&gt;All of this is done in a two-deliverable process, like before, so it saves time and budget. Any method you get better results in the same amount of time (or less) is a good.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;A Note About Context&lt;/h4&gt;
&lt;p&gt;Any conversation concerning mobile web draws questions of context. Is there a &amp;#8220;mobile context&amp;#8221;? If one does exist, do users actually have different expectations of a website&amp;#8217;s content while they are mobile? And, if users do have different expectations, how do we address them? Whew.&lt;/p&gt;
&lt;p&gt;In short, those questions aren&amp;#8217;t what this article is about. These issues are &lt;a href="http://mark-kirby.co.uk/2011/the-mobile-context/"&gt;being&lt;/a&gt; &lt;a href="http://www.lukew.com/ff/entry.asp?1333"&gt;discussed&lt;/a&gt; &lt;a href="http://www.useit.com/alertbox/mobile-vs-full-sites.html"&gt;in depth&lt;/a&gt; &lt;a href="http://www.netmagazine.com/opinions/nielsen-wrong-mobile"&gt;elsewhere&lt;/a&gt;. I believe that questions of context can be answered very differently, depending on the project. I&amp;#8217;ll leave it to you and your team to apply due diligence in addressing context.&lt;/p&gt;
&lt;p&gt;What I will suggest, however, is that you &lt;strong&gt;tread very carefully when making assumptions&lt;/strong&gt; about your users and limiting content as a result. Though a mobile context may exist, you can&amp;#8217;t make those assumptions based on screen size alone. People surf the web on their phones from their couches, and they have all the time&amp;mdash;and expectation&amp;mdash;to access all of your site&amp;#8217;s content as they sit and watch TV. This is why we believe in a responsive web design approach that acts as a &lt;a href="http://seesparkbox.com/foundry/safety_net"&gt;safety net&lt;/a&gt; where little to no content is abridged from the experience of the user. This is the approach reflected in the above article&amp;mdash;plan for all content in all contexts.&lt;/p&gt;
&lt;h3&gt;Tools To Consider&lt;/h3&gt;
&lt;h4&gt;Style Tiles&lt;/h4&gt;
&lt;p&gt;Designer &lt;a href="https://twitter.com/#!/samanthatoy"&gt;Samantha Warren&lt;/a&gt; just recently presented her concept of &lt;a href="http://styletil.es/"&gt;Style Tiles&lt;/a&gt; at SXSW. She was featured just days later &lt;a href="http://www.alistapart.com/articles/style-tiles-and-how-they-work/"&gt;on A List Apart&lt;/a&gt; discussing the same concept. We love it. It&amp;#8217;s one of those concepts that makes you slap your forehead, wondering why you didn&amp;#8217;t think of it sooner. It makes sense for web design in general, even more so in responsive design where client delieverables are much more tricky. We are already planning to integrate this into our workflow. We envision this deliverable being presented to a client during the wireframing process, so progress concerning style and layout can be made separately but concurrently.&lt;/p&gt;
&lt;h4&gt;Keynote for Wireframes&lt;/h4&gt;
&lt;p&gt;I’ve been loving Keynote for wireframes lately&amp;mdash;it&amp;#8217;s even great for mobile-sized content prototype wireframe thingies. If you haven’t tried it, give it a shot. It’s quick, easy to learn, and easy to share. A really &lt;a href="http://edenspiekermann.com/en/blog/espi-at-work-the-power-of-keynote"&gt;interesting article&lt;/a&gt; was written recently about designing in Keynote. I’m not sure I’m ready to go that far. However, it’s a fantastic wireframing and planning tool, and there are some great kits to get you started. We’ve been &lt;a href="http://keynotekungfu.com/"&gt;using this one&lt;/a&gt; from &lt;a href="https://twitter.com/#!/tbisaacs"&gt;Travis Isaacs&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;If you gain nothing more from this article, let me remind you what you already know: don’t be afraid to try new things. No process is a silver bullet&amp;mdash;the same is true of tools and deliverables. If the ideas above don&amp;#8217;t fit your project, scrap them and try others. However, you must &lt;strong&gt;evolve your design process&lt;/strong&gt; to account for the evolution of the web and users. If you hope to solve new problems, you&amp;#8217;re going to need a new approach.&lt;/p&gt;
&lt;p&gt;You must also address the very human issue of &lt;em&gt;communication&lt;/em&gt;. Earlier and more &lt;strong&gt;frequent collaboration&lt;/strong&gt; among team members and the client must become the rule in your workflow, not the exception. Content, design, and development team members must review and collaborate regularly at every stage in the creation process until the site is live. We can’t &amp;#8216;throw it over the wall&amp;#8217; anymore&amp;mdash;at least, not if we want our sites to be excellent. There are simply too many moving parts now. Go forth and collaborate.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(jc) (fi)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© Drew Clemens for &lt;a href="http://www.smashingmagazine.com"&gt;Smashing Magazine&lt;/a&gt;, 2012.&lt;/small&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/eIvIxuvzcNg" height="1" width="1"/&gt;</content>
                                                            <link rel="replies" type="text/html" href="http://www.smashingmagazine.com/2012/05/30/design-process-in-the-responsive-age/#comments" thr:count="0" />
        <link rel="replies" type="application/atom+xml" href="http://www.smashingmagazine.com/2012/05/30/design-process-in-the-responsive-age/feed/atom/" thr:count="0" />
        <thr:total>0</thr:total>
    <feedburner:origLink>http://www.smashingmagazine.com/2012/05/30/design-process-in-the-responsive-age/</feedburner:origLink></entry>
            <entry>
        <author>
            <name>Paul Scrivens</name>
                                    <uri>http://www.drawar.com</uri>
                    </author>
        <title type="html"><![CDATA[MUD: Minimum Usable Design]]></title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SmashingMagazine/~3/C6d75jDEuR4/" />
        <id>http://www.smashingmagazine.com/?p=125684</id>
        <updated>2012-05-29T19:07:21Z</updated>
        <published>2012-05-29T13:41:55Z</published>
            <category scheme="http://www.smashingmagazine.com" term="Opinion column" /><category scheme="http://www.smashingmagazine.com" term="psychology" /><category scheme="http://www.smashingmagazine.com" term="Web Design" />        <summary type="html"><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=1" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=2" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=3" border="0" alt="" /></a>
    </div></td></tr></table>
<p>There is a paradox that fits my life. Doesn't matter what aspect of my life I am talking about because it always seems to apply. Even more so when I think about this paradox and the design of this website and other websites. I really hate this paradox.</p>

<p><a href="http://www.smashingmagazine.com/2012/05/29/mud-minimum-usable-design/"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/minimal-letter-m.jpg" width="500" height="281" alt="MUD: Minimum Usable Design" title="MUD: Minimum Usable Design"/></a></p>

<p>“To walk through the woods, you first need to walk halfway through. Then, once you’re in the middle of it, you still need to walk half of the remaining distance, then half of the distance again, and then another half, and you can never successfully make it through the woods.” </p>]]></summary>
                    <content type="html" xml:base="http://www.smashingmagazine.com/2012/05/29/mud-minimum-usable-design/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Wz6uUQPCC45nmuZwSLOysI6Lvxc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wz6uUQPCC45nmuZwSLOysI6Lvxc/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/Wz6uUQPCC45nmuZwSLOysI6Lvxc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wz6uUQPCC45nmuZwSLOysI6Lvxc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;table width="650"&gt;
&lt;tr&gt;
&lt;td width="650"&gt;
&lt;div style="width:650px;"&gt;
      &lt;img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /&gt;&lt;br /&gt;
      &lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=1" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=1" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=2" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=2" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=3" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=3" border="0" alt="" /&gt;&lt;/a&gt;
    &lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;There is a paradox that fits my life. Doesn&amp;#8217;t matter what aspect of my life I am talking about because it always seems to apply. Even more so when I think about this paradox and the design of this website and other websites. I really hate this paradox.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;To walk through the woods, you first need to walk halfway through. Then, once you’re in the middle of it, you still need to walk half of the remaining distance, then half of the distance again, and then another half, and you can never successfully make it through the woods.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;This example is based off of &lt;a href="http://en.wikipedia.org/wiki/Zeno's_paradoxes"&gt;Zeno&amp;#8217;s paradoxes&lt;/a&gt;, which are even more mind-boggling than the one above.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;No matter what stage of a design I am in, I am always halfway there. This is why you might find yourself always saying that you need two more weeks to finish up all the details. It will always be two more weeks no matter what, because all you did was get halfway from where you were to where you are trying to go. Using this mentality can wear you down, but if you twist it around a bit, it can be used as motivation to achieve a successful design.&lt;/p&gt;
&lt;h3&gt;A Totally Made Up Theory&lt;/h3&gt;
&lt;p&gt;Let&amp;#8217;s use our good ol&amp;#8217; sparring partner &lt;a href="http://google.com"&gt;Google&lt;/a&gt; as an example. You are about to sit down and create the first home page in Google&amp;#8217;s history. If you had an infinite amount of time you could tackle any part of the design that you wanted without any worries. But unfortunately life doesn&amp;#8217;t give us non-deadlined projects. Because of this, you know the goal that you are striving to achieve&amp;mdash;you know what it looks like once you leave the woods, so first, you just have to get halfway there.&lt;/p&gt;
&lt;p&gt;If the very first half makes the design at least 50% usable then what would you design first? The logo? The footer? The obvious choice would be the search box and button. In fact, if you design that, then you are probably over 50% of the way through with the design because the website is now usable. It&amp;#8217;s good to get that first 50% out of the way, and now you are halfway to your end goal. Some people like to call this working from the inside out.&lt;/p&gt;
&lt;p&gt;Next step is to get halfway from where we are now to where we need to be. I think it&amp;#8217;s important that we have some kind of branding on the page so people know where to come back to next time they want to search. That means I put the logo on the page. Once I am done with that I&amp;#8217;m 75% of the way to my goal. 75% of the way through and how many people in the world would be satisfied with using Google if it had nothing but a logo, search bar and one button on it? I&amp;#8217;m betting more than 75%. But if getting 75% of the way towards our goal can please even 75% of our audience, we might be doing a good job.&lt;/p&gt;
&lt;p&gt;If you continue on with this process of knocking out half of what you need to do, eventually you will get close enough to your goal where good enough is as good as you are going to get. I know people argue about what good enough means, but if you are 99% of the way to where you are trying to go, then good enough is good enough.&lt;/p&gt;
&lt;h3&gt;MUD&lt;/h3&gt;
&lt;p&gt;In the startup community there is a term called &lt;em&gt;minimum viable product&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;#8220;A Minimum Viable Product has just those features (and no more) that allows the product to be deployed.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Minimum Viable Product, from &lt;a href="http://en.wikipedia.org/wiki/Minimum_viable_product"&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;#8217;m coining the term &lt;em&gt;Minimum Usable Design&lt;/em&gt;, and that is when you reach your 50% mark for your design. If you can&amp;#8217;t use your design after you have reached 50% (or a person can&amp;#8217;t understand at least 50% of what is going on) then you haven&amp;#8217;t reached the 50% mark yet.&lt;/p&gt;
&lt;p&gt;By no means does this imply that you should show your design to the public at the 50% mark, but you can use it as a way to gauge your progress. Sometimes you need to wait untill you are 99% done before showing your work to a larger audience. There is nothing wrong with striving for perfection, but it depends on your design and audience. &lt;a href="http://apple.com/"&gt;Apple&lt;/a&gt; does &lt;em&gt;minimum viable product&lt;/em&gt; with the limited features on their products, but make up for it with &lt;em&gt;maximum viable design&lt;/em&gt; (a new term, crown me king).&lt;/p&gt;
&lt;h3&gt;An Example&lt;/h3&gt;
&lt;p&gt;Blog design is a very simplistic example, but lets run with it. On my website, &lt;a href="http://drawar.com"&gt;Drawar&lt;/a&gt;, the main goal is to get people to read the content. If I can do that, I have achieved my number one goal, and it just so happens that this goal will keep the majority of my audience happy. Because of this, I want to make the content easy to get to, and so I need to know what design will help me get there.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/04/mud-1.jpg"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/mud-1.jpg" alt="" title="mud-1" width="500" height="349" class="alignnone size-full wp-image-129740" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;The 50% mark. Not much, but it achieves the #1 goal.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;With this design, anyone that comes to my website can read the content. That is 50% of my journey, but now I need to go the other half to reach another subset of people coming to my design. I decide next that there should be some branding on the website so that people can know where they are at and remember the website if they visit it again.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/04/mud-2.jpg"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/mud-2.jpg" alt="" title="mud-2" width="498" height="296" class="alignnone size-full wp-image-129737" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;Now the design is 75% there.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Now when you visit the website you know where you are at, but notice that the additions didn&amp;#8217;t take away from the original MUD that I created. From here I can take another halfway point journey by adding links to other sections of the website, and also provide a bit of context about the website they are on.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/04/mud-3.jpg"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/mud-3.jpg" alt="" title="mud-3" width="500" height="292" class="alignnone size-full wp-image-129741" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;87.5% of the way&amp;#8230;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Again, the additions do not take away from the original 50%, so that is a good thing. Time for one more halfway journey before I push the website out, and that would be adding some revenue.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/04/mud-4.jpg"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/mud-4.jpg" alt="" title="mud-4" width="500" height="305" class="alignnone size-full wp-image-129744" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;93.75% complete (well, at least to me).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Basically the design is finished, but there are additional things I could add to the design to make it more complete to some people. For example, search, social media widgets, and possibly a blogroll. I&amp;#8217;ve set the goals of the design though, so I understand the milestones that I want to achieve.&lt;/p&gt;
&lt;h3&gt;Design Is Never Finished&lt;/h3&gt;
&lt;p&gt;Although I&amp;#8217;m happy with the end result of the design, it doesn&amp;#8217;t mean it will work for everyone that visits. Someone will always want to get more out of a design, and that is why a design will never be able to leave the forest. Fortunately, the more halfway points you knock out in a design, the smaller the subset of people that are still wanting more out of it. Be careful though, because adding too much will take away from the original 50%, which was the main purpose of the design from the beginning.&lt;/p&gt;
&lt;p&gt;And don&amp;#8217;t think that this only applies to &amp;#8220;minimalistic&amp;#8221; websites&amp;mdash;that is just my style of design, but it applies just as much to the designs that add a lot of flare to their aesthetic. &lt;a href="http://tapbots.com/software/tweetbot/"&gt;Tweetbot&lt;/a&gt;, for example, isn&amp;#8217;t any less of a usable design than other Twitter clients in my mind, because it adds a bit more flash to its design elements.&lt;/p&gt;
&lt;p&gt;Always aim for the next halfway point and you will get closer and closer to the edge of the forest&amp;mdash;but remember that you will never reach the end. Designs can always be improved upon, and therefore will always be unfinished.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Image on frontpage created by &lt;a href="http://blog.libbylevi.com/"&gt;Libby Levi&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(jvb) (jc)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© Paul Scrivens for &lt;a href="http://www.smashingmagazine.com"&gt;Smashing Magazine&lt;/a&gt;, 2012.&lt;/small&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/C6d75jDEuR4" height="1" width="1"/&gt;</content>
                                                            <link rel="replies" type="text/html" href="http://www.smashingmagazine.com/2012/05/29/mud-minimum-usable-design/#comments" thr:count="21" />
        <link rel="replies" type="application/atom+xml" href="http://www.smashingmagazine.com/2012/05/29/mud-minimum-usable-design/feed/atom/" thr:count="21" />
        <thr:total>21</thr:total>
    <feedburner:origLink>http://www.smashingmagazine.com/2012/05/29/mud-minimum-usable-design/</feedburner:origLink></entry>
            <entry>
        <author>
            <name>Daniel Sternlicht</name>
                                    <uri>http://danielsternlicht.com</uri>
                    </author>
        <title type="html"><![CDATA[Develop A One-Of-A-Kind CSS/JS-Based Game Portfolio]]></title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SmashingMagazine/~3/rWjEL62MWe8/" />
        <id>http://mgmt.smashingmagazine.com/?p=133149</id>
        <updated>2012-05-28T10:58:35Z</updated>
        <published>2012-05-28T10:09:23Z</published>
            <category scheme="http://www.smashingmagazine.com" term="Coding" />        <summary type="html"><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=1" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=2" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=3" border="0" alt="" /></a>
    </div></td></tr></table>
<p>A portfolio is a must-have for any designer or developer who wants to stake their claim on the Web. It should be as unique as possible, and with a bit of HTML, CSS and JavaScript, you could have a one-of-a-kind portfolio that capably represents you to potential clients.</p>

<p><a href="http://coding.smashingmagazine.com/2012/05/28/develop-a-one-of-a-kind-cssjs-based-game-portfolio/"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/daniel-sternlicht-screenshot.jpg" width="500" height="365" alt="Develop A One-Of-A-Kind CSS/JS-Based Game Portfolio" title="Develop A One-Of-A-Kind CSS/JS-Based Game Portfolio" /></a></p>

<p>Before getting down to business, let’s talk about portfolios. A portfolio is a great tool for Web designers and developers to show off their skills. As with any project, spend some time learning to develop a portfolio and doing a little research on what’s going on in the Web design industry, so that the portfolio presents you as an up to date, innovative and inspiring person. All the while, keep in mind that going with the flow isn’t necessarily the best way to stand out from the crowd.</p>]]></summary>
                    <content type="html" xml:base="http://www.smashingmagazine.com/2012/05/28/develop-a-one-of-a-kind-cssjs-based-game-portfolio/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dD9uX8rBXmzF6VBIRAg5HmZM25A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dD9uX8rBXmzF6VBIRAg5HmZM25A/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/dD9uX8rBXmzF6VBIRAg5HmZM25A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dD9uX8rBXmzF6VBIRAg5HmZM25A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;table width="650"&gt;
&lt;tr&gt;
&lt;td width="650"&gt;
&lt;div style="width:650px;"&gt;
      &lt;img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /&gt;&lt;br /&gt;
      &lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=1" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=1" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=2" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=2" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=3" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=3" border="0" alt="" /&gt;&lt;/a&gt;
    &lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;A portfolio is a must-have for any designer or developer who wants to stake their claim on the Web. It should be as unique as possible, and with a bit of HTML, CSS and JavaScript, you could have a one-of-a-kind portfolio that capably represents you to potential clients. In this article, I’ll show you how I created my 2-D Web-based game portfolio.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/1.png" width="500" alt="Daniel Sternlicht Portfolio." /&gt;&lt;br /&gt;&lt;em&gt;The 2-D Web-based game portfolio of &lt;a href="http://danielsternlicht.com"&gt;Daniel Sternlicht&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Before getting down to business, let’s talk about portfolios.&lt;/p&gt;
&lt;p&gt;A portfolio is a great tool for Web designers and developers to show off their skills. As with any project, spend some time learning to develop a portfolio and doing a little research on what&amp;#8217;s going on in the Web design industry, so that the portfolio presents you as an up to date, innovative and inspiring person. All the while, keep in mind that going with the flow isn’t necessarily the best way to stand out from the crowd.&lt;/p&gt;
&lt;p&gt;One last thing before we dive into the mystery of my Web-based game portfolio. I use jQuery which has made my life much easier by speeding up development and keeping my code clean and simple.&lt;/p&gt;
&lt;p&gt;Now, let’s get our hands dirty with some code.&lt;/p&gt;
&lt;h3&gt;The HTML&lt;/h3&gt;
&lt;p&gt;Let’s warm up with a quick overview of some very basic HTML code. It’s a bit long, I know, but let’s take it step by step.&lt;/p&gt;
&lt;pre class="brush: html"&gt;
&amp;lt;div id="wrapper"&amp;gt;

    &lt;!-- Main Text --&gt;
    &amp;lt;hgroup id="myInfo"&amp;gt;
        &amp;lt;h1&amp;gt;DANIEL STERNLICHT&amp;lt;/h1&amp;gt;
        &amp;lt;h2&amp;gt;Web Designer, Front-End Developer&amp;lt;/h2&amp;gt;
    &amp;lt;/hgroup&amp;gt;

    &lt;!-- Start Cave --&gt;
    &amp;lt;div id="startCave" class="cave"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div id="startCaveHole" class="caveHole"&amp;gt;&amp;lt;/div&amp;gt;

    &lt;!-- Main Road --&gt;
    &amp;lt;div id="mainRoad" class="road"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div id="leftFence"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div id="rightFence"&amp;gt;&amp;lt;/div&amp;gt;

    &lt;!-- Me --&gt;
    &amp;lt;div id="daniel"&amp;gt;&amp;lt;/div&amp;gt;

    &lt;!-- Stop Station 1 --&gt;
    &amp;lt;div id="aboutRoad" class="road side"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div id="aboutHouse" class="house"&amp;gt;
        &amp;lt;div class="door"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class=”lightbox”&amp;gt;…&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div id="aboutSign" class="sign"&amp;gt;
        &amp;lt;span&amp;gt;About Me&amp;lt;/span&amp;gt;
    &amp;lt;/div&amp;gt;

    &lt;!-- Stop Station 2 --&gt;
    …

    &lt;!-- Stop Station 3 --&gt;
    …

    &lt;!-- View --&gt;
    &amp;lt;div id="rightTrees" class="trees"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div id="leftGrass" class="grass"&amp;gt;&amp;lt;/div&amp;gt;

    &lt;!-- Sea --&gt;
    &amp;lt;div id="endSea" class="sea"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div id="endBridge" class="bridge"&amp;gt;&amp;lt;/div&amp;gt;

    &amp;lt;div id="boat" class="isMoored"&amp;gt;
        &amp;lt;div class="meSail"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;

&amp;lt;/div&amp;gt;
&lt;/pre&gt;
&lt;p&gt;The HTML is not very complicated, and I could have used an &lt;a href="http://sixrevisions.com/html/canvas-element/"&gt;HTML5 canvas&lt;/a&gt; element for this game, but I felt more comfortable using simple HTML DOM elements.&lt;/p&gt;
&lt;p&gt;Basically, we have the main &lt;code&gt;#wrapper&lt;/code&gt; div, which contains the game’s elements, most of which are represented as div elements (I chose divs because they are easy to manipulate).&lt;/p&gt;
&lt;p&gt;Have a &lt;a href="http://danielsternlicht.com"&gt;quick look at my game&lt;/a&gt;. Can you detect what makes up the game view?&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/2.png" width="500" alt="The game view" /&gt;&lt;br /&gt;&lt;em&gt;The game view&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We have roads, trees, fences, water, caves, houses and so on.&lt;/p&gt;
&lt;p&gt;Back to our HTML. You’ll find an element for each of these items, with the relevant class and ID. Which brings us to the CSS.&lt;/p&gt;
&lt;h3&gt;The CSS&lt;/h3&gt;
&lt;p&gt;First of all, note that I prepared the HTML to follow the principles of &lt;a href="http://coding.smashingmagazine.com/2011/12/12/an-introduction-to-object-oriented-css-oocss/"&gt;object-oriented CSS&lt;/a&gt; by determining global classes for styling, and not using IDs as styling hooks. For example, I used the class &lt;code&gt;.road&lt;/code&gt; on each element that should look like a road. The CSS for the &lt;code&gt;.road&lt;/code&gt; class would be:&lt;/p&gt;
&lt;pre class="brush: css"&gt;
.road {
   position: absolute;
   background: url(images/road.png) repeat;
}
&lt;/pre&gt;
&lt;p&gt;Take trees as another example:&lt;/p&gt;
&lt;pre class="brush: css"&gt;
.trees {
   position: absolute;
   background: url(images/tree.png) repeat 0 0;
}
&lt;/pre&gt;
&lt;p&gt;Note that almost all of the elements are absolutely positioned on the game’s canvas. Positioning the elements relatively would be impossible for our purposes, especially because we want the game to be as &lt;strong&gt;responsive&lt;/strong&gt; as possible (within limits, of course &amp;mdash; the minimum width that I deal with is 640 pixels). We can write a general rule giving all of the DOM elements in the game an absolute position:&lt;/p&gt;
&lt;pre class="brush: css"&gt;
#wrapper * {
   position: absolute;
}
&lt;/pre&gt;
&lt;p&gt;This snippet will handle all of the child elements inside the &lt;code&gt;#wrapper&lt;/code&gt; div, and it frees us from having to repeat code.&lt;/p&gt;
&lt;p&gt;One more word about the CSS. The animations in the game are done with &lt;strong&gt;CSS3 transitions and animations&lt;/strong&gt;, excluding certain features such the lightboxes and player “teleporting.” There are two reasons for this.&lt;/p&gt;
&lt;p&gt;The first is that one of the purposes of this portfolio is to demonstrate innovation and up-to-date development, and what’s more innovative than using the power of CSS3?&lt;/p&gt;
&lt;p&gt;The second reason is performance. Upon reading Richard Bradshaw’s very interesting article “&lt;a href="http://css3.bradshawenterprises.com/"&gt;Using CSS3 Transitions, Transforms and Animation&lt;/a&gt;,” I came to the overwhelming conclusion: &lt;strong&gt;use CSS3 when you can&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A great example of the power of CSS3 animations in my portfolio is the pattern of movement of the water. The CSS looks like this:&lt;/p&gt;
&lt;pre class="brush: css"&gt;
.sea {
   left: 0;
   width: 100%;
   height: 800px;
   background: url(images/sea.png) repeat 0 0;
   -webkit-animation: seamove 6s linear infinite;   /* Webkit support */
   -moz-animation: seamove 6s linear infinite;      /* Firefox support */
   animation: seamove 6s linear infinite;          /* Future browsers support */
}
&lt;/pre&gt;
&lt;p&gt;And here is the code for the animation itself:&lt;/p&gt;
&lt;pre class="brush: css"&gt;
/* Webkit support */
@-webkit-keyframes seamove {
   0% {
      background-position: 0 0;
   }
   100% {
      background-position: 65px 0;
   }
}

@-moz-keyframes seamove {…}   /* Firefox support */
@-keyframes seamove {…}       /* Future browsers support */
&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/04/3.png"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/3.png" width="500" alt="Sea.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;The sea PNG is marked out.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The repeating &lt;code&gt;sea.png&lt;/code&gt; image is 65 pixels wide, so to give the sea a waving effect, we should move it by the same number of pixels. Because the background is repeating, it gives us the effect we want.&lt;/p&gt;
&lt;p&gt;Another cool example of CSS3 animations happens when the player steps into the boat and sails off the screen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/04/4.png"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/4.png" width="500" alt="Boat sails" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;The boat sails off the screen, revealing the “Contact” section.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If the player gets back onto the road, you’ll notice that the boat moves in “reverse,” back to its original position. It sounds complicated, but you have no idea how easy it is with CSS3 transitions. All I did was capture the event with JavaScript to determine whether the user is “on board.” If the user is, then we add the class &lt;code&gt;.sail&lt;/code&gt; to the boat element, which make it sail off; otherwise, we withhold this class. At the same time, we add a &lt;code&gt;.show&lt;/code&gt; class to the &lt;code&gt;#contact&lt;/code&gt; wrapper, which smoothly reveals the contact form in the water. The CSS of the boat looks like this:&lt;/p&gt;
&lt;pre class="brush: css"&gt;
#boat {
   position: absolute;
   bottom: 500px;
   left: 50%;
   margin-left: -210px;
   width: 420px;
   height: 194px;
   background: url(images/boat.png) no-repeat center;
   -webkit-transition: all 5s linear 1.5s;
   -moz-transition: all 5s linear 1.5s;
   transition: all 5s linear 1.5s;
}
&lt;/pre&gt;
&lt;p&gt;When we add the class &lt;code&gt;.sail&lt;/code&gt; to it, all I’m doing is changing its &lt;code&gt;left&lt;/code&gt; property.&lt;/p&gt;
&lt;pre class="brush: css"&gt;
#boat.sail {
   left: -20%;
}
&lt;/pre&gt;
&lt;p&gt;The same goes for the &lt;code&gt;#contact&lt;/code&gt; wrapper with the class &lt;code&gt;.show&lt;/code&gt;. Except here, I’m playing with the &lt;code&gt;opacity&lt;/code&gt; property:&lt;/p&gt;
&lt;pre class="brush: css"&gt;
#contact.show {
   opacity: 1;
}
&lt;/pre&gt;
&lt;p&gt;CSS3 transitions do the rest of the work.&lt;/p&gt;
&lt;h3&gt;The JavaScript&lt;/h3&gt;
&lt;p&gt;Because we are dealing with a &lt;strong&gt;2-D game&lt;/strong&gt;, we might want to base it on a JavaScript game engine, perhaps an existing framework. But the thing about frameworks (excluding jQuery, which I’m using as a base) is that they are usually good for a head start, but they probably won’t fit your needs in the long run.&lt;/p&gt;
&lt;p&gt;A good example is the lightboxes in my portfolio, which provide information about me and are activated when the user enters a house. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/04/5.png"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/5.png" width="500" alt="An example of a lightbox in the game" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;An example of a lightbox in the game. (&lt;a href=”http://media.smashingmagazine.com/wp-content/uploads/2012/04/5.png”&gt;Large image&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This kind of functionality doesn’t exist in a regular JavaScript game engine. You could always improve an existing framework with your own code, but diving into someone else’s code sometimes takes longer than writing your own. Moreover, if you rewrite someone else’s code, it could become a problem when a new version is released.&lt;/p&gt;
&lt;p&gt;After passing over libraries such as &lt;a href="http://craftyjs.com/"&gt;Crafty&lt;/a&gt;, &lt;a href="http://www.limejs.com/"&gt;LimeJS&lt;/a&gt; and &lt;a href="http://impactjs.com/"&gt;Impact&lt;/a&gt;, which really are great game engine frameworks, I felt I had no choice but to build my own engine to fit my needs.&lt;/p&gt;
&lt;p&gt;Let’s quickly review the main methods that I’m running in the game.&lt;/p&gt;
&lt;p&gt;To handle the keyboard arrow events, I use the following code:&lt;/p&gt;
&lt;pre class="brush: js"&gt;
$(window).unbind('keydown').bind('keydown', function(event) {
    switch (event.keyCode) {
        event.preventDefault();
        case 37: // Move Left
            me.moveX(me.leftPos - 5, 'left');
        break;

        case 39: // Move Right
            me.moveX(me.leftPos + 5, 'right');
        break;

        case 38: // Move Up
            me.moveY(me.topPos - 5, 'up');
        break;

        case 40: // Move Down
            me.moveY(me.topPos + 5, 'down');
        break;
    }
});
&lt;/pre&gt;
&lt;p&gt;As you can see, the code is very simple. When the user presses the up or down arrow, I call the &lt;code&gt;moveY()&lt;/code&gt; function, and when they press right or left, I call &lt;code&gt;moveX()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A quick peek at one of them reveals all the magic:&lt;/p&gt;
&lt;pre class="brush: js"&gt;
moveX: function(x, dir) {
    var player = this.player;
    var canMove = this.canImove(x, null);
    if(canMove){
        this.leftPos = x;
        player.animate({'left': x + 'px'}, 10);
    }
    if(dir == 'left') {
        this.startMoving('left', 2);
    }
    else {
        this.startMoving('right', 3);
    }
}
&lt;/pre&gt;
&lt;p&gt;At each step the player takes, I check with a special method named &lt;code&gt;canImove()&lt;/code&gt; (i.e. “Can I move?”) to determine whether the character may move over the game canvas. This method include screen boundaries, house positions, road limits and so on, and it gets two variables, including the x and y coordinates of where I want the player to move to. In our example, if I wanted the player to move left, I’d pass to the method their current left position plus 5 pixels. If I wanted them to move right, I’d pass its current position minus 5 pixels.&lt;/p&gt;
&lt;p&gt;If the character “can move,” I return &lt;code&gt;true&lt;/code&gt;, and the character keeps moving; or else, I return &lt;code&gt;false&lt;/code&gt;, and the character remains in their current position.&lt;/p&gt;
&lt;p&gt;Note that in the &lt;code&gt;moveX()&lt;/code&gt; method, I’m also checking the direction in which the user wants to go, and then I call a method named &lt;code&gt;startMoving()&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="brush: js"&gt;
if(dir == 'left') {
   this.startMoving('left', 2);
}
else {
   this.startMoving('right', 3);
}
&lt;/pre&gt;
&lt;p&gt;You’re probably wondering how the walking effect on the character is achieved. You might have noticed that I’m using CSS sprites. But how do I activate them? It’s actually quite simple, with the help of a jQuery plugin called &lt;a href="http://www.spritely.net/"&gt;Spritely&lt;/a&gt;. This amazing plugin enables you to animate CSS sprites simply by calling the method on the relevant element and passing it your properties (such as the number of frames).&lt;/p&gt;
&lt;p&gt;Back to our &lt;code&gt;startMoving()&lt;/code&gt; method:&lt;/p&gt;
&lt;pre class="brush: js"&gt;
startMoving: function(dir, state) {
   player.addClass(dir);
   player.sprite({fps: 9, no_of_frames: 3}).spState(state);
}
&lt;/pre&gt;
&lt;p&gt;I simply add a direction class to the player element (which sets the relevant sprite image), and then call the &lt;code&gt;sprite()&lt;/code&gt; method from Spritely’s API.&lt;/p&gt;
&lt;p&gt;Because we are dealing with the Web, I figured that being able to move with the keyboard arrows would not be enough. You always have to think of the user, your client, who might not have time to hang out in your world. That is why I added both a navigation bar and an option to “teleport” the character to a given point in the game &amp;mdash; again, using the &lt;code&gt;canImove()&lt;/code&gt; method to check whether the player may move to this point.&lt;/p&gt;
&lt;p&gt;Next we’ve got the lightboxes. Recall what the HTML looks like for each house:&lt;/p&gt;
&lt;pre class="brush: html"&gt;
&amp;lt;div id="aboutHouse" class="house"&amp;gt;
   &amp;lt;div class="door"&amp;gt;&amp;lt;/div&amp;gt;
   &amp;lt;div class="lightbox"&amp;gt;
      &amp;lt;div class="inner about"&amp;gt;
         Lightbox content goes here…
      &amp;lt;/div&amp;gt;
   &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Did you notice the &lt;code&gt;.lightbox&lt;/code&gt; class in the &lt;code&gt;house&lt;/code&gt; div? We will use it later. What I basically did was define a “hot spot” for each house. When the player gets to one of those hot spots, the JavaScript activates the &lt;code&gt;lightboxInit(elm)&lt;/code&gt; method, which also gets the relevant house’s ID. This method is very simple:&lt;/p&gt;
&lt;pre class="brush: js"&gt;
lightboxInit:  function(elm) {
   // Get the relevant content
   var content = $(elm).find('.lightbox').html();

   // Create the lightbox
   $('&amp;lt;div id="dark"&amp;gt;&amp;lt;/div&amp;gt;').appendTo('body').fadeIn();
   $('&amp;lt;div id="lightbox"&amp;gt;' + content + '&amp;lt;span id="closeLB"&amp;gt;x&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;').insertAfter("#dark").delay(1000).fadeIn();
}
&lt;/pre&gt;
&lt;p&gt;First, I get the relevant content by finding the &lt;code&gt;div.lightbox&lt;/code&gt; child of the house element. Then, I create and fade in a blank div, named &lt;code&gt;dark&lt;/code&gt;, which gives me the dark background. Finally, I create another div, fill it up with the content (which I had already stored in a variable), and insert it right after the dark background. Clicking the “x” will call another method that fades out the lightbox and removes it from the DOM.&lt;/p&gt;
&lt;p&gt;One good practice that I unfortunately learned the hard way is to &lt;strong&gt;keep the code as dynamic as possible&lt;/strong&gt;. Write your code in such a way that if you add more content to the portfolio in future, the code will support it.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;As you can see, developing a 2-D Web-based game is fun and not too complicated a task at all. But before rushing to develop your own game portfolio, consider that it doesn’t suit everyone. If your users don’t have any idea what HTML5 is or why IE 5.5 isn’t the “best browser ever,” then your effort will be a waste of time, and perhaps this kind of portfolio would alienate them. Which is bad.&lt;/p&gt;
&lt;p&gt;Nevertheless, I learned a lot from this development process and I highly recommend, whatever kind of portfolio you choose, that you invest a few days in developing your &lt;em&gt;own&lt;/em&gt; one of a kind portfolio.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(al)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© Daniel Sternlicht for &lt;a href="http://www.smashingmagazine.com"&gt;Smashing Magazine&lt;/a&gt;, 2012.&lt;/small&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/rWjEL62MWe8" height="1" width="1"/&gt;</content>
                                                            <link rel="replies" type="text/html" href="http://www.smashingmagazine.com/2012/05/28/develop-a-one-of-a-kind-cssjs-based-game-portfolio/#comments" thr:count="0" />
        <link rel="replies" type="application/atom+xml" href="http://www.smashingmagazine.com/2012/05/28/develop-a-one-of-a-kind-cssjs-based-game-portfolio/feed/atom/" thr:count="0" />
        <thr:total>0</thr:total>
    <feedburner:origLink>http://www.smashingmagazine.com/2012/05/28/develop-a-one-of-a-kind-cssjs-based-game-portfolio/</feedburner:origLink></entry>
            <entry>
        <author>
            <name>Chen Blume</name>
                                    <uri>http://www.on-pixel.com</uri>
                    </author>
        <title type="html"><![CDATA[Blueprints For The Web: Specctr Adobe Fireworks Plugin]]></title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SmashingMagazine/~3/-B33ss5MHaY/" />
        <id>http://mgmt.smashingmagazine.com/?p=133017</id>
        <updated>2012-05-25T13:27:14Z</updated>
        <published>2012-05-25T13:25:15Z</published>
            <category scheme="http://www.smashingmagazine.com" term="Fireworks" />        <summary type="html"><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=1" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=2" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=3" border="0" alt="" /></a>
    </div></td></tr></table>
<p>There is an aspect to Web design that no one likes to talk about: spec’ing. We all do it, we all hate it, but we also understand that specs are vital to both designers and developers.</p>

<p><a href="http://fireworks.smashingmagazine.com/2012/05/25/blueprints-for-the-web-specctr-adobe-fireworks-plugin/"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/specctr-intro-500.png" alt="Blueprints For The Web: Specctr Adobe Fireworks Plugin" title="Blueprints For The Web: Specctr Adobe Fireworks Plugin" width="500" height="204" /></a></p>

<p>For those who aren’t familiar with the term in this context, “specs” is short for specifications—in the case of design, they are instructions that specify colors, fonts, sizes, spacing and so on, just like a blueprint. Specs are a crucial part of the design and development process for companies with big teams and for small companies that have to outsource some of their development.</p>

]]></summary>
                    <content type="html" xml:base="http://www.smashingmagazine.com/2012/05/25/blueprints-for-the-web-specctr-adobe-fireworks-plugin/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mJvVeLFFqDqSY6tMpX6NcAmfYHQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mJvVeLFFqDqSY6tMpX6NcAmfYHQ/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/mJvVeLFFqDqSY6tMpX6NcAmfYHQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mJvVeLFFqDqSY6tMpX6NcAmfYHQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;table width="650"&gt;
&lt;tr&gt;
&lt;td width="650"&gt;
&lt;div style="width:650px;"&gt;
      &lt;img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /&gt;&lt;br /&gt;
      &lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=1" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=1" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=2" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=2" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=3" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=3" border="0" alt="" /&gt;&lt;/a&gt;
    &lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;There is an aspect to Web design that no one likes to talk about: spec’ing. We all do it, we all hate it, but we also understand that specs are vital to both designers and developers.&lt;/p&gt;
&lt;p&gt;For those who aren’t familiar with the term in this context, “specs” is short for &lt;strong&gt;specifications&lt;/strong&gt; &amp;mdash; in the case of design, they are instructions that specify colors, fonts, sizes, spacing and so on, just like a blueprint. Specs are a crucial part of the design and development process for companies with big teams and for small companies that have to outsource some of their development. Specs function not only as instructions to developers, but also as a &lt;strong&gt;reference point&lt;/strong&gt; to make sure the whole team is on the same page.&lt;/p&gt;
&lt;p&gt;However, the process of producing specs is repetitive and time-consuming, especially for creatives. But now this can all change: &lt;a href="http://www.specctr.com"&gt;Specctr&lt;/a&gt;, together with &lt;a href="https://www.adobe.com/products/fireworks.html"&gt;Adobe Fireworks&lt;/a&gt;, offers a quick and easy way to generate this important information automatically.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://fireworks.smashingmagazine.com/?p=112232"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/03/specctr-intro.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;The Idea&lt;/h3&gt;
&lt;p&gt;My idea to make Specctr came from my personal experience working on a design team at a large corporation. Spec’ing was part of my routine. One day, after hours of spec’ing, my eyes hurt and I was bored and frustrated. Suddenly, I realized that this kind of intensive work should be automated, and that a designer&amp;#8217;s time is much better spent designing rather than spec’ing.&lt;/p&gt;
&lt;p&gt;Specctr is more than a tool: it is a business solution for any company whose designers must generate specs for developers. Specctr facilitates this communication and leaves designers and developers happier and more productive. Making this process quicker frees up the business to focus more intently on its core mission.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/03/specctr-timesavings.png" alt="Time savings with Specctr" /&gt;&lt;br /&gt;
&lt;em&gt;Possible time saved using Specctr for Adobe Fireworks.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;iframe width="500" height="254" src="http://www.youtube.com/embed/k6A2uNs0e5o?rel=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;em&gt;Time saved using Fireworks and Specctr Pro.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In the process of creating Specctr, I brought my design background and practical experience in spec’ing to bear on the issues and opportunities in automating the process. Meanwhile, my colleague, Dmitriy Fabrikant, engineered the software from the ground up. Working in tandem at On Pixel, we released Specctr Pro in January 2012. Since then, it has received many favorable reviews.&lt;/p&gt;
&lt;h3&gt;Specctr Lite&lt;/h3&gt;
&lt;p&gt;In addition to the commercial version of the tool, we&amp;#8217;re happy to release a free version called Specctr Lite as a contribution to the community. We chose to highlight width and height as well as text spec’ing abilities, because they are most common to a designer&amp;#8217;s workflow. These two feature sets alone will save a lot of valuable time.&lt;/p&gt;
&lt;p&gt;The Lite version includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Width and height&lt;/li&gt;
&lt;li&gt;Text spec (font family, size, color)&lt;/li&gt;
&lt;li&gt;Expand canvas feature&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Specctr Lite can be &lt;a href="http://specctr.com/buy.html"&gt;downloaded for free from our website&lt;/a&gt;, and we&amp;#8217;re happy to say that it was created and released as a result of the involvement of Smashing Magazine!&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/03/specctr-full-vs-lite.png" alt="Specctr Pro and Specctr Lite: a quick comparison" /&gt;&lt;br /&gt;
&lt;em&gt;Pro and Lite: a quick comparison&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The Lite version is as easy to use as the Pro version, and its features work the same way.&lt;/p&gt;
&lt;h3&gt;Requirements And Installation&lt;/h3&gt;
&lt;p&gt;To use Specctr (Pro or Lite), you need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Mac or PC&lt;/li&gt;
&lt;li&gt;A copy of Adobe Fireworks CS3, CS4, CS5 or CS5.1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The installation process is pretty straightforward:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download the Specctr installer&lt;/li&gt;
&lt;li&gt;Double-click the MXP file to open the Adobe Extension Manager&lt;/li&gt;
&lt;li&gt;Click on “Install”&lt;/li&gt;
&lt;li&gt;Restart Adobe Fireworks&lt;/li&gt;
&lt;li&gt;In Fireworks, go to &lt;code&gt;Window &amp;#8594; Specctr&lt;/code&gt; to open the Specctr panel.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Please note:&lt;/strong&gt; If you are using Windows Vista or 7, you might need to launch the Adobe Extension Manager as Administrator, otherwise the extension could fail to install.&lt;/p&gt;
&lt;p&gt;If you still have questions, don&amp;#8217;t hesitate to consult our &lt;a href="http://specctr.com/download/specctr_tutorial.pdf"&gt;online tutorial&lt;/a&gt; (PDF, 1.9 MB) or &lt;a href="http://specctr.com/support.html"&gt;contact us&lt;/a&gt; directly!&lt;/p&gt;
&lt;h3&gt;Specctr Pro&lt;/h3&gt;
&lt;h4&gt;A Brief How-To Guide&lt;/h4&gt;
&lt;p&gt;Once you install Specctr through the Adobe Extension Manager, restart Fireworks, and then open Specctr from the &lt;code&gt;Window&lt;/code&gt; menu. Now that Specctr is open, you can spec a document in a few easy steps.&lt;/p&gt;
&lt;p&gt;First, prepare your document by making room for your specs. Select the size of your design’s border, and click on the “Expand Canvas” button.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/SpecctrButtons_021.png" width="500" height="180" alt="Expand Canvas" /&gt;&lt;/p&gt;
&lt;p&gt;Select which details to display by toggling them on or off from the panel&amp;#8217;s menu.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/SpecctrButtons_031.png" width="500" height="240" alt="Select the details" /&gt;&lt;/p&gt;
&lt;p&gt;Now Specctr Pro will automatically display your spec with a click of the button.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/SpecctrButtons_01.png" width="500" height="200" alt="Object, Width/Height, Spacing" /&gt;&lt;/p&gt;
&lt;p&gt;To spec a shape (shape, line, dot, etc.) or a text object, select the object (or multiple objects), and click on the “Spec Object” button. The specs will be outputted to the nearest edge of the canvas.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/Features_Object_sm.png" width="500" height="277" alt="Object properties (specs)" /&gt;&lt;br /&gt;
&lt;em&gt;Properties of objects in a spec&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;You can also spec the spacing between two objects by selecting them and then clicking the “Spacing” button. If you select only one object, Specctr will measure the object&amp;#8217;s distance to the edges of the canvas.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/Features_space_sm1.png" width="500" height="122" alt="Measuring space(s)" /&gt;&lt;br /&gt;
&lt;em&gt;Measuring the space between objects&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Finally, you can also spec the width and height of any object.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/Features_WH_sm.png" width="500" height="122" alt="Width and height" /&gt;&lt;/p&gt;
&lt;h3&gt;Insight Into The Fireworks Extension Development Process&lt;/h3&gt;
&lt;p&gt;The process of developing Fireworks extensions consists of the following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;First, we design and build the panels in Adobe Flash Pro.&lt;/li&gt;
&lt;li&gt;We import the panels into Flash Builder and add the ActionScript code, which makes them run.&lt;/li&gt;
&lt;li&gt;Finally, we have to connect with the Fireworks API, which is written in JavaScript, in order to manipulate Fireworks.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Because the development process is spread over three separate environments, integrating the different pieces of the application and debugging the application present some challenges. But in the end, it’s well worth the positive response from our users.&lt;/p&gt;
&lt;p&gt;In the next couple of weeks, Dmitriy will release on GitHub a few ActionScript libraries that he has built during the process of developing Specctr. These libraries will hopefully reduce some of the pain points of the tiered development process. We might also write another article that highlights in more detail the development process for building a Fireworks extension.&lt;/p&gt;
&lt;p&gt;One of Fireworks’ strengths is its potential as a development platform that leverages the creativity and innovation of its community. We would love to help this process and show that Fireworks is a powerful tool for Web design.&lt;/p&gt;
&lt;h3&gt;Further Reading&lt;/h3&gt;
&lt;p&gt;Here are a few useful resources related to extending Adobe Fireworks:&lt;/p&gt;
&lt;h4&gt;Extensions&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://fireworks.abeall.com/extensions/"&gt;Aaron Beall&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://johndunning.com/fireworks/"&gt;John Dunning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mattstow.com/"&gt;Matt Stow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://orangecommands.com/"&gt;Orange Commands&lt;/a&gt;, Ale Muñoz&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Other Resources&lt;/h4&gt;
&lt;li&gt;&lt;a href="http://www.extendingfireworks.com/"&gt;Extending Fireworks&lt;/a&gt; blog, Grady Kelly&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.fireworksguruforum.com/index.php?showforum=8"&gt;Extending Fireworks&lt;/a&gt;, Fireworksguru Forums&lt;/li&gt;
&lt;li&gt;“&lt;a href="http://www.adobe.com/devnet/fireworks/articles/creating_panels_pt1.html"&gt;Creating Fireworks Panels, Part 1: Introduction to Custom Panels&lt;/a&gt;,” Trevor McCauley, Adobe Developer Connection&lt;/li&gt;
&lt;li&gt;“&lt;a href="http://help.adobe.com/en_US/fireworks/cs/extend/fireworks_cs5_extending.pdf"&gt;Extending Adobe Fireworks CS5&lt;/a&gt;” (PDF), Adobe Product Support&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;(al) (mb)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© Chen Blume for &lt;a href="http://www.smashingmagazine.com"&gt;Smashing Magazine&lt;/a&gt;, 2012.&lt;/small&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/-B33ss5MHaY" height="1" width="1"/&gt;</content>
                                                            <link rel="replies" type="text/html" href="http://www.smashingmagazine.com/2012/05/25/blueprints-for-the-web-specctr-adobe-fireworks-plugin/#comments" thr:count="0" />
        <link rel="replies" type="application/atom+xml" href="http://www.smashingmagazine.com/2012/05/25/blueprints-for-the-web-specctr-adobe-fireworks-plugin/feed/atom/" thr:count="0" />
        <thr:total>0</thr:total>
    <feedburner:origLink>http://www.smashingmagazine.com/2012/05/25/blueprints-for-the-web-specctr-adobe-fireworks-plugin/</feedburner:origLink></entry>
            <entry>
        <author>
            <name>Smashing Editorial</name>
                                    <uri>http://www.smashingmagazine.com</uri>
                    </author>
        <title type="html"><![CDATA[The First Smashing Conference Is Coming: A Community Event For Web Designers]]></title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SmashingMagazine/~3/0AK8WXPx5QQ/" />
        <id>http://mgmt.smashingmagazine.com/?p=132393</id>
        <updated>2012-05-29T07:31:34Z</updated>
        <published>2012-05-24T22:26:53Z</published>
            <category scheme="http://www.smashingmagazine.com" term="Events" /><category scheme="http://www.smashingmagazine.com" term="Smashing Magazine" />        <summary type="html"><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=1" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=2" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=3" border="0" alt="" /></a>
    </div></td></tr></table>
<p>Probably the most remarkable characteristic of our Web design community is that <strong>we care about our craft</strong>. We care about best practices, about our work, about learning, sharing and improving our skills. This very spirit is the driving force behind our daily work at Smashing Magazine, and this spirit is what has prompted us to organize the <strong>very first Smashing Conference</strong>: a friendly, valuable and inspiring community event that will help us all become better at what we do.</p>

<p><a href="http://www.smashingmagazine.com/2012/05/25/first-smashing-conference-coming-community-event-web-designers/" title="The venue of the first Smashing Conference"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/venue-smashing-conference.jpg" width="500" height="375" alt="The venue of the first Smashing Conference" /></a></p>

<p>Whether you are a designer, developer, content strategist or business owner, at the Smashing Conference you'll explore insights hands on and gain practical tips and new perspectives on our craft. We are very happy to provide an opportunity for you to share and gain practical knowledge in an intimate, informal atmosphere &#8212; right in our beautiful home town of Freiburg, Germany, at the foot of the legendary Black Forest.</p>]]></summary>
                    <content type="html" xml:base="http://www.smashingmagazine.com/2012/05/25/first-smashing-conference-coming-community-event-web-designers/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fWddbOt-KaTjLS4khtcXv9YjylE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fWddbOt-KaTjLS4khtcXv9YjylE/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/fWddbOt-KaTjLS4khtcXv9YjylE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fWddbOt-KaTjLS4khtcXv9YjylE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;table width="650"&gt;
&lt;tr&gt;
&lt;td width="650"&gt;
&lt;div style="width:650px;"&gt;
      &lt;img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /&gt;&lt;br /&gt;
      &lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=1" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=1" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=2" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=2" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=3" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=3" border="0" alt="" /&gt;&lt;/a&gt;
    &lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Probably the most remarkable characteristic of our Web design community is that &lt;strong&gt;we care about our craft&lt;/strong&gt;. We care about best practices, about our work, about learning, sharing and improving our skills. This very spirit is the driving force behind our daily work at Smashing Magazine, and this spirit is what has prompted us to organize the &lt;strong&gt;very first Smashing Conference&lt;/strong&gt;: a friendly, valuable and inspiring community event that will help us all become better at what we do.&lt;/p&gt;
&lt;p&gt;Whether you are a designer, developer, content strategist or business owner, at the Smashing Conference you&amp;#8217;ll explore insights hands on and gain practical tips and new perspectives on our craft. We are very happy to provide an opportunity for you to share and gain practical knowledge in an intimate, informal atmosphere &amp;mdash; right in our beautiful home town of Freiburg, Germany, at the foot of the legendary Black Forest.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://smashingconf.com/locations"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/kaufhaus6.jpg" alt="" title="Kaufhaus" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;The legendary &lt;a href="http://maps.google.de/maps?q=historisches+kaufhaus+freiburg&amp;#038;hl=de&amp;#038;ie=UTF8&amp;#038;hq=historisches+kaufhaus&amp;#038;hnear=Freiburg,+Baden-W%C3%BCrttemberg&amp;#038;t=m&amp;#038;z=15"&gt;Historical Merchants Hall&lt;/a&gt;, a late-Gothic building built between 1520 and 1530. Its façade is decorated with statues and the coat of arms of four Habsburg emperors. An exquisite location for the very first Smashing Conference. &lt;a href="http://www.historischeskaufhaus.freiburg.de/startseite/29/de/home.html"&gt;Image credit&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;When and Where?&lt;/h3&gt;
&lt;p&gt;We&amp;#8217;re delighted to invite you to come together for this inspiring, forward-thinking event on &lt;strong&gt;17 to 19 September 2012&lt;/strong&gt;. The conference will host a &lt;strong&gt;two-day single-track conference&lt;/strong&gt; on September 17th and 18th, as well as three workshops on September 19th. By “we,” we mean &lt;em&gt;Vitaly Friedman&lt;/em&gt;, editor-in-chief of Smashing Magazine, and &lt;em&gt;Marc Thiele&lt;/em&gt;, who has been running community events such as &lt;a href="http://beyondtellerrand.com"&gt;beyond tellerrand&lt;/a&gt; for over 12 years.&lt;/p&gt;
&lt;p&gt;The aim of the event is to deliver the same high-quality content that we deliver on Smashing Magazine, in the familiar atmosphere that beyond tellerrand events are known for. This will be a high-caliber yet friendly event that brings great value to everyone involved, and we&amp;#8217;d be honored if you took a part in it.&lt;/p&gt;
&lt;p&gt;The conference will take place in &lt;strong&gt;Freiburg, Germany&lt;/strong&gt; at the legendary &lt;a href="http://maps.google.de/maps?q=historisches+kaufhaus+freiburg&amp;#038;hl=de&amp;#038;ie=UTF8&amp;#038;hq=historisches+kaufhaus&amp;#038;hnear=Freiburg,+Baden-W%C3%BCrttemberg&amp;#038;t=m&amp;#038;z=15"&gt;Historical Merchants Hall&lt;/a&gt; at the foot of the Black Forest.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/05/kaufhaus1.jpg"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/kaufhaus1.jpg" alt="Kaufhaus" title="Kaufhaus" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;The main hall of the venue. 350 tickets are available in all for our two-day single-track event. &lt;a href="http://www.historischeskaufhaus.freiburg.de/startseite/29/de/home.html"&gt;Image credit&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Keeping the conference affordable for everyone is important to us. All tickets includes two full single-track conference days, on Monday and Tuesday. Please note that &lt;strong&gt;only 350 seats are available&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;We are pleased to announce that the first 70 early-bird tickets are on sale for a price of &lt;strong&gt;&amp;euro;249&lt;/strong&gt;. The regular price after that is &amp;euro;349. And &lt;em&gt;all prices include the German VAT of 19% and booking fees&lt;/em&gt;! &lt;a href="http://smashingconf.com/registration"&gt;Get your ticket now before it’s too late&lt;/a&gt;. We&amp;#8217;d be honored to meet you in September!&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;a href="http://smashingconf.com/registration" title="Get your ticket!"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/get-your-ticket.png" alt="Get your ticket!" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Speakers and Topics&lt;/h3&gt;
&lt;p&gt;If you&amp;#8217;ve been following Smashing Magazine for a while, then you won&amp;#8217;t be surprised by the focus of the Smashing Conference. We&amp;#8217;re aiming to cover a wide variety of Web design topics, such as visual design, front- and back-end development, UX design, mobile, responsive design, the business aspects of running a website, as well as the intricate details of the designer and developer&amp;#8217;s workflows. We’re encouraging our dear speakers to share details on how they work, what tools they use, and what their design and coding process looks like. We&amp;#8217;re aiming for &lt;strong&gt;valuable, practical and inspiring talks&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;We’ve handpicked all of the speakers to ensure the high quality of the event. So far, 10 out of 15 speakers are officially confirmed. Please note that the topics presented here are subject to change. More details on the conference, speakers, talks and workshops are available on the &lt;a href="http://www.smashingconf.com"&gt;conference&amp;#8217;s official website&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Speakers&lt;/h4&gt;
&lt;!-- deleted style tag --&gt;
&lt;table class="reporttable" id="tm" width="100%"&gt;
&lt;tr&gt;
&lt;td style="width: 30%;"&gt;&lt;strong&gt;Speaker&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Talk&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Details&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Aarron Walter&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The Real Me&lt;/td&gt;
&lt;td&gt;
&lt;div class="arrow"&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="infobox"&gt;
&lt;td colspan="3"&gt;&lt;img class="bio-image" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/aarron-walter.jpg" alt="Aarron Walter" title="Aarron Walter"/&gt;Aarron Walter is the lead user experience designer for MailChimp, where he socializes with primates and ponders ways to make interfaces more human. Aarron is the author of &lt;em&gt;Designing for Emotion&lt;/em&gt;, the purple stripe in the rainbow of knowledge from A Book Apart. He lives with his wife and son in Athens, Georgia, and is a wannabe barista. He tweets about design under the moniker &lt;a href="http://twitter.com/aarron"&gt;@aarron&lt;/a&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Chris Heilmann&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;To be announced&lt;/td&gt;
&lt;td&gt;
&lt;div class="arrow"&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="infobox"&gt;
&lt;td colspan="3"&gt;&lt;img class="bio-image" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/christian-heilmann.jpg" alt="Christian Heilmann" title="Christian Heilmann" /&gt;Chris Heilmann has dedicated a lot of his time to making the Web better. Originally from a radio journalism background, he built his first website from scratch in around 1997, and he spent the following years working on a lot of large international websites, and a few years at Yahoo building products and training people; he is now at Mozilla. Chris has written and contributed to four books on Web development and has written many articles and hundreds of blog posts for Ajaxian, Smashing Magazine, Yahoo, Mozilla, ScriptJunkie and many more.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Jeremy Keith&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The Spirit of the Web&lt;/td&gt;
&lt;td&gt;
&lt;div class="arrow"&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="infobox"&gt;
&lt;td colspan="3"&gt;&lt;img class="bio-image" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/jeremy-keith.jpg" alt="Jeremy Keith" title="Jeremy Keith" /&gt;Jeremy Keith makes websites. He is responsible for the death of the trees used to print the books &lt;em&gt;DOM Scripting&lt;/em&gt;, &lt;em&gt;Bulletproof Ajax&lt;/em&gt; and, most recently, &lt;em&gt;HTML5 for Web Designers&lt;/em&gt;. He also shot a man in Reno just to watch him die. Originally from Ireland, Jeremy now lives in Brighton, England where he pretends to work with Clearleft. Peas grow there.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Jonathan Snook&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Your CSS Is a Mess&lt;/td&gt;
&lt;td&gt;
&lt;div class="arrow"&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="infobox"&gt;
&lt;td colspan="3"&gt;&lt;img class="bio-image" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/jonathan-snook.jpg" alt="Jonathan Snook" title="Jonathan Snook" /&gt;Jonathan Snook writes about tips, tricks and bookmarks on &lt;a href="http://snook.ca/"&gt;his blog&lt;/a&gt;. He has also written for A List Apart, 24ways, and .net magazine, and he has coauthored two books, &lt;em&gt;The Art and Science of CSS&lt;/em&gt; and &lt;em&gt;Accelerated DOM Scripting&lt;/em&gt;. Most recently, Snook has written the eBook &lt;em&gt;SMACSS&lt;/em&gt;, sharing his experience and best practices on CSS architecture. Snook also works on the design team at Shopify.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Josh Brewer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Responsive Is as Responsive Does&lt;/td&gt;
&lt;td&gt;
&lt;div class="arrow"&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="infobox"&gt;
&lt;td colspan="3"&gt;&lt;img class="bio-image" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/josh-brewer.jpg" alt="Josh Brewer" title="Josh Brewer" /&gt;Josh spends his time thinking about, designing and building things that live at the intersection of form, function and aesthetic. He is principal designer at Twitter and is the co-creator of 52 Weeks of UX, Ffffallback and Shares. He is also an advisor and mentor at The Designer Fund.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Lea Verou&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;To be announced&lt;/td&gt;
&lt;td&gt;
&lt;div class="arrow"&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="infobox"&gt;
&lt;td colspan="3"&gt;
&lt;img class="bio-image" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/lea-verou.jpg" alt="Lea Verou" title="Lea Verou" /&gt;Lea has a long-standing passion for open Web standards and has been often called a CSS guru. She loves researching new ways to take advantage of modern Web technologies, and she shares her findings on &lt;a href="http://lea.verou.me/"&gt;her blog&lt;/a&gt;. Lea also makes popular tools and libraries that help Web developers learn and use these standards. She speaks at a number of well-known international Web development conferences and writes for leading industry publications. Lea also co-organized and occasionally lectures in the Web development course at the Athens University of Economics and Business.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Paul Boag&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Better Websites, Happier Clients and Improved Job Satisfaction&lt;/td&gt;
&lt;td&gt;
&lt;div class="arrow"&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="infobox"&gt;
&lt;td colspan="3"&gt;&lt;img class="bio-image" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/paul-boag.jpg" alt="Paul Boag" title="Paul Boag" /&gt;Paul Boag has been working on the Web since 1993. He is Web Strategist at Headscape Ltd, a Web design agency that he cofounded back in 2002. Paul also produces and hosts the longest-running and award-winning Web design podcast at &lt;a href="http://boagworld.com/"&gt;boagworld&lt;/a&gt;. He is a regular speaker at conferences and author of &lt;em&gt;Client-Centric Web Design&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rachel Andrew&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The Future of Content Management&lt;/td&gt;
&lt;td&gt;
&lt;div class="arrow"&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="infobox"&gt;
&lt;td colspan="3"&gt;&lt;img class="bio-image" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/rachel-andrew.jpg" alt="Rachel Andrew" title="Rachel Andrew"/&gt;Rachel Andrew is a front- and back-end Web developer, author and speaker. Her books include the bestselling &lt;em&gt;CSS Anthology&lt;/em&gt; for SitePoint, and she is a regular contributor to a number of publications both online and off, including Smashing Magazine. She writes about business and technology on &lt;a href="http://www.rachelandrew.co.uk/"&gt;her own website&lt;/a&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stephen Hay&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;To be announced&lt;/td&gt;
&lt;td&gt;
&lt;div class="arrow"&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="infobox"&gt;
&lt;td colspan="3"&gt;&lt;img class="bio-image" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/stephen-hay.jpg" alt="Stephen Hay" title="Stephen Hay" /&gt;
&lt;p&gt;Stephen has been designing and developing for the Web since 1995. He currently helps clients with front-end design and development, multi-platform strategy and accessibility through his consultancy, Zero Interface. Aside from his client work, he can be found speaking at industry events about Web design-related topics such as CSS layout and responsive design workflow. Stephen is co-organizer of Mobilism, one of the world&amp;#8217;s leading mobile Web development conferences. He is also co-creator of Grip Workshops, a series of two-day intensive workshops for Web project managers on the client side.&lt;/p&gt;
&lt;p&gt;Stephen has written for publications including A List Apart and .net Magazine. He also coauthored the Smashing Book 3 with a host of super-talented folks. When he makes the time for it, he publishes his thoughts on &lt;a href="http://www.the-haystack.com/"&gt;The Haystack&lt;/a&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tim Ahrens&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Web Fonts Backstage and On Stage&lt;/td&gt;
&lt;td&gt;
&lt;div class="arrow"&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="infobox"&gt;
&lt;td colspan="3"&gt;&lt;img class="bio-image" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/tim-ahrens.jpg" alt="Tim Ahrens" title="Tim Ahrens" /&gt;&lt;br /&gt;
Tim Ahrens is a type designer based in Berlin, where he runs Just Another Foundry with Shoko Mugikura. As a former architect, he is interested in the interplay between technology and design. He develops design software such as the Font Remix Tools and Web applications such as the FontFonter. Since 2010, he has been working as a consultant for Typekit.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p style="text-align: center; padding: 1.5em 0;"&gt;
&lt;img style="padding: 0 2px;" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/aarron-walter1.jpg" alt="Aarron Walter" title="Aarron Walter"&gt;&lt;img style="padding: 0 2px;" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/christian-heilmann1.jpg" alt="Christian Heilmann" title="Christian Heilmann"&gt;&lt;img style="padding: 0 2px;" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/jeremy-keith1.jpg" alt="Jeremy Keith" title="Jeremy Keith"&gt;&lt;img style="padding: 0 2px;" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/jonathan-snook1.jpg" alt="Jonathan Snook" title="Jonathan Snook"&gt;&lt;img style="padding: 0 2px;" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/josh-brewer1.jpg" alt="Josh Brewer" title="Josh Brewer"&gt;&lt;/br&gt;&lt;img style="padding: 0 2px;" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/lea-verou1.jpg" alt="Lea Verou" title="Lea Verou"&gt;&lt;img style="padding: 0 2px;" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/paul-boag1.jpg" alt="Paul Boag" title="Paul Boag"&gt;&lt;img style="padding: 0 2px;" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/rachel-andrew1.jpg" alt="Rachel Andrew" title="Rachel Andrew"&gt;&lt;img style="padding: 0 2px;" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/stephen-hay1.jpg" alt="Stephen Hay" title="Stephen Hay"&gt;&lt;img style="padding: 0 2px;" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/tim-ahrens1.jpg" alt="Tim Ahrens" title="Tim Ahrens"&gt;&lt;/br&gt;&lt;em&gt;Gallery of the speakers at the Smashing Conference.&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;Workshops&lt;/h4&gt;
&lt;table class="reporttable" id="tm2" width="100%"&gt;
&lt;tr&gt;
&lt;td style="width: 30%;"&gt;&lt;strong&gt;Trainer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Workshop&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Details&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Aarron Walter&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Interface Design Bootcamp&lt;/td&gt;
&lt;td&gt;
&lt;div class="arrow"&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="infobox"&gt;
&lt;td colspan="3"&gt;&lt;img class="bio-image" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/aarron-walter.jpg" alt="Aarron Walter" title="Aarron Walter" /&gt;Whether you are designing a Web app or website, following best practices and standard design methodologies will help ensure that your interfaces are usable and engaging. In this workshop, we&amp;#8217;ll explore the design process in detail, including user research, wireframing, prototyping and visual design. Through real-world examples, you&amp;#8217;ll see how an idea can evolve into an interface.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Andy Clarke&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fashionably Flexible Responsive Web Design&lt;/td&gt;
&lt;td&gt;
&lt;div class="arrow"&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="infobox"&gt;
&lt;td colspan="3"&gt;&lt;img class="bio-image" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/andy-clarke.jpg" alt="Andy Clarke" title="Andy Clarke" /&gt;Responsive design has made designing flexible websites fashionable again, but there is more to being fashionably flexible than technology or using CSS3 media queries. So, this unique workshop &amp;mdash; hosted by &lt;a href="http://www.stuffandnonsense.co.uk"&gt;Andy Clarke&lt;/a&gt;, designer, author and speaker &amp;mdash; puts the design back into responsive design. Andy will teach you how to design from the “content out,” instead of from the “canvas in.” He’ll demonstrate how to separate design from layout; and if you work with designs made in Photoshop, he’ll show how to deconstruct a design into its components (color, texture and typography) before reassembling it for a fluid continuum of devices, from phones to desktops and everything in between.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Jonathan Snook&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;SMACSS: Scalable and Modular Architecture for CSS&lt;/td&gt;
&lt;td&gt;
&lt;div class="arrow"&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="infobox"&gt;
&lt;td colspan="3"&gt;&lt;img class="bio-image" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/jonathan-snook.jpg" alt="Jonathan Snook" title="Jonathan Snook" /&gt;The SMACSS workshop is a full day of instruction and exercises on writing HTML and CSS using a flexible and modular approach that will improve team efficiency and minimize problems with growing projects. It brings the eBook to life with practical examples and in-depth discussion.&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p style="text-align: center; padding: 1.5em 0;"&gt;
&lt;img style="padding: 0 2px;" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/aarron-walter1.jpg" alt="Aarron Walter" title="Aarron Walter"&gt;&lt;img style="padding: 0 2px;" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/andy-clarke1.jpg" alt="Andy Clarke" title="Andy Clarke" /&gt;&lt;img style="padding: 0 2px;" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/jonathan-snook1.jpg" alt="Jonathan Snook" title="Jonathan Snook"&gt;&lt;/br&gt;&lt;em&gt;Gallery of the workshop experts at the Smashing Conference.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Further Details About the Conference&lt;/h3&gt;
&lt;p&gt;As we finalize some major details of organization, we are working hard on a plethora of small details to make the event as valuable and memorable as possible. Please expect more speakers to be confirmed soon and more topics to be announced.&lt;/p&gt;
&lt;p&gt;Also, we are looking for sponsors of the event, so if you are interested, please &lt;a href="mailto:hello@smashingconf.com"&gt;get in touch with us&lt;/a&gt;. More details on the location, hotels, speakers, talks, workshops and after party are presented on the official &lt;a href="http://www.smashingconf.com"&gt;Smashing Conference website&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.historischeskaufhaus.freiburg.de/startseite/29/de/home.html"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/kaufhaus3.jpg" alt="" title="Kaufhaus" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;One of the workshop rooms, with medieval decoration and statues of medieval knights. 30 seats are available for each workshop. &lt;a href="http://www.historischeskaufhaus.freiburg.de/startseite/29/de/home.html"&gt;Image credit&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;a href="http://smashingconf.com/registration" title="Get your ticket!"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/get-your-ticket.png" alt="Get your ticket!" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Facts&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;In a nutshell: The Smashing Conference is a friendly, valuable and inspiring community event that will help designers and developers become better in their work, be it front- or back-end development, UX design, content strategy or running a business.&lt;/li&gt;
&lt;li&gt;Dates: 17 to 19 September 2012 (workshops on the 19th, and conference on the 17th and 18th).&lt;/li&gt;
&lt;li&gt;Venue for workshops and conference: &amp;#8220;Zum Roten Bären&amp;#8221;, Historical Merchants Hall, Freiburg.&lt;/li&gt;
&lt;li&gt;Early-bird price (only 70 tickets): &lt;strong&gt;&amp;euro;249&lt;/strong&gt; ($315) (including German VAT and fees).&lt;/li&gt;
&lt;li&gt;Regular price: &lt;strong&gt;&amp;euro;349&lt;/strong&gt; ($440) (including German VAT and fees).&lt;/li&gt;
&lt;li&gt;Each workshop costs &amp;euro;349 ($440) (including German VAT and fees).&lt;/li&gt;
&lt;li&gt;Twitter: &lt;a href="http://twitter.com/smashingconf"&gt;@smashingconf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Lanyrd: &lt;a href="lanyrd.com/2012/smashingconf/"&gt;http://lanyrd.com/2012/smashingconf/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/smashingconf"&gt;http://www.facebook.com/smashingconf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Website: &lt;a href="http://www.smashingconf.com"&gt;http://www.smashingconf.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://www.roter-baeren.de/de/hotel-angebote"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/zrb.png" alt="Screenshot" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;&amp;#8220;&lt;a href="http://www.roter-baeren.de/de/hotel-angebote"&gt;Zum Roten Bären&lt;/a&gt;&amp;#8220;, one of the locations for the conference&amp;#8217;s workshops. &lt;a href="http://www.roter-baeren.de/upload/media/media/2/.thumb_990_548_ambi_1010%5B61%5D.jpg"&gt;Large view&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We&amp;#8217;re very excited about the Smashing Conference, and we&amp;#8217;ll do our best to make it a valuable, memorable and useful event. We can&amp;#8217;t wait to meet you, and please &lt;a href="mailto:hello@smashingconf.com"&gt;feel free to contact us&lt;/a&gt; if you have any questions about participation or sponsorship.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© Smashing Editorial for &lt;a href="http://www.smashingmagazine.com"&gt;Smashing Magazine&lt;/a&gt;, 2012.&lt;/small&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/0AK8WXPx5QQ" height="1" width="1"/&gt;</content>
                                                            <link rel="replies" type="text/html" href="http://www.smashingmagazine.com/2012/05/25/first-smashing-conference-coming-community-event-web-designers/#comments" thr:count="37" />
        <link rel="replies" type="application/atom+xml" href="http://www.smashingmagazine.com/2012/05/25/first-smashing-conference-coming-community-event-web-designers/feed/atom/" thr:count="37" />
        <thr:total>37</thr:total>
    <feedburner:origLink>http://www.smashingmagazine.com/2012/05/25/first-smashing-conference-coming-community-event-web-designers/</feedburner:origLink></entry>
            <entry>
        <author>
            <name>Rachel McCollin</name>
                                    <uri>http://compass-design.co.uk</uri>
                    </author>
        <title type="html"><![CDATA[Creating Mobile-Optimized Websites Using WordPress]]></title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SmashingMagazine/~3/Z92-rTwzZ7E/" />
        <id>http://mgmt.smashingmagazine.com/?p=132881</id>
        <updated>2012-05-24T15:11:59Z</updated>
        <published>2012-05-24T15:11:59Z</published>
            <category scheme="http://www.smashingmagazine.com" term="Mobile" />        <summary type="html"><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=1" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=2" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=3" border="0" alt="" /></a>
    </div></td></tr></table>
<p>“Mobile Web design.” Unless you’ve been hiding under a bush for the last 18 months, you’ll know that it’s one of the hottest topics in the industry at the moment. Barely a week goes by without new tips being unveiled to help us hone our skills in making websites work as well — and as fast — as possible on mobile devices.</p>

<p><a href="http://mobile.smashingmagazine.com/2012/05/24/creating-mobile-optimized-websites-using-wordpress/"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/centenarylounge-desktop.png" width="500" height="317" alt="Why We Shouldn't Make Separate Mobile Websites" title="Creating Mobile-Optimized Websites Using WordPress" /></a></p>

<p>Here are four ways to make your WordPress blog or website mobile-friendly, ranging from the quick and dirty to the complex but potentially very beautiful. As well as outlining the pros and cons of these methods, we’ll include information on plugins that will help without actually doing all the work for you, and we’ll provide some code that you can use for a responsive design.</p>]]></summary>
                    <content type="html" xml:base="http://www.smashingmagazine.com/2012/05/24/creating-mobile-optimized-websites-using-wordpress/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OoIMCcXXMFBqX0s7pV3_MlxbS_A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OoIMCcXXMFBqX0s7pV3_MlxbS_A/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/OoIMCcXXMFBqX0s7pV3_MlxbS_A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OoIMCcXXMFBqX0s7pV3_MlxbS_A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;table width="650"&gt;
&lt;tr&gt;
&lt;td width="650"&gt;
&lt;div style="width:650px;"&gt;
      &lt;img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /&gt;&lt;br /&gt;
      &lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=1" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=1" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=2" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=2" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=3" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=3" border="0" alt="" /&gt;&lt;/a&gt;
    &lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;“Mobile Web design.” Unless you’ve been hiding under a bush for the last 18 months, you’ll know that it’s one of the hottest topics in the industry at the moment. Barely a week goes by without new tips being unveiled to help us hone our skills in making websites work as well — and as fast — as possible on mobile devices.&lt;/p&gt;
&lt;p&gt;If you own or have designed a WordPress website for the desktop and are considering going mobile, the process can be fairly daunting. You probably know of &lt;a title="responsive design - smashing magazine article" href="http://www.smashingmagazine.com/responsive-web-design-guidelines-tutorials/"&gt;responsive design&lt;/a&gt; and might have heard of the mobile-first approach &lt;a title="Luke Wroblewski on mobile first" href="http://www.lukew.com/ff/entry.asp?933"&gt;developed by Luke Wroblewski&lt;/a&gt;, which entails planning the content and design for mobile devices first and then desktops second, rather than the other way round.&lt;/p&gt;
&lt;p&gt;But if your WordPress website has a desktop theme in which everything is set in pixels, then the thought of adopting a responsive design might have you running for the hills.&lt;/p&gt;
&lt;p&gt;It doesn’t have to be that way.&lt;/p&gt;
&lt;p&gt;Here are four ways to make your WordPress blog or website mobile-friendly, ranging from the quick and dirty to the complex but potentially very beautiful. As well as outlining the pros and cons of these methods, we’ll include information on plugins that will help without actually doing all the work for you, and we’ll provide some code that you can use for a responsive design.&lt;/p&gt;
&lt;h3&gt;Plugins: The Quick Way To Make Your Content Mobile-Friendly&lt;/h3&gt;
&lt;p&gt;Designing for content is increasingly becoming more common than squeezing content into a pixel-perfect design, as &lt;a title="Content strategy within the design process" href="http://uxdesign.smashingmagazine.com/2011/12/02/content-strategy-within-design-process/"&gt;documented here on Smashing Magazine&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If your website is more about content than design (say you run a blog that is content-heavy and designed for reading), then you won’t be too fussed about what your website looks like on mobile devices. You just want people to be able to read it without having to zoom in, move the viewport around or generally tie themselves up in knots until they decide to leave.&lt;/p&gt;
&lt;p&gt;If this is the case, then a simple plugin might do the trick. Below are some plugins to consider.&lt;/p&gt;
&lt;h4&gt;WPtouch&lt;/h4&gt;
&lt;p&gt;&lt;a title="WP-Touch" href="http://www.bravenewcode.com/store/plugins/wptouch-pro/"&gt;WPtouch&lt;/a&gt;, which comes in free and premium versions, strips out your existing theme and displays your content and not much else, but the result is user-friendly, robust and easy to read.&lt;/p&gt;
&lt;p&gt;WPtouch is widely used on websites, including &lt;a title="Stephen Fry's blog" href="http://www.stephenfry.com/"&gt;Stephen Fry’s blog&lt;/a&gt; and &lt;a title="Social Media Examiner" href="http://www.socialmediaexaminer.com/"&gt;Social Media Examiner&lt;/a&gt;. You can see below how the plugin renders those two websites. The premium version has options to modify the colors and some styles, including a bespoke menu at the bottom of the screen, as seen on Social Media Examiner.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/socialmediaexaminer-desktop-original1.png"&gt;&lt;img class="size-medium wp-image-111786" title="socialmediaexaminer-desktop-original" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/socialmediaexaminer-desktop-original1-300x203.png" alt="Social Media Examiner - desktop site" width="300" height="203" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Social Media Examiner desktop design&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/socialmediaexaminer-mobile-original1.png"&gt;&lt;img class="size-medium wp-image-111787" title="socialmediaexaminer-mobile-original" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/socialmediaexaminer-mobile-original1-200x300.png" alt="The Social Media Examiner mobile site - minimal styling" width="200" height="300" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Social Media Examiner mobile design, using WPtouch&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;WordPress Mobile Pack&lt;/h4&gt;
&lt;p&gt;The &lt;a title="WordPress mobile pack" href="http://wordpress.org/extend/plugins/wordpress-mobile-pack/"&gt;WordPress Mobile Pack&lt;/a&gt; has some color options and can be used as a mobile switcher if you want a completely different theme for mobile devices. It also has a mobile interface for editing posts, although this has been superseded to some extent by the WordPress apps for &lt;a title="WordPress iOs apps" href="http://ios.wordpress.org/"&gt;iOS&lt;/a&gt; and &lt;a title="WordPress Android app" href="http://android.wordpress.org/"&gt;Android&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/wp-mobile-pack-original.png"&gt;&lt;img class="size-full wp-image-111597" title="wp-mobile-pack" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/wp-mobile-pack.png" alt="WordPress mobile pack gives a mobile interface with one or two colours and simple posts listing." width="500" height="456" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;WordPress Mobile Pack screenshots&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;BuddyPress Mobile&lt;/h4&gt;
&lt;p&gt;If your website runs BuddyPress, then you’ll need a plugin to ensure that none of its functionality is lost on mobile devices. &lt;a title="BuddyPress mobile" href="http://wordpress.org/extend/plugins/buddypress-mobile/"&gt;BuddyPress Mobile&lt;/a&gt; has theming options, and you can edit the style sheet to make the mobile design your own.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/buddypress-mobile-original.png"&gt;&lt;img class="size-full wp-image-111580" title="buddypress-mobile" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/buddypress-mobile.png" alt="BuddyPress mobile displays member information such as profile picture and updates." width="336" height="600" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;BuddyPress Mobile&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Mobile Themes: The Next Level Up&lt;/h3&gt;
&lt;p&gt;If you want a consistent design across desktop and mobile, but you don’t yet have a theme or you want to develop one, then a mobile theme might be the answer.&lt;/p&gt;
&lt;p&gt;More and more mobile themes have sprung up over the last year. In particular, &lt;a title="WordPress twenty eleven" href="http://wordpress.org/extend/themes/twentyeleven)"&gt;Twenty Eleven&lt;/a&gt;, WordPress’ default theme since version 3.0, is responsive enough for many websites.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/twenty-eleven-desktop-original.png"&gt;&lt;img class="size-full wp-image-111595" title="twenty-eleven-desktop" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/twenty-eleven-desktop.png" alt="The twenty eleven desktop version includes a full width header image and standard sidebar to the right." width="500" height="339" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Twenty Eleven on the desktop&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/twenty-eleven-mobile-original.png"&gt;&lt;img class="size-full wp-image-111596" title="twenty-eleven-mobile" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/twenty-eleven-mobile.png" alt="The mobile version of twenty eleven displays a narrower header image and moves the sidebar below the main content." width="400" height="600" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Twenty Eleven on mobile&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Below are some other themes that include a mobile or responsive style sheet.&lt;/p&gt;
&lt;h4&gt;Carrington&lt;/h4&gt;
&lt;p&gt;The &lt;a title="Carrington theme" href="http://carringtontheme.com"&gt;Carrington&lt;/a&gt; family of themes can be used as parent themes. You can edit the CSS and functions to suit your needs, and it has a mobile version.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/carrington-desktop-original.png"&gt;&lt;img class="size-full wp-image-111583" title="carrington-desktop" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/carrington-desktop.png" alt="The desktop version of Carrington includes two sidebars to the right and some use of colour and graphics." width="500" height="339" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Carrington on desktop&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/carrington-mobile-original.png"&gt;&lt;img class="size-full wp-image-111584" title="carrington-mobile" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/carrington-mobile.png" alt="On mobile, Carrington has only one font, moves sidebars below the content and uses default colours for links." width="393" height="600" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Carrington on mobile&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;Scherzo&lt;/h4&gt;
&lt;p&gt;&lt;a title="Scherzo theme" href="http://leonpaternoster.com/wp-themes/"&gt;Scherzo&lt;/a&gt; is clean and minimalist and would be great to use as a parent theme. It uses a mobile-first responsive design.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/scherzo-desktop-original.png"&gt;&lt;img class="size-full wp-image-111589" title="scherzo-desktop" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/scherzo-desktop.png" alt="Scherzo on the desktop has a white background and dark grey text with blue headings, and a sidebar to the right." width="500" height="339" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Scherzo on desktop&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/scherzo-mobile-original.png"&gt;&lt;img class="size-full wp-image-111590" title="scherzo-mobile" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/scherzo-mobile.png" alt="Scherzo on mobile uses the same font styles as the desktop version with a white background and moves the sidebar below the main content. It has less white space than the desktop version." width="371" height="600" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Scherzo on mobile&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;Jigoshop&lt;/h4&gt;
&lt;p&gt;E-commerce websites are trickier to make mobile-friendly, but &lt;a title="Jigoshop theme/plugin" href="http://jigoshop.com/"&gt;Jigoshop&lt;/a&gt; can help. It’s a full e-commerce plugin and theme, with a responsive layout that can be tweaked to suit your design.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/jigoshop-desktop-original.png"&gt;&lt;img class="size-full wp-image-111587" title="jigoshop-desktop" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/jigoshop-desktop.png" alt="Jigoshop on the desktop uses a white background with dark grey text, green details, product images in a grid and a sidebar to the right." width="500" height="339" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Jigoshop on desktop&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/jigoshop-mobile-original.png"&gt;&lt;img class="size-full wp-image-111588" title="jigoshop-mobile" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/jigoshop-mobile.png" alt="Jigoshop on mobile uses the same colours and font styling as the desktop version with a simplified menu banner, a narrower grid for product images and the sidebar below the main content." width="408" height="600" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Jigoshop on mobile&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;A Different Theme For Mobile Devices&lt;/h3&gt;
&lt;p&gt;In the days before responsive design gained traction, websites commonly had two versions: desktop and mobile. The mobile version might have been on an &lt;code&gt;m.&lt;/code&gt; subdomain or have a &lt;code&gt;.mobi&lt;/code&gt; extension. Some websites out there still do this, mainly huge news websites that serve different content depending on the device.&lt;/p&gt;
&lt;p&gt;Fewer WordPress administrators are choosing to do this now, but if you do want to go down this route, then serving two versions of your website from the same database is possible, by using a mobile switcher.&lt;/p&gt;
&lt;p&gt;Here are two plugins that make this possible:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="WordPress mobile pack" href="http://wordpress.org/extend/plugins/wordpress-mobile-pack/"&gt;WordPress Mobile Pack&lt;/a&gt;&lt;br /&gt;
This tool, already mentioned above as a theme that makes your website mobile-friendly, can also be used as a mobile switcher, detecting mobile devices and using a separate theme of your choice.&lt;/li&gt;
&lt;li&gt;&lt;a title="WPtap mobile detector" href="http://wordpress.org/extend/plugins/wptap-mobile-detector/"&gt;WPtap Mobile Detector&lt;/a&gt;&lt;br /&gt;
This targets mobile devices and enables the theme of your choice.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using one of these plugins enables you to develop a completely separate theme for mobile devices, with its own layout, navigation and content structure.&lt;/p&gt;
&lt;h3&gt;Or, Finally, Make Your Current Theme Responsive&lt;/h3&gt;
&lt;p&gt;If you don’t want to throw out your existing theme, then the best way to give mobile users an experience that is at least visually similar to the desktop version is to build responsiveness into your theme.&lt;/p&gt;
&lt;p&gt;A responsive theme contains media queries in the theme’s style sheet to define CSS that applies only to devices of a specified maximum or minimum width. A truly responsive theme has a fluid layout that adapts to mobile devices and larger screens to some extent already, but with some extra styling to make the layout optimal for mobile devices.&lt;/p&gt;
&lt;h4&gt;1. Defining the Media Queries&lt;/h4&gt;
&lt;p&gt;To get started, you will need to define media queries in the style sheet. Most of the styles already in your style sheet apply to desktop and mobile, so you only need to add CSS that is different for mobile devices. This will go at the end of your theme’s style sheet.&lt;/p&gt;
&lt;p&gt;Start by defining the screen width you are developing for. There are two main approaches to this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Start with the narrowest screen width you are targeting (which will usually be mobile phones in portrait orientation); add all of the CSS needed for this screen width; and then add successive media queries for wider screens. This is known as the mobile-first approach, and it has the benefit of making websites faster on mobile devices because only the CSS needed for those devices is loaded.&lt;/li&gt;
&lt;li&gt;Start with the widest screen width (usually desktop monitors) and work down, adding CSS that applies to each screen width in turn. While this might slow down loading on mobile devices, it has the advantage of working in IE 8 and below, which doesn’t understand media queries. At the moment, most websites are developed this way because they involve making an existing desktop design responsive, so this is the approach we’ll cover here.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A media query consists of three main parts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The &lt;code&gt;@media&lt;/code&gt; rule;&lt;/li&gt;
&lt;li&gt;The media type (the most common being &lt;code&gt;print&lt;/code&gt; and &lt;code&gt;screen&lt;/code&gt; — we’ll use &lt;code&gt;screen&lt;/code&gt;);&lt;/li&gt;
&lt;li&gt;The maximum width of the screen you are targeting.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You could have a media query to target mobile phones (and other small devices such as the iPod Touch) in portrait orientation that have a width of 320 pixels:&lt;/p&gt;
&lt;pre class="brush: css"&gt;@media screen and (max-width: 320px) {

}&lt;/pre&gt;
&lt;p&gt;The CSS to be applied to that screen width and any screen narrower than it would be written between the braces.&lt;/p&gt;
&lt;p&gt;An alternative to the &lt;code&gt;@media&lt;/code&gt; rule would be to create a linked style sheet with the CSS for each screen width. But I don’t do that because it adds another server request with the potential to slow the website down; and managing all of the styles becomes harder if they’re in more than one place.&lt;/p&gt;
&lt;p&gt;Here are other media queries for commonly targeted screen sizes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;(max-width: 480px)&lt;/code&gt;&lt;br /&gt;
Works for mobile devices in either portrait or landscape mode, because they are 480 pixels wide in landscape orientation but are still narrower than this maximum width in portrait.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;(max-width: 780px)&lt;/code&gt;&lt;br /&gt;
Works for iPads and other large tablets in portrait mode and any screens narrower than them.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;(max-width: 1024px)&lt;/code&gt;&lt;br /&gt;
Works for iPads in both orientations, as well as for small desktop browsers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can run one media query after another so that each change you make applies to the screen size you’re querying, plus any widths queried further down in the style sheet. In this case, you would work with wider screens first. For example:&lt;/p&gt;
&lt;pre class="brush: css"&gt;@media screen and (max-width: 480px) {

}&lt;/pre&gt;
&lt;p&gt;If you are ignoring tablets, you would include this media query first and add any CSS for mobile phones in both portrait and landscape modes (for example, any changes to graphics or text size). You would then follow it with this:&lt;/p&gt;
&lt;pre class="brush: css"&gt;@media screen and (max-width: 320px) {

}&lt;/pre&gt;
&lt;p&gt;Here, we’re adding any styles that apply only to phones in portrait mode (such as layout changes). You don’t need to repeat the CSS that applies to both landscape and portrait modes because this will still apply. In the same way, you don’t need to repeat any styles that will stay the same for desktop views because they will cascade down from the earlier parts of the style sheet.&lt;/p&gt;
&lt;h4&gt;2. Making the Layout Responsive&lt;/h4&gt;
&lt;p&gt;Phew! So, now we’ve defined media queries, and we’re ready to roll with some mobile-friendly CSS. Below are the main things you will need to work on for a standard WordPress website. Let’s assume your website’s markup is similar to that of the Twenty Eleven theme (i.e. &lt;code&gt;html&lt;/code&gt; → &lt;code&gt;body&lt;/code&gt; → &lt;code&gt;header&lt;/code&gt; (or div &lt;code&gt;#header&lt;/code&gt;) → &lt;code&gt;#main&lt;/code&gt; → &lt;code&gt;#content&lt;/code&gt; → &lt;code&gt;#primary&lt;/code&gt; → &lt;code&gt;#secondary&lt;/code&gt; → &lt;code&gt;footer&lt;/code&gt; (or div &lt;code&gt;#footer&lt;/code&gt;). You might need to substitute your own elements and IDs for the ones in the examples below.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Overall width of website&lt;/strong&gt;&lt;br /&gt;
You’ll need to change this so that it displays correctly. Add the following code between the braces of your first media query:&lt;/p&gt;
&lt;pre class="brush: css"&gt;body {
width: 100%;
float: none;
}&lt;/pre&gt;
&lt;p&gt;This ensures that the website’s &lt;code&gt;body&lt;/code&gt; fills the width of the device and removes any floats. At this point, you might also want to change the background image if there is one (more on that shortly).&lt;/p&gt;
&lt;p&gt;You will now have the following code at the bottom of your style sheet:&lt;/p&gt;
&lt;pre class="brush: css"&gt;@media screen and (max-width: 480px) {
   body {
   width: 100%;
   float: none;
   }
}&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Width of content and sidebar&lt;/strong&gt;&lt;br /&gt;
In portrait mode in particular, there isn’t room for a sidebar to the right of the main content. Add the following code to the media query relating to devices with a maximum width of 320 pixels:&lt;/p&gt;
&lt;pre class="brush: css"&gt;#content, #primary, #secondary {
width: 100%;
float: none;
margin: 10px 0;
}&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Footer content, especially widgets&lt;/strong&gt;&lt;br /&gt;
If your footer has widget areas or other elements with floats applied, you will need to override them for mobile devices in portrait mode.&lt;/p&gt;
&lt;p&gt;If you want the footer widgets to be full width in both landscape and portrait modes, then simply add &lt;code&gt;footer.widget-area&lt;/code&gt; to the CSS for the sidebars and content.&lt;/p&gt;
&lt;p&gt;However, you might want the widget areas to be laid out side by side in landscape mode, depending on how many you have. In that case, you’ll need to do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Work out the percentages for the widths, padding and margins (some box-model maths for you!);&lt;/li&gt;
&lt;li&gt;Add the relevant code to your media query for devices with a maximum width of 480 pixels;&lt;/li&gt;
&lt;li&gt;Add a separate query for devices with a maximum width of 320 pixels after the one you’re working on, with the following code:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="brush: css"&gt;footer .widget-area {
width: 100%;
float: none;
margin: 10px 0;
}&lt;/pre&gt;
&lt;p&gt;You might also need to adjust the text alignment and borders and padding, depending on your existing theme. Margins should be set to 0 on the left and right; suit them to your theme at the top and bottom, but generally they should be smaller than in the desktop version.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Image sizes&lt;/strong&gt;&lt;br /&gt;
The images in your design might still break the layout or break out of their containing elements, making your website shrink when viewed on a mobile device. There is an easy fix for this:&lt;/p&gt;
&lt;pre class="brush: css"&gt;body img {
max-width: 100%;
}&lt;/pre&gt;
&lt;p&gt;This will ensure that images are never wider than their containing element. You might need to tweak the CSS if images sized further up in the style sheet have greater specificity.&lt;/p&gt;
&lt;p&gt;However, this solution isn’t ideal. The images might look smaller, but mobile devices will still have to download their full sizes, which will slow down response times and possibly lose visitors, as well as annoy users on expensive data plans (more of them are out there than you might think). There a number of solutions to this, some of which you will find in this &lt;a title="Smashing magazine on responsive images" href="http://www.smashingmagazine.com/2011/07/22/responsive-web-design-techniques-tools-and-design-strategies/"&gt;roundup of articles on responsive images&lt;/a&gt;. You may recall the mobile-first approach mentioned earlier; one benefit of this approach is that it serves different-sized image files to devices based on screen width.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Text size&lt;/strong&gt;&lt;br /&gt;
So, our layout is working, and everything displays nicely. But now that the website is narrower, the text might appear huge. We’ll need to adjust the text’s size with the following code:&lt;/p&gt;
&lt;pre class="brush: css"&gt;body {
font-size: 60%;
line-height: 1.4em;
}&lt;/pre&gt;
&lt;p&gt;This sets the font size as a percentage of the size set for it further up in the style sheet.&lt;/p&gt;
&lt;h4&gt;4. Changing the Navigation Menus and Creating an App-Like Interface&lt;/h4&gt;
&lt;p&gt;Sometimes mobile users will want to access specific content; for example, visitors to a store’s website will want to find the store’s location easily, and visitors to an e-commerce website will want to shop with a minimum of clicks (or taps). Sometimes you might want to adjust the navigation to make the website look more like an app.&lt;/p&gt;
&lt;p&gt;Here are some methods you can follow to do this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use CSS to turn menu items that are visible on the desktop into drop-down menus, using code similar to what you would use to create a second-level drop-down menu on a desktop website.&lt;/li&gt;
&lt;li&gt;Use conditional PHP or a plugin such as &lt;a title="Mobble plugin" href="http://wordpress.org/extend/plugins/mobble/"&gt;Mobble&lt;/a&gt; to display a different menu depending on the device, as seen on the website that I developed for &lt;a title="Centenary Lounge website" href="http://centenarylounge.com"&gt;Centenary Lounge&lt;/a&gt;:&lt;br /&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/centenarylounge-desktop-original.png"&gt;&lt;img class="size-full wp-image-111585" title="centenarylounge-desktop" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/centenarylounge-desktop.png" alt="The centenary lounge desktop site includes a large logo and full width slideshow, using shades of brown for text and the background." width="500" height="317" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Centenary Lounge desktop website&lt;/em&gt;&lt;br /&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/centenarylounge-mobile-original.png"&gt;&lt;img class="size-full wp-image-111586" title="centenarylounge-mobile" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/centenarylounge-mobile.png" alt="The Centenary Lounge mobile site includes the same colours and design but replaces the slideshow with a smaller image, and the full width navigation menu with a shorter menu focusing on pages that visitors from mobiles are more likely to need." width="399" height="600" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Centenary Lounge mobile website&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Use CSS to display menu items as a vertical list of buttons to give the website an app-like look, such as on &lt;a title="Cafe Blend website" href="http://cafeblend.co.uk"&gt;Cafe Blend&lt;/a&gt;:&lt;br /&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/cafeblend-desktop-original.png"&gt;&lt;img class="size-full wp-image-111581" title="cafeblend-desktop" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/cafeblend-desktop.png" alt="The Cafe Blend desktop site has a vertical navigation menu to the left of the main content, all contained within a balck box." width="500" height="317" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Cafe Blend desktop website&lt;/em&gt;&lt;br /&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/cafeblend-mobile-original.png"&gt;&lt;img class="size-full wp-image-111582" title="cafeblend-mobile" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/cafeblend-mobile.png" alt="The Cafe Blend mobile site has a full-width navigation menu with each menu item in a horizontal box resembling a button, with the content below the menu." width="355" height="600" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Cafe Blend mobile website&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Use a plugin such as &lt;a title="Dropdown menus plugin" href="http://wordpress.org/extend/plugins/dropdown-menus/"&gt;Dropdown Menus&lt;/a&gt; to display menu items as a drop-down walker, freeing up screen real estate.&lt;/li&gt;
&lt;li&gt;Use background images combined with media queries and floats, to create a grid of visual buttons for your navigation, giving the home page an app-like feel.&lt;/li&gt;
&lt;li&gt;Use fixed positioning to fix the navigation to the bottom of the screen, minimizing the need for scrolling, as seen earlier on Social Media Examiner.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The possibilities are limited only by your imagination and creativity!&lt;/p&gt;
&lt;h4&gt;5. A Problem!&lt;/h4&gt;
&lt;p&gt;You’ve added the media queries above, but your smartphone still displays the desktop version. Don’t worry! This is because many smartphones use a virtual viewport that is equal to the width of a small desktop, which prevents desktop-designed websites from breaking when rendered in the browser. This can be easily fixed by placing the following code in the &lt;code&gt;head&lt;/code&gt; of each page. Because yours is a WordPress website, you need to add it only once, to the &lt;code&gt;header.php&lt;/code&gt; theme file:&lt;/p&gt;
&lt;pre class="brush: html"&gt;&amp;lt;meta name=”viewport” content=”width=device-width”&amp;gt;&lt;/pre&gt;
&lt;p&gt;What this does is tell the phone to treat the size of the screen as its actual size, not the virtual size… if that makes sense.&lt;/p&gt;
&lt;h3&gt;Summary&lt;/h3&gt;
&lt;p&gt;Here’s what we’ve looked at in this article:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Four different ways to make a WordPress website mobile-friendly: with a plugin, with a prebuilt responsive theme, with a separate mobile theme, and by making the existing theme responsive;&lt;/li&gt;
&lt;li&gt;Media queries for responsive design and how they target different device widths;&lt;/li&gt;
&lt;li&gt;Some common styles to make a WordPress website responsive in its layout, images and text.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As you can see, no one option is necessarily the best; it will depend on the website, on the budget and on the time and capability of those involved. Over time, most mobile-friendly WordPress websites will have responsiveness built into them, instead of using a separate theme, mobile website or plugin.&lt;/p&gt;
&lt;p&gt;Hopefully this article has given you a starting point to make your WordPress website mobile-friendly. This is just the beginning of the possibilities. To further develop your mobile website, you might want to consider a mobile content strategy; a mobile-first design; APIs and native device functionality to create an even more app-like experience; and more.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(al)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© Rachel McCollin for &lt;a href="http://www.smashingmagazine.com"&gt;Smashing Magazine&lt;/a&gt;, 2012.&lt;/small&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/Z92-rTwzZ7E" height="1" width="1"/&gt;</content>
                                                            <link rel="replies" type="text/html" href="http://www.smashingmagazine.com/2012/05/24/creating-mobile-optimized-websites-using-wordpress/#comments" thr:count="0" />
        <link rel="replies" type="application/atom+xml" href="http://www.smashingmagazine.com/2012/05/24/creating-mobile-optimized-websites-using-wordpress/feed/atom/" thr:count="0" />
        <thr:total>0</thr:total>
    <feedburner:origLink>http://www.smashingmagazine.com/2012/05/24/creating-mobile-optimized-websites-using-wordpress/</feedburner:origLink></entry>
            <entry>
        <author>
            <name>Marc Gayle</name>
                                    <uri>http://www.marcgayle.com</uri>
                    </author>
        <title type="html"><![CDATA[A Beginner’s Guide to Ruby]]></title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SmashingMagazine/~3/349hEwki5rU/" />
        <id>http://mgmt.smashingmagazine.com/?p=132745</id>
        <updated>2012-05-24T11:33:32Z</updated>
        <published>2012-05-24T11:32:16Z</published>
            <category scheme="http://www.smashingmagazine.com" term="Developer's Toolbox" />        <summary type="html"><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=1" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=2" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=3" border="0" alt="" /></a>
    </div></td></tr></table>
<p>Ruby is an object-oriented language. What does that even mean? It has unique quirks and characteristics that we’ll explain clearly. This article assumes that you have no programming experience, not even HTML.</p>

<p><a href="http://coding.smashingmagazine.com/2012/05/24/beginners-guide-ruby/"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/matrixFictitious-code.jpg" width="500" height="284" alt="A Beginners Guide to Ruby" title="A Beginners Guide to Ruby" /></a></p>

<p>An important skill to have when creating a program is translating &#8212; translating the desires of the user into the output they are looking for. In order to do that, you have to be able to think like a developer so that you can take what you know instinctively (as a user) and morph it into what the computer needs to be able to do what you want. So, we’ll help you start thinking like a developer. When you are done, you should have a mental model of how Ruby works and be on your way to becoming a successful Rubyista.</p>]]></summary>
                    <content type="html" xml:base="http://www.smashingmagazine.com/2012/05/24/a-beginners-guide-to-ruby/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JELl2_FaqGSVYA32CFJ-z2PMYG4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JELl2_FaqGSVYA32CFJ-z2PMYG4/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/JELl2_FaqGSVYA32CFJ-z2PMYG4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JELl2_FaqGSVYA32CFJ-z2PMYG4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;table width="650"&gt;
&lt;tr&gt;
&lt;td width="650"&gt;
&lt;div style="width:650px;"&gt;
      &lt;img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /&gt;&lt;br /&gt;
      &lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=1" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=1" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=2" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=2" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=3" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=3" border="0" alt="" /&gt;&lt;/a&gt;
    &lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Ruby is an object-oriented language. What does that even mean? It has unique quirks and characteristics that we’ll explain clearly. This article assumes that you have no programming experience, not even HTML.&lt;/p&gt;
&lt;p&gt;An important skill to have when creating a program is translating &amp;mdash; translating the desires of the user into the output they are looking for. In order to do that, you have to be able to think like a developer so that you can take what you know instinctively (as a user) and morph it into what the computer needs to be able to do what you want. So, we’ll help you start thinking like a developer. When you are done, you should have a mental model of how Ruby works and be on your way to becoming a successful Rubyista.&lt;/p&gt;
&lt;p&gt;We’ll take you through a variety of the fundamental elements of the Ruby language and explain the whys behind the hows.&lt;/p&gt;
&lt;p&gt;For all the code samples we go over, you can test them out on &lt;a title="Try Ruby" href="http://tryruby.org"&gt;Try Ruby&lt;/a&gt; (without having to install anything on your computer). You can follow Try Ruby’s tutorial if you want, but you don’t need to in order to understand what we’ll outline below. It’s just a quick way to get your feet wet without the headache of installing anything.&lt;/p&gt;
&lt;h4&gt;How Is Your Code Evaluated by the Computer?&lt;/h4&gt;
&lt;p&gt;The interpreter for Ruby &amp;mdash; basically, the main brain of the programming language that makes sense of the code you write &amp;mdash; reads the code from top to bottom and left to right; meaning, it starts at line 1, character 1, literally, and first reads across line 1 to the last character, then goes down to the next line, and repeats this process until it reaches the last line of your program. If you have any syntax errors &amp;mdash; i.e. errors in your code, such as misspelled variable names, improper use of constants (we’ll get to constants in a bit), etc. &amp;mdash; it will halt execution and show you an error message, usually with a line number corresponding to the code. Remembering this is important because if you encounter an error report while coding, you will need to know how to decipher it. Figuring this out isn’t always straightforward for beginners.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/15267728@N03/3369363558/"&gt;&lt;img title="Code-Evaluated-By-Computer" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/matrixFictitious-code.jpg" alt="" width="500" height="284" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Fictitious code from The Matrix. (Image: &lt;a href="http://www.flickr.com/photos/15267728@N03/3369363558/"&gt;Absolute Chaos&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This top-down parsing also affects the control of the flow of logic in your program. Say you want to calculate the balance of someone’s account before showing it to them. You would have to make sure that you put the method and function that does the calculation before the output of the balance; that is, if you are outputting the balance at line 10, then you would have to do the calculations somewhere between line 1 and 9. We’ll dive into this later.&lt;/p&gt;
&lt;h4&gt;Objects&lt;/h4&gt;
&lt;p&gt;An object is a thing. It is at the heart of Ruby. Going back to our earlier statement about Ruby being an object-oriented language, that means that Ruby manipulates all data on the assumption that the data is an object. There are many object-oriented languages, but very few put the object at the center of their universe like Ruby does. In Ruby, everything is an object. I mean everything: every variable, every operation. Every object has different characteristics; that’s what makes them different. A string is an object that has built-in characteristics that make it suitable for handling text. For a more technical definition, check out the article “&lt;a title="What is an object?" href="http://en.wikipedia.org/wiki/Object_(computer_science)"&gt;Object&lt;/a&gt;” on Wikipedia.&lt;/p&gt;
&lt;h3&gt;Methods&lt;/h3&gt;
&lt;p&gt;A method is simply a definition of an action that can be performed on an object. Ruby has built-in object definitions and methods. One such method is &lt;code&gt;capitalize&lt;/code&gt; for the Ruby class &lt;code&gt;strings&lt;/code&gt; (we will dive into strings later).&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
string1 = "this string is awesome"
&lt;/pre&gt;
&lt;p&gt;If you wrote &lt;code&gt;string1.capitalize&lt;/code&gt;, the output would look something like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
"This string is awesome".
&lt;/pre&gt;
&lt;p&gt;All that the &lt;code&gt;capitalize&lt;/code&gt; method tells the Ruby interpreter to do is convert the first character of the string from lowercase to uppercase. &lt;a href="http://ruby-doc.org/core-1.9.3/String.html#method-i-capitalize"&gt;Check out an example&lt;/a&gt; directly from the Ruby documentation. &lt;a title="Ruby String methods" href="http://ruby-doc.org/core-1.9.3/String.html"&gt;As you can see&lt;/a&gt; from the documentation, the &lt;code&gt;string&lt;/code&gt; object in Ruby has a ton of methods that you can use right out of the box.&lt;/p&gt;
&lt;p&gt;Another thing you should have noticed is the way to call a method, &lt;code&gt;string1.capitalize&lt;/code&gt;, which is basically &lt;code&gt;&amp;lt;object name&amp;gt; . &amp;lt;method name&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In this case, the object is a string variable. If you tried to do &lt;code&gt;capitalize&lt;/code&gt; on an object that is not a string, Ruby would throw an error.&lt;/p&gt;
&lt;p&gt;You can create any method for any of your objects. Here is the way to do that:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
def method_name
     #Enter code here
end
&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;#&lt;/code&gt; basically tells the Ruby interpreter that this is a comment for another human and to ignore it. So, the Ruby interpreter skips lines that begin with a &lt;code&gt;#&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Classes&lt;/h3&gt;
&lt;p&gt;A class is like a blueprint that allows you to create objects of a particular type and to create methods that relate to those objects. But classes have a special property called “inheritance.” Inheritance means just what you would think. When you inherit something from someone, it likely means a few things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;That you are related in some way (in most cases, it is parent to children or grandparent to grandchildren);&lt;/li&gt;
&lt;li&gt;That either you are getting a bunch of stuff (land, money, etc.) or you have gotten some biological attribute (say, a nose shape or hair type).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/47325272@N00/2541408630/"&gt;&lt;img title="Classes" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/blueprint-image.jpg" alt="" width="500" height="335" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Classes are like a blueprint for objects. (Image: &lt;a href="http://www.flickr.com/photos/47325272@N00/2541408630/"&gt;Todd Ehlers&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Those principles are the same in Ruby. There are parent, grandparent and children classes. As a general rule, children classes inherit all of the attributes of a parent or grandparent class.&lt;/p&gt;
&lt;p&gt;In Ruby, an object’s grandparent class is known as its “superclass.” In other words, if you have an object that is a string &amp;mdash; meaning that your object inherits the properties of the &lt;code&gt;String&lt;/code&gt; class &amp;mdash; then the parent class of &lt;code&gt;String&lt;/code&gt; is &lt;code&gt;String&lt;/code&gt;’s superclass. Be careful not to miss an important distinction here: the superclass of &lt;code&gt;String&lt;/code&gt; (which is a class that tells Ruby how to treat &lt;code&gt;strings&lt;/code&gt;) is &lt;em&gt;not&lt;/em&gt; the same as the superclass of a &lt;code&gt;String&lt;/code&gt; object. Here is a demonstration:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; num1 = "this­ is a strin­g"
=&amp;gt; "this is a string"
&amp;gt; num1.class
=&amp;gt; String
&amp;gt; String.sup­erclass
=&amp;gt; Object
&amp;gt; Object.superclass
=&amp;gt; BasicObject
&amp;gt; BasicObjec­t.supercla­ss
=&amp;gt; nil
&lt;/pre&gt;
&lt;p&gt;What we have done is set the local variables &lt;code&gt;num1&lt;/code&gt; to be a string. When we check the class of &lt;code&gt;num1&lt;/code&gt;, by calling the &lt;code&gt;.class&lt;/code&gt; method, it tells us that the class of &lt;code&gt;num1&lt;/code&gt; is &lt;code&gt;String&lt;/code&gt;. Then, when we checked the superclass of &lt;code&gt;String&lt;/code&gt;, it tells us &lt;code&gt;Object&lt;/code&gt;, and so on.&lt;/p&gt;
&lt;p&gt;Look at what would happen if we tried &lt;code&gt;num1.superclass&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; num1 = "this­ is a strin­g"
=&amp;gt; "this is a string"
&amp;gt; num1.super­class
=&amp;gt; #&amp;lt;NoMethodError: undefined method `superclass' for "this is a string":String&amp;gt;
&lt;/pre&gt;
&lt;p&gt;The reason this doesn’t work is because &lt;code&gt;num1&lt;/code&gt; is an object (a local variable) that has inherited the properties of the class &lt;code&gt;String&lt;/code&gt;. And &lt;code&gt;num1&lt;/code&gt; is &lt;em&gt;not&lt;/em&gt; a class, so it has no superclass.&lt;/p&gt;
&lt;p&gt;Here is another way to do what we did earlier:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; num1 = "this­ is a strin­g"
=&amp;gt; "this is a string"
&amp;gt; num1.class
=&amp;gt; String
&amp;gt; num1.class­.superclas­s
=&amp;gt; Object
&amp;gt; num1.class.superclas­s.supercla­ss
=&amp;gt; BasicObject
&amp;gt; num1.class­.superclas­s.superclass.supercl­ass
=&amp;gt; nil
&lt;/pre&gt;
&lt;p&gt;The reason the last value is &lt;code&gt;nil&lt;/code&gt; is because &lt;code&gt;BasicObject&lt;/code&gt; has no parent. It inherits nothing from another class, so it stops there.&lt;/p&gt;
&lt;p&gt;One key thing we have done here that is different from before is we have “chained” methods, meaning we have continued applying a method to the current statement. That’s another beautiful thing about Ruby: every time it evaluates something, it returns a copy and allows you to continue evaluating it.&lt;/p&gt;
&lt;p&gt;Take the last line:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; num1.class­.superclas­s.supercla­ss.supercl­ass
=&amp;gt; nil
&lt;/pre&gt;
&lt;p&gt;Basically, Ruby did this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What is the class of &lt;code&gt;num1&lt;/code&gt;? It’s a string, so return &lt;code&gt;String&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;What is the superclass of &lt;code&gt;String&lt;/code&gt;? &lt;code&gt;String&lt;/code&gt; is a child class of &lt;code&gt;Object&lt;/code&gt;, so return &lt;code&gt;Object&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;What is the superclass of &lt;code&gt;Object&lt;/code&gt;? &lt;code&gt;Object&lt;/code&gt; is a child class of &lt;code&gt;BasicObject&lt;/code&gt;, so return &lt;code&gt;BasicObject&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;What is the superclass of &lt;code&gt;BasicObject&lt;/code&gt;? &lt;code&gt;BasicObject&lt;/code&gt; is not a child class of anything, so return &lt;code&gt;nil&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All on one line, all in one command. Simple, neat, elegant.&lt;/p&gt;
&lt;p&gt;The structure of classes and superclasses is the hierarchy of class inheritance.&lt;/p&gt;
&lt;p&gt;Now the question is, how do you define a class and use one? Glad you asked.&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
class MyClass
# some code logic
end
&lt;/pre&gt;
&lt;p&gt;That’s it.&lt;/p&gt;
&lt;p&gt;Basically, you just have the opening keyword, &lt;code&gt;class&lt;/code&gt;, followed by the name of your class (&lt;code&gt;MyClass&lt;/code&gt;, in this case). Then you have some code. And when you are done, you close it with the keyword &lt;code&gt;end&lt;/code&gt;. Make sure that &lt;code&gt;class&lt;/code&gt; and &lt;code&gt;end&lt;/code&gt; are always all lowercase (i.e. don’t write &lt;code&gt;Class&lt;/code&gt; or &lt;code&gt;End&lt;/code&gt; or you might get errors).&lt;/p&gt;
&lt;p&gt;That’s all there is to it.&lt;/p&gt;
&lt;p&gt;If you have a parent class that you want this new class to inherit stuff from, you would define it like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
class MyChildClass &amp;lt; MyClass
# some code that is specific to the child class
end
&lt;/pre&gt;
&lt;p&gt;Ruby interprets the &lt;code&gt;&amp;lt;&lt;/code&gt; operator to mean that the class name on the right side is the parent and the class name on the left is the child (therefore, the child should inherit methods and such from the parent).&lt;/p&gt;
&lt;p&gt;Also, remember that class names usually start with an uppercase letter; and if their name has multiple words, you do what is called “CamelCasing” &amp;mdash; i.e. instead of using a space or underscore or hyphen, you just start the new word with an uppercase letter.&lt;/p&gt;
&lt;h4&gt;Class Instances&lt;/h4&gt;
&lt;p&gt;Now we know how to create a class, which we know is the blueprint of an object type. So, if you think of baking, a class is like a recipe (which contains a list of ingredients and instructions for creating something). But once you create something &amp;mdash; say, blueberry muffins &amp;mdash; then each muffin may be considered an “instance” of that class.&lt;/p&gt;
&lt;p&gt;So, each instance or muffin is an object.&lt;/p&gt;
&lt;p&gt;The way to create an instance is like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
muffin = BlueberryMuffin.new
&lt;/pre&gt;
&lt;p&gt;That’s it.&lt;/p&gt;
&lt;p&gt;To be technical, the only part of the statement above that actually creates an instance of the &lt;code&gt;BlueberryMuffin&lt;/code&gt; class is &lt;code&gt;BlueberryMuffin.new&lt;/code&gt;. In order to use the object, you have to store it somewhere, so we’ve stored it in the local variable &lt;code&gt;muffin&lt;/code&gt; so that we can reuse this specific instance (or muffin).&lt;/p&gt;
&lt;p&gt;You will need to do more technical things with a class, like set up an initialization method so that whenever you create an object of the class, Ruby knows how to do that exactly. That is a bit beyond the scope of this article &amp;mdash; just understand what a class is, how it relates to objects, how to create new objects, etc.&lt;/p&gt;
&lt;p&gt;To read up on classes, check out the article about them &lt;a title="Classes and Objects - Learn Ruby the Hardway" href="http://ruby.learncodethehardway.org/book/ex45.html"&gt;on Learn Ruby The Hard Way&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Data Structures&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;How is data structured?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;At the core of programming is the manipulation of data. Computer scientists have come up with a way to manipulate data in a structured way by inventing things called “data structures.” A data structure is simply a container for a particular type of data. Words are handled differently than formulas; likewise, characters and letters are handled differently than numbers &amp;mdash; in most cases.&lt;/p&gt;
&lt;h4&gt;Variables&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;What’s a variable?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A variable is the name of the most basic type of container that you will store data in. Each variable name has to be unique to its scope (i.e. the area in which the variable is allowed to exist). Think of it as a Venn diagram, in which each variable is only valuable in the circle or square within which it is contained.&lt;/p&gt;
&lt;p&gt;Say you wanted to create a program (or a part of a program) that is responsible for adding two numbers. From the coder’s point of view, you would need to set up a container for each of those numbers, and then set up the mathematical function between the containers. The reason to do this is because you don’t want the user to have to edit the source code every single time they want to calculate the sum. Although you could do that, the solution is neither practical nor efficient. Most users know what a calculator looks like, so they can just press the buttons or enter the numbers. But editing source code is a no-no.&lt;/p&gt;
&lt;p&gt;In Ruby, each of those containers is a variable. So, you would do something like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
sum = num1 + num2
&lt;/pre&gt;
&lt;p&gt;As opposed to something like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
sum = 19 + 20
&lt;/pre&gt;
&lt;p&gt;Ruby and many other languages have many types of variables. We’ll go over just a few to be brief and not confuse you too much.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Local&lt;/strong&gt;&lt;br /&gt;
This is a variable that can be used only in a finite part of the program, such as a method or function (we’ll go over what these are later). Once you have exited that part of the program, those variables are destroyed. In fact, say you have a program that has three methods; you could have the same variable &amp;mdash; say, &lt;code&gt;num1&lt;/code&gt; &amp;mdash; that is used in three different ways in each of those methods and that stores three different values. Going back to the Venn diagram, suppose there are three shapes within the diagram: Circle 1, Circle 2, Square. Also suppose that Circle 1 and Circle 2 are not connected, but both are within Square. A local variable would be confined to its respective circle and would not be able to affect anything outside of its circle. The way to use these variables is to just use them. If you want to use a local variable called &lt;code&gt;sum&lt;/code&gt; that stores the sum of the values of &lt;code&gt;num1&lt;/code&gt; and &lt;code&gt;num2&lt;/code&gt;, you would simply write &lt;code&gt;sum = num1 + num2&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Global&lt;/strong&gt;&lt;br /&gt;
This is a variable that can be used throughout the entire program. Back to the Venn diagram, these variables would be within the square. This way, if you are inside any of the circles that are within the square, you can access a variable that is outside of the circles but within the square. You use these in Ruby by putting a &lt;code&gt;$&lt;/code&gt; before the name. So, suppose you want to calculate multiple dimensions of a circle, and you want to define the radius beforehand. You would do something like this: &lt;code&gt;$radius = 20&lt;/code&gt;. Then, at any other time throughout the program, regardless of whether you are in a subcircle of the square or in the square alone, you can reference &lt;code&gt;$radius&lt;/code&gt;. Now, using global variables has a good side and bad side. The good side is that you can read the value of a global variable in any method or function within your program. The bad side is that you can also write to a global variable in any method or function within your program. If you change the value, forgetting that another method or function depends on the previous value could really screw things up. As a rule, then, stay away from global variables unless you are confident that you know where they will be used and how changes would affect the rest of the program.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Constants&lt;/strong&gt;&lt;br /&gt;
These are “sacred” global variables. The values of these variables are &lt;em&gt;supposed&lt;/em&gt; to remain constant for the life of your program. Say you wanted to specify a mathematical constant such as pi that you could easily use throughout your program. You would do something like this: &lt;code&gt;PI = 3.14&lt;/code&gt;. Constants have to begin with an uppercase letter, and more often than not they are all uppercase, but they don’t have to be. Note that I said that the values of constants are &lt;em&gt;supposed&lt;/em&gt; to be constant throughout your entire program, but they can be changed. Ruby doesn’t forbid you from changing the value, but when you do, it gives you a warning because it doesn’t like it. Going back to the Venn diagram, think of &lt;code&gt;PI&lt;/code&gt; as being set outside of the square, and it can be used anywhere within the square and anywhere within the circles within the square.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Class&lt;/strong&gt;&lt;br /&gt;
These are variables whose scope is limited to the class that they are defined in. Class variables are defined with &lt;code&gt;@@&lt;/code&gt; at the beginning of the name of the variable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Instance&lt;/strong&gt;&lt;br /&gt;
These are variables whose scope is limited to one particular instance of a class. They are defined with &lt;code&gt;@&lt;/code&gt; at the beginning of the name of the variable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here’s a recap on how to use the variable types:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Local&lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;sum = num1 + num2&lt;/code&gt;&lt;br /&gt;
Local variable names should start with a lowercase letter or an underscore.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Global&lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;$radius = 20&lt;/code&gt;&lt;br /&gt;
Global variable names should start with a &lt;code&gt;$&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Constants&lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;PI = 3.14&lt;/code&gt;&lt;br /&gt;
Constants should start with an uppercase letter, but they are commonly written in full caps.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Class&lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;@@length = 10 #&lt;/code&gt;&lt;br /&gt;
This denotes the length of a side of an object in a class. I’ve used an imaginary class, called &lt;code&gt;Square&lt;/code&gt;, and defined the length of each side for demonstration purposes. What’s important to note here is that all “squares” would have a “length” of &lt;code&gt;10&lt;/code&gt; by default.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Instance&lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;@length = 5 #&lt;/code&gt;&lt;br /&gt;
This denotes the length of a side of a particular object. Suppose you wanted to create a red square that had a length of &lt;code&gt;5&lt;/code&gt; instead of the default &lt;code&gt;10&lt;/code&gt;. You could use this instance variable to specify the length of this particular square, your “Red Square.”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that these rules are by no means comprehensive. Some words you can’t use as variable names. They are called “reserved words,” which Ruby uses internally to identify various elements of the language.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/04/Ruby-Reserved-Words.png"&gt;&lt;img class="size-medium wp-image-119436" title="Ruby-Reserved-Words" src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/Ruby-Reserved-Words-300x123.png" alt="" width="300" height="123" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To find out more about variables and other do’s and don’ts, check out the following resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“&lt;a title="Reserved Words" href="http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html"&gt;The Ruby Language&lt;/a&gt;,” Programming Ruby: The Pragmatic Programmer’s Guide&lt;/li&gt;
&lt;li&gt;“&lt;a title="Variables in Ruby" href="http://www.rubyist.net/~slagell/ruby/variables.html"&gt;Variables&lt;/a&gt;,” Ruby User’s Guide&lt;/li&gt;
&lt;li&gt;“&lt;a href="https://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Variables_and_Constants"&gt;Ruby Programming/Syntax/Variables and Constants&lt;/a&gt;,” Wikibooks&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Strings&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;What is a string?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A string is a series or sequence of characters &amp;mdash; i.e. a “word” or sequence of words. You might say a sentence, but a string is not just a sentence. For instance:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
string1 = 'a'
string2 = 'This is a string'
&lt;/pre&gt;
&lt;p&gt;Two things are happening here. The first is that we are using local variables, and the second thing is that we are using single quotes to define the content of the variable. Even though &lt;code&gt;string1&lt;/code&gt; contains just one letter, it is still a string because it is declared in single quotes. Ruby knows how to treat a variable by the way it is declared. You can use double quotes, but you have to be consistent. You can’t start the string’s declaration with a double quote and end with a single quote, like this: &lt;code&gt;string1 = "This is a string'&lt;/code&gt;. But you can do this: &lt;code&gt;string1 = "This is a string"&lt;/code&gt;, or &lt;code&gt;string2 = 'This too is a string'&lt;/code&gt;. Both are valid, and it’s just a matter of taste.&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
num1 = 9
&lt;/pre&gt;
&lt;p&gt;This sets &lt;code&gt;num1&lt;/code&gt; to the numerical value of 9. So, if you did &lt;code&gt;num1 + 1&lt;/code&gt;, the result would be &lt;code&gt;10&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;But if you used single quotes around the &lt;code&gt;9&lt;/code&gt;, like this…&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
num1 = '9'
&lt;/pre&gt;
&lt;p&gt;… then that would say that &lt;code&gt;9&lt;/code&gt; is actually a string, not a number. So, if you wrote &lt;code&gt;num1 + 1&lt;/code&gt;, it would throw an error along the lines of: &lt;code&gt;=&amp;gt; #&amp;lt;TypeError: can’t convert Fixnum into String&amp;gt;&lt;/code&gt;. The Ruby interpreter is basically saying that you have given it a number and a string and that it doesn’t know how to add them.&lt;/p&gt;
&lt;p&gt;To take that one step further, if you did this…&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
num1 = '9'
num2 = '1'
num1 + num2
&lt;/pre&gt;
&lt;p&gt;… the result would be this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
"91"
&lt;/pre&gt;
&lt;p&gt;Because Ruby would take the two strings and literally squish them together. When you specify a value in quotes (either single and double quotes), you are telling the Ruby interpreter, “Don’t translate this. Just take the exact content between the beginning and end quotes.” It treats the &lt;code&gt;9&lt;/code&gt; like any other letter. So, as far as Ruby is concerned…&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
num1 = '9'
&lt;/pre&gt;
&lt;p&gt;… is more or less the same as this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
num2 = 'a'
&lt;/pre&gt;
&lt;p&gt;As a matter of fact, if you did &lt;code&gt;num1 + num2&lt;/code&gt;, the result would be &lt;code&gt;9a&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In summary, a string is just a combination of letters, numbers and special characters.&lt;/p&gt;
&lt;h3&gt;Collections&lt;/h3&gt;
&lt;p&gt;So far, we have covered individual pieces of data, such as one or a handful of items that can be stored in a local variable, or a single object created as an instance of a class.&lt;/p&gt;
&lt;p&gt;But what happens if we want to work with many pieces of data &amp;mdash; that is, a collection, such as a series of numbers that we need to put in ascending order, or a list of names sorted alphabetically. How does Ruby manage that?&lt;/p&gt;
&lt;p&gt;Ruby gives us two tools: hashes and arrays.&lt;/p&gt;
&lt;h4&gt;Arrays&lt;/h4&gt;
&lt;p&gt;The easiest way to explain an array is to show an image of what a “typical” one looks like.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/04/Array2.gif"&gt;&lt;img title="Array" src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/Array2.gif" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Rather than having six different variables for the six food types, we have just one food array that stores each food item in its own container or element. The numbers to the right of the diagram above are the “index” or “keys” (i.e. addresses) of each element (&lt;code&gt;[0] = chicken&lt;/code&gt;, &lt;code&gt;[1] = rice&lt;/code&gt;, etc). Note that the keys are always integers (whole numbers) and always start at 0 and go up from there. So, the first element is always &lt;code&gt;[0]&lt;/code&gt;, and &lt;code&gt;[1]&lt;/code&gt; is always the second element, etc. So, you will know that the range of keys of any array is always &lt;code&gt;[0]&lt;/code&gt; to &lt;code&gt;(length-1)&lt;/code&gt; &amp;mdash; meaning that the last element is always total length of the array minus 1, because we started at &lt;code&gt;[0]&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To create the above in Ruby, we would do something like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
food = ['chicken', 'rice', 'steak', 'fish', 'shrimp', 'beef']
=&amp;gt; ['chicken', 'rice', 'steak', 'fish', 'shrimp', 'beef']
&amp;gt; food.count
=&amp;gt; 6
&lt;/pre&gt;
&lt;p&gt;Notice that for each element, we use single quotes (we could have used double quotes instead) because we are storing strings in each element. Ruby’s &lt;code&gt;array&lt;/code&gt; class has some methods that we can use right out of the box, such as &lt;code&gt;count&lt;/code&gt;, as used above. It simply counts the total number of elements in the array and outputs that value. Thus, even though the index goes up to 5, there are 6 elements because the index started at 0.&lt;/p&gt;
&lt;p&gt;Now that we have created a food array, we can access each item by invoking the name of the array that we created, followed by the index number.&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; food[0]
=&amp;gt; "chicken"
&amp;gt; food[1]
=&amp;gt; "rice"
&amp;gt; food[2]
=&amp;gt; "steak"
&amp;gt; food[6]
=&amp;gt; nil
&lt;/pre&gt;
&lt;p&gt;The reason we get &lt;code&gt;nil&lt;/code&gt; at &lt;code&gt;food[6]&lt;/code&gt; is because there is no &lt;code&gt;[6]&lt;/code&gt; &amp;mdash; or, rather, nothing is stored in &lt;code&gt;food[6]&lt;/code&gt;, so Ruby automagically sets &lt;code&gt;food[6]&lt;/code&gt;, &lt;code&gt;food[7]&lt;/code&gt;, &lt;code&gt;food[8]&lt;/code&gt; and so on to &lt;code&gt;nil&lt;/code&gt;. To add another food item to this array, all you would have to do is set the next element to whatever value you wanted, like so:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; food[6] = 'carr­ots'
=&amp;gt; "carrots"
&amp;gt; food
=&amp;gt; ["chicken", "rice", "steak", "fish", "shrimp", "beef", "carrots"]
&amp;gt; food.count
=&amp;gt; 7
&lt;/pre&gt;
&lt;p&gt;There is another way to add elements to your array in Ruby. You use the append operator, &lt;code&gt;&amp;lt;&amp;lt;&lt;/code&gt;, which basically sticks something at the end of the array. The difference here is that we don’t have to specify an index position when using the append operator. We just do this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; food &amp;lt;&amp;lt; "irish potato"
=&amp;gt; ["chicken", "rice", "steak", "fish", "shrimp", "beef", "carrots", "irish potato"]
&amp;gt; food &amp;lt;&amp;lt; 42
=&amp;gt; ["chicken", "rice", "steak", "fish", "shrimp", "beef", "carrots", "irish potato", 42]
&lt;/pre&gt;
&lt;p&gt;Everything that comes after the &lt;code&gt;&amp;lt;&amp;lt;&lt;/code&gt; is added to the array. This is pretty convenient because you can append variables and other objects to an array without worrying about the content itself. For instance:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; sum = 10 + 23
=&amp;gt; 33
&amp;gt; food &amp;lt;&amp;lt; sum
=&amp;gt; ["chicken", "rice", "steak", "fish", "shrimp", "beef", "carrots", "irish potato", 42, 33]
&lt;/pre&gt;
&lt;p&gt;All we did here was create a local variable named &lt;code&gt;sum&lt;/code&gt;, and then push the value of &lt;code&gt;sum&lt;/code&gt; to the end of the array. We can even add arrays to the end of other arrays:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; name_and_a­ge = ["Marc", "Gayle", 28]
=&amp;gt; ["Marc", "Gayle", 28]
&amp;gt; food
=&amp;gt; ["chicken", "rice", "steak", "fish", "shrimp", "beef", "carrots", "irish potato", 42, 33]
&amp;gt; food.count
=&amp;gt; 10
&amp;gt; food &amp;lt;&amp;lt; name_­and_age
=&amp;gt; ["chicken", "rice", "steak", "fish", "shrimp", "beef", "carrots", "irish potato", 42, 33, ["Marc", "Gayle", 28]]
&amp;gt; food.last
=&amp;gt; ["Marc", "Gayle", 28]
&amp;gt; food.count
=&amp;gt; 11
&lt;/pre&gt;
&lt;p&gt;Even though the last element is an array with three elements &amp;mdash; &lt;code&gt;Marc&lt;/code&gt;, &lt;code&gt;Gayle&lt;/code&gt;, &lt;code&gt;28&lt;/code&gt; &amp;mdash; it still counts as just one element (i.e. one array) inside the food array. So, the count figure goes from 10 (before &lt;code&gt;name_and_age&lt;/code&gt; is added) to 11.&lt;/p&gt;
&lt;p&gt;If we wanted to find out how many elements were inside the last element of the food array, we could do something like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; food.last.count
=&amp;gt; 3
&lt;/pre&gt;
&lt;p&gt;A few other interesting methods that Ruby allows us to use right out of the box are &lt;code&gt;first&lt;/code&gt;, &lt;code&gt;last&lt;/code&gt;, &lt;code&gt;length&lt;/code&gt;, &lt;code&gt;include?&lt;/code&gt; (followed by the object you want to check for), &lt;code&gt;empty?&lt;/code&gt;, &lt;code&gt;eql?&lt;/code&gt; and &lt;code&gt;sort&lt;/code&gt;.&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; food
=&amp;gt; ["chicken", "rice", "steak", "fish", "shrimp", "beef", "carrots"]
&amp;gt; food.first
=&amp;gt; "chicken"
&amp;gt; food.last
=&amp;gt; "carrots"
&amp;gt; food.length
=&amp;gt; 7
&amp;gt; food.count
=&amp;gt; 7
&amp;gt; food.include?("chicken")
=&amp;gt; true
&amp;gt; food.inclu­de?("filet­ migno­n")
=&amp;gt; false
&amp;gt; food.empty­?
=&amp;gt; false
&amp;gt; food[0]
=&amp;gt; "chicken"
&amp;gt; food[0].eq­l?("chicke­n")
=&amp;gt; true
&amp;gt; food[0].eq­l?("beef")
=&amp;gt; false
&amp;gt; food.sort
=&amp;gt; ["beef", "carrots", "chicken", "fish", "rice", "shrimp", "steak"]
&lt;/pre&gt;
&lt;p&gt;In the brackets right after &lt;code&gt;eql?&lt;/code&gt;, we put the string in double quotes because we are dealing with a string. Also, &lt;code&gt;sort&lt;/code&gt; arranges alphabetically on strings and from lowest to highest for numbers.&lt;/p&gt;
&lt;p&gt;We can store anything in each element, not just strings. We can even mix; some elements can be strings, others can be numbers.&lt;/p&gt;
&lt;p&gt;Say we wanted an array of numbers. We would do something like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
numbers = [1, 2, 3, 4, 5, 6]
=&amp;gt; [1, 2, 3, 4, 5, 6]
&lt;/pre&gt;
&lt;p&gt;Remember what we said earlier about always starting the index at &lt;code&gt;0&lt;/code&gt;. You can see here why that is so important. In order to reference the number &lt;code&gt;1&lt;/code&gt; in this array, the array reference has to be &lt;code&gt;[0]&lt;/code&gt; because that is the first element in the array.&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; numbers[0]
=&amp;gt; 1
&amp;gt; numbers[1]
=&amp;gt; 2
&amp;gt; numbers[6]
=&amp;gt; nil
&amp;gt; numbers.fi­rst
=&amp;gt; 1
&amp;gt; numbers.la­st
=&amp;gt; 6
&amp;gt; numbers.co­unt
=&amp;gt; 6
&amp;gt; numbers.le­ngth
=&amp;gt; 6
&amp;gt; numbers.in­clude?(3)
=&amp;gt; true
&amp;gt; numbers.in­clude?(10)
=&amp;gt; false
&amp;gt; numbers.em­pty?
=&amp;gt; false
&amp;gt; numbers[1]
=&amp;gt; 2
&amp;gt; numbers[1]­.eql?(1)
=&amp;gt; false
&amp;gt; numbers[1]­.eql?(2)
=&amp;gt; true
&lt;/pre&gt;
&lt;p&gt;Because we are evaluating numbers, the objects in the brackets should not be wrapped in double quotes. In fact, if we did use double quotes, Ruby wouldn’t find the items because it would be looking for a string and not a number. Be careful with those quotes!&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; numbers.in­clude?("3")
=&amp;gt; false
&amp;gt; numbers[1]­.eql?("2")
=&amp;gt; false
&lt;/pre&gt;
&lt;p&gt;To see what other Ruby methods are included in the &lt;code&gt;array&lt;/code&gt; class, check the &lt;a title="Ruby Array class" href="http://www.ruby-doc.org/core-1.9.3/Array.html"&gt;documentation on “Array.”&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Everything we’ve just discussed covers one-dimensional arrays (i.e. arrays with just one column). These are best used to store lists of items.&lt;/p&gt;
&lt;p&gt;As you can imagine, there are multi-dimensional arrays. We’ll just touch on a 2-D array. Once you understand how to use them, you can then extrapolate to 3-D and beyond (if you ever want to go there).&lt;/p&gt;
&lt;p&gt;A 2-D array looks like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/04/2D-Array1.gif"&gt;&lt;img title="2D-Array" src="http://media.smashingmagazine.com/wp-content/uploads/2012/04/2D-Array1.gif" alt="" width="560" height="400" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We are storing two things: the name of the dish, along with a price related to that item.&lt;/p&gt;
&lt;p&gt;As the diagram suggests, in order to access each element, you would use both keys.&lt;/p&gt;
&lt;p&gt;This is how we would declare this array:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; food2 = [["ch­icken", 10], ["ric­e", 5], ["ste­ak", 20], ["fis­h", 15], ["shr­imp", 18], ["bee­f", 9]]
=&amp;gt; [["chicken", 10], ["rice", 5], ["steak", 20], ["fish", 15], ["shrimp", 18], ["beef", 9]]
&lt;/pre&gt;
&lt;p&gt;A few key differences should jump out at you. Essentially, &lt;code&gt;food2&lt;/code&gt; is an array of arrays (meaning that it is an array whose elements are themselves arrays). Huh? Well, look at each element.&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; food2[0]
=&amp;gt; ["chicken", 10]
&amp;gt; food2[1]
=&amp;gt; ["rice", 5]
&amp;gt; food2[2]
=&amp;gt; ["steak", 20]
&amp;gt; food2[3]
=&amp;gt; ["fish", 15]
&lt;/pre&gt;
&lt;p&gt;When you access each “single” element, you notice that each has an array inside of it; &lt;code&gt;["chicken", 10]&lt;/code&gt; is an array that has a string (&lt;code&gt;chicken&lt;/code&gt;) in the first element and a number (&lt;code&gt;10&lt;/code&gt;) in the second element.&lt;/p&gt;
&lt;p&gt;So, to access each individual element, we would do something like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; food2[0]
=&amp;gt; ["chicken", 10]
&amp;gt; food2[0][0]
=&amp;gt; "chicken"
&amp;gt; food2[0][1]
=&amp;gt; 10
&lt;/pre&gt;
&lt;p&gt;First, &lt;code&gt;food2[0][0]&lt;/code&gt; is saying, “Show me the first element of the first element of the array &lt;code&gt;food2&lt;/code&gt;.” And &lt;code&gt;food2[0][1]&lt;/code&gt; is saying, “Show me the second element of the first element of the array &lt;code&gt;food2&lt;/code&gt;.”&lt;/p&gt;
&lt;p&gt;You can also use the same methods of the Ruby class &lt;code&gt;array&lt;/code&gt; on subarrays.&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; food2
=&amp;gt; [["chicken", 10], ["rice", 5], ["steak", 20], ["fish", 15], ["shrimp", 18], ["beef", 9]]
&amp;gt; food2.coun­t
=&amp;gt; 6
&amp;gt; food2[0]
=&amp;gt; ["chicken", 10]
&amp;gt; food2[0].count
=&amp;gt; 2
&amp;gt; food2.last
=&amp;gt; ["beef", 9]
&amp;gt; food2.first
=&amp;gt; ["chicken", 10]
&lt;/pre&gt;
&lt;p&gt;Keep in mind one important distinction for multi-dimensional arrays: Ruby will check whatever you call the method on.&lt;/p&gt;
&lt;p&gt;For instance, if you wanted to check whether &lt;code&gt;chicken&lt;/code&gt; is in the &lt;code&gt;food2&lt;/code&gt; array, you could not do this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; food2.incl­ude?("chic­ken")
=&amp;gt; false
&lt;/pre&gt;
&lt;p&gt;The reason is that &lt;code&gt;food2&lt;/code&gt; is just an array of arrays. So, you would have to do something like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; food2
=&amp;gt; [["chicken", 10], ["rice", 5], ["steak", 20], ["fish", 15], ["shrimp", 18], ["beef", 9]]
&amp;gt; food2[0].include?("chicken")
=&amp;gt; true
&lt;/pre&gt;
&lt;p&gt;We had to specify the particular element (&lt;code&gt;[0]&lt;/code&gt;) that we wanted to check for the string &lt;code&gt;chicken&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In this case, we knew that the string &lt;code&gt;chicken&lt;/code&gt; was stored in &lt;code&gt;food2[0]&lt;/code&gt; because we put it there. How would we find it if we didn’t know? We’d have to use an iterator.&lt;/p&gt;
&lt;h3&gt;Iterators&lt;/h3&gt;
&lt;p&gt;An iterator is a mechanism in Ruby that enables you to cycle through data structures that store multiple elements (such as an array) and examine each element. One of the most commonly used methods is named &lt;code&gt;each&lt;/code&gt;. Each is a method in the array class that comes with Ruby.&lt;/p&gt;
&lt;p&gt;Let’s start simple. Suppose we wanted to print a list of all of our food items stored in the &lt;code&gt;food&lt;/code&gt; array. How would we do this?&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; food
=&amp;gt; ["chicken", "rice", "steak", "fish", "beef"]

food.each do |x|
puts x
end

chicken
rice
steak
fish
beef
&lt;/pre&gt;
&lt;p&gt;A few things to be aware of here:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You can only call &lt;code&gt;each&lt;/code&gt; on a collection of data.&lt;/li&gt;
&lt;li&gt;Once you call &lt;code&gt;each&lt;/code&gt;, you have to pass a block to it. A block is just a contained bit of code. Basically, you are saying to apply the code contained within the block to &lt;code&gt;each&lt;/code&gt; element that you look at.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Block&lt;/h4&gt;
&lt;p&gt;There are two ways to use a block. The first is similar to the example above, where you just do this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
do |variable|
#some code
end
&lt;/pre&gt;
&lt;p&gt;Note that you have to use a block with an iterator. You can define a block outside of an iterator, but in order to execute the block, you have to use it in conjunction with an iterator. That’s why we called &lt;code&gt;do |x|&lt;/code&gt; after &lt;code&gt;food.each&lt;/code&gt; earlier.&lt;/p&gt;
&lt;p&gt;You can use one or more variables in your block. Those variables are local to the block alone, so they will be destroyed once you leave. Thus, if you had two blocks, you could use the variable &lt;code&gt;x&lt;/code&gt; in both, and one wouldn’t affect the other.&lt;/p&gt;
&lt;p&gt;In the example above about food, we have said, for each element in the array &lt;code&gt;food&lt;/code&gt;, print it to the screen.&lt;/p&gt;
&lt;p&gt;Another way to use a block is on one line, like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
food.each { |x| puts x }
&lt;/pre&gt;
&lt;p&gt;In this case, the opening curly brace (&lt;code&gt;{&lt;/code&gt;) replaces the &lt;code&gt;do&lt;/code&gt;, and the closing curly brace replaces the &lt;code&gt;end&lt;/code&gt;. If your operation is just one line, then this way is convenient, although I have found that rereading such code in future is sometimes harder; so, I usually just use &lt;code&gt;do&lt;/code&gt; and &lt;code&gt;end&lt;/code&gt;, but that’s a personal preference. Do whatever makes you most comfortable.&lt;/p&gt;
&lt;p&gt;The reason that blocks use variables is because the elements of the collection are actually not modified &amp;mdash; unless you specifically chose to do so. Basically, what happens is that for every single iteration through the array, a copy of the new element is stored in &lt;code&gt;x&lt;/code&gt;, and then &lt;code&gt;x&lt;/code&gt; is used in the block.&lt;/p&gt;
&lt;p&gt;Going through the &lt;code&gt;food&lt;/code&gt; array, the local block variable &lt;code&gt;x&lt;/code&gt; would look something like the following.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;First iteration:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
food[0] = 'chicken'
x = food[0]
x = 'chicken'
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Second iteration:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
food[1] = 'rice'
x = food[1]
x = 'rice'
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Third iteration:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
food[2] = 'steak'
x = food[2]
x = 'steak'
&lt;/pre&gt;
&lt;p&gt;Using numbers would more clearly illustrate that the values aren’t changed in the original array:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; numbers = [1, 2, 3, 4, 5]
=&amp;gt; [1, 2, 3, 4, 5]
&amp;gt; numbers.each do |x|
… x = x + 2
… puts x
… end

3
4
5
6
7

&amp;gt; numbers
=&amp;gt; [1, 2, 3, 4, 5]
&lt;/pre&gt;
&lt;p&gt;Here we’ve printed out the numbers &lt;code&gt;3, 4, 5, 6, 7&lt;/code&gt; (i.e. &lt;code&gt;1+2, 2+2, 3+2&lt;/code&gt;, etc.); but at the end, the &lt;code&gt;numbers&lt;/code&gt; array is the same.&lt;/p&gt;
&lt;h3&gt;Hashes&lt;/h3&gt;
&lt;p&gt;A &lt;a href="http://www.ruby-doc.org/core-1.9.3/Hash.html"&gt;hash&lt;/a&gt; is another collection type. It is a collection of “key-value” pairs. A key-value pair is a combination of the name of a container (i.e. the key) and the contents of the container (i.e. the value).&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
a =&amp;gt; "Marc"
&lt;/pre&gt;
&lt;p&gt;In the key-value pair above, the key is &lt;code&gt;a&lt;/code&gt;, and the value is &lt;code&gt;Marc&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A hash, then, is basically a list of these key-value pairs, separated by commas. A hash looks like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
a =&amp;gt;"Marc", b =&amp;gt; "Cheyenne", c =&amp;gt; "Alexander", d=&amp;gt; "Mia"
&lt;/pre&gt;
&lt;p&gt;Hashes and arrays have some key differences, though, and some things to note:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The keys are not integer keys. They can be characters, integers, strings, etc. &amp;mdash; basically, any Ruby object type.&lt;/li&gt;
&lt;li&gt;The keys are not ordered. So, you couldn’t say that &lt;code&gt;a&lt;/code&gt; is “first” or that it “comes before” &lt;code&gt;b&lt;/code&gt; in the example above, because Ruby does not look at the order of keys in hashes.&lt;/li&gt;
&lt;li&gt;Even though the keys are not ordered, if you were iterating through a hash (which we will do shortly), Ruby would go through them in the order in which they were added to the hash. In our example, if we were printing out each value, Ruby would print out &lt;code&gt;Marc&lt;/code&gt;, &lt;code&gt;Cheyenne&lt;/code&gt;, etc. But don’t confuse this with the way in which array keys are ordered.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are multiple ways to initialize (or initially create) a hash, but the most popular ways look something like the following.&lt;/p&gt;
&lt;p&gt;To create an empty hash (i.e. a hash with no values):&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; day = Hash.­new
=&amp;gt; {}
&lt;/pre&gt;
&lt;p&gt;To create a hash with particular values:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; names = Hash[­"a" =&amp;gt; "Marc­", "b" =&amp;gt; "Chey­enne", "c" =&amp;gt; "Alexander", "d" =&amp;gt; "Mia"­]
=&amp;gt; {"a"=&amp;gt;"Marc", "b"=&amp;gt;"Cheyenne", "c"=&amp;gt;"Alexander", "d"=&amp;gt;"Mia"}
&amp;gt; names2 = {"a" =&amp;gt; "Marc­", "b" =&amp;gt; "Chey­enne"}
=&amp;gt; {"a" =&amp;gt; "Marc", "b" =&amp;gt;"Cheyenne"}
&lt;/pre&gt;
&lt;p&gt;You will notice that to create the hash, you don’t have to use the keyword &lt;code&gt;Hash&lt;/code&gt; or square brackets (&lt;code&gt;[]&lt;/code&gt;). You can use them if you like, or you can just use &lt;code&gt;= { }&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For the keys and values, you also don’t need to put the keys in quotes. You need to do that only if you want to use strings as the key. Ruby also requires a &lt;code&gt;=&amp;gt;&lt;/code&gt; (pronounced “rocket”) to assign the value on the right side of the rocket to the key on the left side.&lt;/p&gt;
&lt;p&gt;If you tried to do &lt;code&gt;names2&lt;/code&gt; without the quotes around the keys, you would likely get an error like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; names2 = { a =&amp;gt; "Marc­", b =&amp;gt; "Chey­enne"}
=&amp;gt; #&amp;lt;NameError: undefined local variable or method `a' for main:Object&amp;gt;
&lt;/pre&gt;
&lt;p&gt;To access values within the hash, you have to specify the name of the hash, along with the key for the value you are trying to access.&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; names
=&amp;gt; {"a"=&amp;gt;"Marc", "b"=&amp;gt;"Cheyenne", "c"=&amp;gt;"Alexander", "d"=&amp;gt;"Mia"}
&amp;gt; names["a"]
=&amp;gt; "Marc"
&amp;gt; names["c"]
=&amp;gt; "Alexander"
&amp;gt; names[a]
=&amp;gt; #&amp;lt;NameError: undefined local variable or method `a' for main:Object&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Because we didn’t use quotes for &lt;code&gt;names[a]&lt;/code&gt;, the Ruby interpreter thinks that &lt;code&gt;a&lt;/code&gt; is a local variable or a method and so can’t find a value for it, thus throwing an error.&lt;/p&gt;
&lt;p&gt;If you tried to access a seemingly legitimate value via a legitimate key that has not been assigned a value, then Ruby would usually return &lt;code&gt;nil&lt;/code&gt;.&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; day["a"]
=&amp;gt; nil
&amp;gt; day[9]
=&amp;gt; nil  #For you Day9 fans, don't worry… I am a fan too :)
&lt;/pre&gt;
&lt;p&gt;Suppose you wanted to create a hash in which every value has a “default” value. You could do something like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; year = Hash.­new("2012"­)
=&amp;gt; {}
&amp;gt; year[0]
=&amp;gt; "2012"
&amp;gt; year[12]
=&amp;gt; "2012"
&lt;/pre&gt;
&lt;p&gt;All we’ve done was call the method &lt;code&gt;new&lt;/code&gt; on the Ruby class &lt;code&gt;Hash&lt;/code&gt; and pass the default value of &lt;code&gt;2012&lt;/code&gt; into that method. So, when trying to access a value that doesn’t exist, instead of returning &lt;code&gt;nil&lt;/code&gt;, Ruby would return the default value (&lt;code&gt;2012&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;You can use a number of methods with hashes:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; names.keys
=&amp;gt; ["a", "b", "c", "d", "e"]
&amp;gt; names.values
=&amp;gt; ["Marc", "Cheyenne", "Alexander", "Mia", "Christopher"]
&lt;/pre&gt;
&lt;p&gt;As you can guess, the &lt;code&gt;keys&lt;/code&gt; just returns all of the keys in the hash, and the &lt;code&gt;values&lt;/code&gt; returns all of the values.&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; names.leng­th
=&amp;gt; 5
&amp;gt; names.has_­key?("a")
=&amp;gt; true
&amp;gt; names.has_­key?("z")
=&amp;gt; false
&amp;gt; names.has_­key("a")
=&amp;gt; #&amp;lt;NoMethodError: undefined method `has_key' for #&amp;lt;Hash:0x55c797d7&amp;gt;&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Note that the name of the &lt;code&gt;has_key&lt;/code&gt; method is actually &lt;code&gt;has_key?&lt;/code&gt;. If you left out the &lt;code&gt;?&lt;/code&gt;, it would throw an error like the one above.&lt;/p&gt;
&lt;p&gt;All that &lt;code&gt;has_key?&lt;/code&gt; is doing is checking the hash to see whether any key matches whatever is in the brackets. If it finds a match, then it returns &lt;code&gt;true&lt;/code&gt;; if it doesn’t, it returns &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; f_names = names
=&amp;gt; {"a"=&amp;gt;"Marc", "b"=&amp;gt;"Cheyenne", "c"=&amp;gt;"Alexander", "d"=&amp;gt;"Mia", "e"=&amp;gt;"Christopher"}
&amp;gt; l_names = {"g" =&amp;gt; "Gayl­e", "h" =&amp;gt; "Gayl­e", "j" =&amp;gt; "Jack­son", "m" =&amp;gt; "Brow­n"}
=&amp;gt; {"g"=&amp;gt;"Gayle", "h"=&amp;gt;"Gayle", "j"=&amp;gt;"Jackson", "m"=&amp;gt;"Brown"}
&amp;gt; f_names.me­rge(l_name­s)
=&amp;gt; {"a"=&amp;gt;"Marc", "b"=&amp;gt;"Cheyenne", "c"=&amp;gt;"Alexander", "d"=&amp;gt;"Mia", "e"=&amp;gt;"Christopher", "g"=&amp;gt;"Gayle", "h"=&amp;gt;"Gayle","j"=&amp;gt;"Jackson", "m"=&amp;gt;"Brown"}
&amp;gt; f_names
=&amp;gt; {"a"=&amp;gt;"Marc", "b"=&amp;gt;"Cheyenne", "c"=&amp;gt;"Alexander", "d"=&amp;gt;"Mia", "e"=&amp;gt;"Christopher"}
&amp;gt; l_names
=&amp;gt; {"g"=&amp;gt;"Gayle", "h"=&amp;gt;"Gayle", "j"=&amp;gt;"Jackson", "m"=&amp;gt;"Brown"}
&lt;/pre&gt;
&lt;p&gt;All we’ve done above was create a new hash, &lt;code&gt;f_names&lt;/code&gt;, by assigning it the existing names &lt;code&gt;hash&lt;/code&gt;. Then, we created another hash, &lt;code&gt;l_names&lt;/code&gt;, that has a few last names. Then, we just merged the two hashes to create a master hash. However, because we just ran the &lt;code&gt;merge&lt;/code&gt; method without assigning the result to any variable, it wasn’t stored. If you check the values of &lt;code&gt;f_names&lt;/code&gt; and &lt;code&gt;l_names&lt;/code&gt; after, you will see that they look exactly the same as before we ran &lt;code&gt;merge&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If we wanted to store the value of the merge, we would have had to do something like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; master_has­h = f_nam­es.merge(l­_names)
=&amp;gt; {"a"=&amp;gt;"Marc", "b"=&amp;gt;"Cheyenne", "c"=&amp;gt;"Alexander", "d"=&amp;gt;"Mia", "e"=&amp;gt;"Christopher", "g"=&amp;gt;"Gayle", "h"=&amp;gt;"Gayle", "j"=&amp;gt;"Jackson", "m"=&amp;gt;"Brown"}
&lt;/pre&gt;
&lt;p&gt;Another approach is to do a “destructive” merge. This is an interesting feature of Ruby. For many (perhaps most) methods, if you add an exclamation point to the end of the method’s call, you actually replace the value of the method’s caller with the returned value. For example:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; f_names
=&amp;gt; {"a"=&amp;gt;"Marc", "b"=&amp;gt;"Cheyenne", "c"=&amp;gt;"Alexander", "d"=&amp;gt;"Mia", "e"=&amp;gt;"Christopher"}
&amp;gt; l_names
=&amp;gt; {"g"=&amp;gt;"Gayle", "h"=&amp;gt;"Gayle", "j"=&amp;gt;"Jackson", "m"=&amp;gt;"Brown"}
&amp;gt; f_names.me­rge!(l_names)
=&amp;gt; {"a"=&amp;gt;"Marc", "b"=&amp;gt;"Cheyenne", "c"=&amp;gt;"Alexander", "d"=&amp;gt;"Mia", "e"=&amp;gt;"Christopher", "g"=&amp;gt;"Gayle", "h"=&amp;gt;"Gayle", "j"=&amp;gt;"Jackson", "m"=&amp;gt;"Brown"}
&amp;gt; f_names
=&amp;gt; {"a"=&amp;gt;"Marc", "b"=&amp;gt;"Cheyenne", "c"=&amp;gt;"Alexander", "d"=&amp;gt;"Mia", "e"=&amp;gt;"Christopher", "g"=&amp;gt;"Gayle", "h"=&amp;gt;"Gayle", "j"=&amp;gt;"Jackson", "m"=&amp;gt;"Brown"}
&lt;/pre&gt;
&lt;p&gt;As you can see, the &lt;code&gt;f_names&lt;/code&gt; value after we ran the destructive merge method (&lt;code&gt;merge!&lt;/code&gt;) is now the same value as the merged hash.&lt;/p&gt;
&lt;p&gt;Another method that you can use with hashes is &lt;code&gt;each&lt;/code&gt;. But it is slightly different. With arrays, you just have to pass in one variable to the block (which essentially represents the index of the array). With hashes, you have to pass in two variables: one that represents the key, and another that represents the value.&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; f_names.ea­ch do |key,­ value­|
.. puts "#{ke­y} is #{val­ue}"
.. end
=&amp;gt; "a is Marcb is Cheyennec is Alexanderd is Miae is Christopherg is Gayleh is Gaylej is Jacksonm is Brown"
&lt;/pre&gt;
&lt;p&gt;This looks a little messy. Here is what’s happening:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reading from left to right, Ruby reads the left-most and oldest value first, and it stores those values in &lt;code&gt;key&lt;/code&gt; and &lt;code&gt;value&lt;/code&gt;. So, after the first iteration, &lt;code&gt;key&lt;/code&gt; would be &lt;code&gt;a&lt;/code&gt;, and &lt;code&gt;value&lt;/code&gt; would be &lt;code&gt;Marc&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then, Ruby goes inside the block and executes top down. The first command is &lt;code&gt;puts&lt;/code&gt;, followed by a string. In other words, it will print everything in quotes to the screen.&lt;/li&gt;
&lt;li&gt;What is that strange syntax in the quotes after the &lt;code&gt;puts&lt;/code&gt;? That’s called “&lt;a href="http://en.wikipedia.org/wiki/String_interpolation"&gt;string interpolation&lt;/a&gt;.” It basically says, stick the value of this variable into my string at this exact position. Thus, after the first iteration, &lt;code&gt;puts&lt;/code&gt; would do this:
&lt;ol&gt;
&lt;li&gt;Look for the key variable.&lt;/li&gt;
&lt;li&gt;Print the key variable to the screen (i.e. &lt;code&gt;a&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Then print a space (because we put a space between the key and the &lt;code&gt;is&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Print the next word (&lt;code&gt;is&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Then print another space.&lt;/li&gt;
&lt;li&gt;Then print the value variable (&lt;code&gt;Marc&lt;/code&gt;). (The entire string, after the first iteration, would be &lt;code&gt;a is Marc&lt;/code&gt;.)&lt;/li&gt;
&lt;li&gt;Go to the next command because this &lt;code&gt;puts&lt;/code&gt; command is done.&lt;/li&gt;
&lt;li&gt;Sees &lt;code&gt;end&lt;/code&gt;, so goes back to the beginning of the block to see whether any more elements are in this hash object.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Because it is in a block, it just repeats this entire process for every key-value pair in the hash until there are no more.&lt;/li&gt;
&lt;li&gt;Because we didn’t add a space before the last double quotes on the &lt;code&gt;puts&lt;/code&gt; line (and we didn’t put a space after the first quote on the &lt;code&gt;puts&lt;/code&gt; line), no space will be between the last character of the first iteration and the first character of the second iteration.&lt;/li&gt;
&lt;li&gt;In other words, if &lt;code&gt;puts&lt;/code&gt; looks like &lt;code&gt;puts " #{key} is #{value}"&lt;/code&gt;, then the resulting string might make more sense: &lt;code&gt;a is Marc b is Cheyenne c is Alexander&lt;/code&gt; etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I intended for the output to make sense, but when I saw the result, I realized that this has tripped me up many times in my career, so I figured to highlight it.&lt;/p&gt;
&lt;p&gt;You can &lt;a title="Ruby Hash" href="http://www.ruby-doc.org/core-1.9.3/Hash.html"&gt;use a lot more methods on hashes&lt;/a&gt;, many of which you should be familiar with because they look like others we have covered here, such as &lt;code&gt;value?&lt;/code&gt; (note the &lt;code&gt;?&lt;/code&gt; &amp;mdash; I’m not asking a question here), and they look similar to the methods we went over in the arrays section, such as &lt;code&gt;include?&lt;/code&gt;, &lt;code&gt;empty?&lt;/code&gt;, &lt;code&gt;eql?&lt;/code&gt;, &lt;code&gt;size&lt;/code&gt;, etc.&lt;/p&gt;
&lt;p&gt;The last element of Ruby that you should be familiar with is an object type called a symbol.&lt;/p&gt;
&lt;h4&gt;Symbols&lt;/h4&gt;
&lt;p&gt;A symbol is an object type that resembles a string, but is not quite one. The major difference between a symbol and a string is that a symbol always begins with a colon (like &lt;code&gt;:name&lt;/code&gt;). (For more information, see the “&lt;a title="Ruby Symbols" href="http://www.ruby-doc.org/core-1.9.3/Symbol.html"&gt;Symbol&lt;/a&gt;” article in the Ruby documentation and “&lt;a href="http://www.troubleshooters.com/codecorn/ruby/symbols.htm"&gt;The Ruby_Newbie Guide to Symbols&lt;/a&gt;” on Troubleshooters.com)&lt;/p&gt;
&lt;p&gt;Symbols work nicely with hashes because you can use them as the keys instead of strings.&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; f_names
=&amp;gt; {:a =&amp;gt;"Marc", :b =&amp;gt;"Cheyenne", :c =&amp;gt;"Alexander", :d =&amp;gt;"Mia", :e =&amp;gt;"Christopher"}
&amp;gt; f_names[:a­]
=&amp;gt; "Marc"
&lt;/pre&gt;
&lt;p&gt;The good thing about this is that you no longer have to worry about all of those quotes for both the keys and the values… but you can still remember the words for the keys.&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;
&amp;gt; pets = {:dog­ =&amp;gt; "Cook­ie", :cat =&amp;gt; "Snow­y", :fish­ =&amp;gt; "Gold­ie"}
=&amp;gt; {:dog=&amp;gt;"Cookie", :cat=&amp;gt;"Snowy", :fish=&amp;gt;"Goldie"}
&amp;gt; pets[:dog]
=&amp;gt; "Cookie"
&amp;gt; pets[:fish]
=&amp;gt; "Goldie"
&lt;/pre&gt;
&lt;p&gt;Symbols make dealing with hashes much simpler than using strings as keys. You can, of course, use hashes for anything else in the Ruby language; their main function is to store values and make retrieval easier on the interpreter (since handling strings has many rules).&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;I hope you have learned a lot here. Remember that this guide to Ruby is not comprehensive, but simply an introduction tailored to those with little or no programming experience. It’s not written in the typical programming tutorial style because I’ve always found that to be a bit difficult. I need to understand the whys behind the whats, so I’ve taken that approach here. I also don’t profess to be a Ruby ninja; I just wanted to learn how to build Web products myself, so I taught myself Ruby and Rails.&lt;/p&gt;
&lt;p&gt;You now have the foundation to play with Try Ruby some more or to install Ruby on your system and get started (Google it).&lt;/p&gt;
&lt;p&gt;Good luck, and remember that true learning often happens when you are struggling with a problem. When you spend one week stuck on a “very simple” problem and you eventually figure it out, you are guaranteed not to make that mistake again. And when you get stuck, don’t panic. Just take a break; maybe Google it and see what solutions others have had. But don’t just copy and paste code. Figure out why it does what it does and how it can help you. That’s how you learn.&lt;/p&gt;
&lt;p&gt;If I was unclear with anything, please let me know in the comments.&lt;/p&gt;
&lt;h4&gt;Additional Reading&lt;/h4&gt;
&lt;p&gt;There are fabulous books on Ruby to help get you started. Here are some of my favorites.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Whys Poignant Guide to Ruby" href="http://mislav.uniqpath.com/poignant-guide/book/"&gt;Why’s (Poignant) Guide to Ruby&lt;/a&gt;&lt;br /&gt;
This wonderful comic has become a classic in the Ruby community. In fact, its author (Why the Lucky Stiff &amp;mdash; yes, that’s his name) disappeared a few years ago, which created a somewhat cultish mystique around the work that he did. His wife let the world know that he is fine, but he is no longer an active member of the Ruby community (Google him if you are interested in the saga).&lt;/li&gt;
&lt;li&gt;&lt;a title="Humble Little Ruby Book" href="http://www.humblelittlerubybook.com/"&gt;&lt;em&gt;Humble Little Ruby Book&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;
Buy the PDF or read it free online. The writing style is engaging.&lt;/li&gt;
&lt;li&gt;&lt;a title="Eloquent Ruby" href="http://www.amazon.com/Eloquent-Ruby-Addison-Wesley-Professional-Series/dp/0321584104"&gt;&lt;em&gt;Eloquent Ruby&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;
This book really helped me wrap my brain around “the Ruby way” of programming. It is a little more advanced than the two resources above, but once you have some of the basics down (i.e. once you have a solid understand of everything we’ve covered in this series), you should be able to learn a lot from this book. Russ’ tone is engaging and his writing easy to understand.&lt;/li&gt;
&lt;li&gt;&lt;a title="Programming Ruby" href="http://www.ruby-doc.org/docs/ProgrammingRuby/"&gt;Programming Ruby: The Pragmatic Programmer’s Guide&lt;/a&gt;&lt;br /&gt;
This is a little drier in presentation and tone, but rich in content. It is also known as Ruby Pickaxe and the Ruby Bible. A solid encyclopedia of all aspects of the Ruby programming language. The reason it is called Pickaxe is because it had a picture of a Pickaxe on the cover. The first version is free to read, although it is a bit outdated.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://pragprog.com/book/ruby3/programming-ruby-1-9"&gt;Programming Ruby 1.9: The Pragmatic Programmer’s Guide&lt;/a&gt;&lt;br /&gt;
A more up-to-date Programming Ruby (aka Pickaxe). While not free, this one is a must have for all Rubyistas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;(al)&lt;/em&gt; &lt;em&gt;(km)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© Marc Gayle for &lt;a href="http://www.smashingmagazine.com"&gt;Smashing Magazine&lt;/a&gt;, 2012.&lt;/small&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/349hEwki5rU" height="1" width="1"/&gt;</content>
                                                            <link rel="replies" type="text/html" href="http://www.smashingmagazine.com/2012/05/24/a-beginners-guide-to-ruby/#comments" thr:count="0" />
        <link rel="replies" type="application/atom+xml" href="http://www.smashingmagazine.com/2012/05/24/a-beginners-guide-to-ruby/feed/atom/" thr:count="0" />
        <thr:total>0</thr:total>
    <feedburner:origLink>http://www.smashingmagazine.com/2012/05/24/a-beginners-guide-to-ruby/</feedburner:origLink></entry>
            <entry>
        <author>
            <name>Mads Soegaard</name>
                                    <uri>http://interaction-design.org</uri>
                    </author>
        <title type="html"><![CDATA[The History Of Usability: From Simplicity To Complexity]]></title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SmashingMagazine/~3/MoSKWJam_B4/" />
        <id>http://mgmt.smashingmagazine.com/?p=132631</id>
        <updated>2012-05-23T12:55:03Z</updated>
        <published>2012-05-23T12:55:03Z</published>
            <category scheme="http://www.smashingmagazine.com" term="UX Design" />        <summary type="html"><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=1" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=2" border="0" alt="" /></a>&#160;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=smashing-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=smashing-rss&#038;position=3" border="0" alt="" /></a>
    </div></td></tr></table>
<p>The story of usability is a perverse journey from simplicity to complexity. That's right, from simplicity to complexity&#8212;<em>not</em> the other way around.</p>

<p><a href="http://uxdesign.smashingmagazine.com/2012/05/23/the-history-of-usability-from-simplicity-to-complexity/"><img class="alignnone size-full wp-image-112158" title="The History of Usability: From Simplicity to Complexity" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/hands.jpg" alt="The History of Usability: From Simplicity to Complexity" width="500" height="324" /></a></p>

<p>If you expect a "user-friendly" introduction to usability and that the history of usability is full of well-defined concepts and lean methods, you're in for a surprise. Usability is a messy, ill-defined, and downright confusing concept. The more you think about it&#8212;or practice it&#8212;the more confusing it becomes.</p>]]></summary>
                    <content type="html" xml:base="http://www.smashingmagazine.com/2012/05/23/the-history-of-usability-from-simplicity-to-complexity/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Rr-BSzxbCC3LN4jmM6qPgHNJdvU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rr-BSzxbCC3LN4jmM6qPgHNJdvU/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/Rr-BSzxbCC3LN4jmM6qPgHNJdvU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rr-BSzxbCC3LN4jmM6qPgHNJdvU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;table width="650"&gt;
&lt;tr&gt;
&lt;td width="650"&gt;
&lt;div style="width:650px;"&gt;
      &lt;img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /&gt;&lt;br /&gt;
      &lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=1" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=1" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=2" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=2" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;#038;collection=smashing-rss&amp;#038;position=3" target="_blank"&gt;&lt;img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;#038;collection=smashing-rss&amp;#038;position=3" border="0" alt="" /&gt;&lt;/a&gt;
    &lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;The story of usability is a perverse journey from simplicity to complexity. That&amp;#8217;s right, from simplicity to complexity&amp;mdash;&lt;em&gt;not&lt;/em&gt; the other way around.&lt;/p&gt;
&lt;p&gt;If you expect a &amp;#8220;user-friendly&amp;#8221; introduction to usability and that the history of usability is full of well-defined concepts and lean methods, you&amp;#8217;re in for a surprise. Usability is a messy, ill-defined, and downright confusing concept. The more you think about it&amp;mdash;or practice it&amp;mdash;the more confusing it becomes. We learned that the history of usability is a &amp;#8220;perverse journey from simplicity to complexity&amp;#8221;.&lt;/p&gt;
&lt;h3&gt;What Is Usability?&lt;/h3&gt;
&lt;h4&gt;Early Roots of Usability&lt;/h4&gt;
&lt;p&gt;If we go far back in history, Vitruvius (1st century BC) was probably the first person to lay forth systematic and elaborated principles of design. His three core design principles became very influential:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Firmitas&lt;/strong&gt;: The strength and durability of the design;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Utilitas&lt;/strong&gt;: A design&amp;#8217;s usefulness and suitability for the needs of its intended users;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Venustas&lt;/strong&gt;: The beauty of the design.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Vitruvius&amp;#8217; work was an inspiration to people like Leonardo da Vinci, who drew the well-known Vitruvian Man (fig. 1 below). By empirically measuring and calculating the proportions of the human body, and emphasising the &amp;#8220;utilitas&amp;#8221; principle, Vitruvius may be considered the first student of ergonomics and usability.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://commons.wikimedia.org/wiki/File:Leonardo_da_Vinci-_Vitruvian_Man.JPG"&gt;&lt;img class="size-full wp-image-112157 alignnone" title="vitruvian" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/vitruvian.jpg" alt="" width="450" height="616" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;Figure 1: The &lt;a href="http://commons.wikimedia.org/wiki/File:Leonardo_da_Vinci-_Vitruvian_Man.JPG" title="Vitruvian Man"&gt;Vitruvian Man&lt;/a&gt; drawing was created by Leonardo da Vinci circa 1487 based on the work of Vitruvius.&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;Military Roots&lt;/h4&gt;
&lt;p&gt;The discipline of usability is also rooted in the discipline called &lt;em&gt;Human Factors&lt;/em&gt;, which started as military personnel asked themselves the very morbid question:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&amp;#8220;What design do we need to kill more enemies through better matching soldier and weapon? And thus avoid getting killed ourselves.&amp;#8221;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Both World War I and World War II fueled research into Human Factors. When designing artillery cannons, for example, usability yielded more precision, greater kills, and shorter training of personnel.&lt;/p&gt;
&lt;p&gt;Thus, military designers could extract some very concrete usability metrics. For example:&lt;/&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How quickly will a new crew member learn how to use the artillery cannon (now that the former crew member is dead)?&lt;/li&gt;
&lt;li&gt;How many rounds per minute (ordnance) is the cannon able to fire with an inexperienced versus an experienced crew?&lt;/li&gt;
&lt;li&gt;How will improving the design of the cannon improve target acquisition (and thus kill more enemies)?&lt;/li&gt;
&lt;li&gt;How does a design improvement decrease soldier fatigue (as a consequence of a lighter cognitive load)?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://commons.wikimedia.org/wiki/File:Cyclone-French-320th-artillery-5_Sept-1917-Belgium.jpg"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/Tank.jpg" alt="Cyclone" title="Cyclone" width="500" height="350" class="alignnone size-full wp-image-112284" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;Figure 2: Photograph of the French 320 mm railway gun &lt;a href="http://commons.wikimedia.org/wiki/File:Cyclone-French-320th-artillery-5_Sept-1917-Belgium.jpg" title="Cyclone"&gt;Cyclone&lt;/a&gt;, taken in Belgium in 1917. The gun required not only trained personnel to fire it, but also trained personnel to drive it.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://commons.wikimedia.org/wiki/File:155fire.jpg"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/Howitzer.jpg" alt="Howitzer" title="Howitzer" width="500" height="350" class="alignnone size-full wp-image-112288" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;Figure 3: A 155 mm artillery shell fired by a United States 11th Marine Regiment&amp;#8217;s &lt;a href="http://commons.wikimedia.org/wiki/File:155fire.jpg" title="Howitzer"&gt;M-198&lt;/a&gt; howitzer. The setup time (and thus usability) is essential as anti-artillery weapons necessitate that the position of the howitzer be changed very quickly after firing.&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;Recent Roots of Usability&lt;/h4&gt;
&lt;p&gt;The concept of usability has its more recent and direct origins in the falling prices of computers in the 1980s, when for the first time it was feasible for many employees to have their own personal computer. In the 80s, most computer users had practically no, or only basic, training on operating systems and applications software. However, software design practices continued to implicitly assume knowledgeable and competent users, who would be familiar with technical vocabularies and system architectures, and also possess an aptitude for solving problems arising from computer usage.&lt;/p&gt;
&lt;p&gt;Such implicit assumptions rapidly became unacceptable. For the average user, interactive computing became associated with constant frustrations and consequent anxieties. Computers were obviously too hard to use for most users, and often absolutely inpractical. Usability thus became a key goal for the design of any interactive software that would not be used by trained technical computer specialists.&lt;/p&gt;
&lt;p&gt;The current understanding of usability is different from the early days in the 1980s. Usability used to be a dominant concept but this changed with research increasingly focused on usage contexts. Usage quality no longer appeared to be a simple issue of how inherently usable an interactive system was, but how well it fitted its context of use.&lt;/p&gt;
&lt;h3&gt;Usability Evaluation: What&amp;#8217;s Good And What&amp;#8217;s Bad?&lt;/h3&gt;
&lt;p&gt;Usability is a contested historical term that is difficult to replace. User experience specialists have to refer to usability, since it is a strongly established concept within the IT landscape. In simplified terms, usability work is about finding out what&amp;#8217;s good and what&amp;#8217;s bad. However, when we examine the hundreds of usability evaluation methods in use, we do see that &lt;strong&gt;different approaches to usability result in differences over the causes of good and poor usability&lt;/strong&gt;. That may sound complicated but let&amp;#8217;s take two different approaches to usability:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If you think usability is a &lt;em&gt;feature&lt;/em&gt; of an interactive system, your approach to usability may be called essentialist&amp;mdash;i.e. poor/good usability resides in the &amp;#8220;essense&amp;#8221; of the system. You will typically find yourself saying things like &amp;#8220;that website is not user-friendly&amp;#8221;, &amp;#8220;a website or system has poor usability when there is no visibility of system status&amp;#8221;, &amp;#8220;I can reliably measure which website has the best usability&amp;#8221;, etc. This means you think that all causes of user performance are due to technology. In that case, you will typically use system-centered usability inspection methods to identify such causes.&lt;/li&gt;
&lt;li&gt;On the other hand, if you think usability is a feature of the &lt;em&gt;interaction&lt;/em&gt; between user, computer and the context, your approach to usability is contextual&amp;mdash;i.e. depending on the context. This means that you think questions of user performance have different causalities, some due to technologies, and others due to some aspect(s) of usage contexts, but most due to interactions between both. Several evaluation and other methods may be needed to identify and relate a nexus of causes. You will often find yourself saying vague things like &amp;#8220;that depends…&amp;#8221;, &amp;#8220;well… this website checkout procedure is great for male, fact-oriented, middle-aged buyers, but not for an impatient teenager doing the purchase on his smartphone sitting in the bus&amp;#8221;, etc.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The reason I mention the essentialist/contextual distinction is that anyone involved with usability should&amp;mdash;ideally&amp;mdash;be able to say &amp;#8220;this website/technology/system is good, that one is bad&amp;#8221;. After all, isn&amp;#8217;t that what your client or boss is paying you to do?&lt;/p&gt;
&lt;p&gt;To answer if the usability of a website is good or bad you have to employ a usability method. And your choice of usability method will depend on your approach to usability&amp;mdash;whether you admit it or not. Maybe you&amp;#8217;ll deny it and say, &amp;#8220;I&amp;#8217;ve never heard of any essentialist/contextual approaches to usability.&amp;#8221; However, that would be like selling French wine without ever having spent time in a French vineyard. You can do it, but at some point your client or boss will start asking questions you can&amp;#8217;t answer. Or your decisions will have unexpected side-effects.&lt;/p&gt;
&lt;p&gt;So what usability method should you choose to determine &amp;#8220;what&amp;#8217;s good and what&amp;#8217;s bad&amp;#8221;?&lt;/p&gt;
&lt;h3&gt;Analytical And Empirical Evaluation Methods&lt;/h3&gt;
&lt;p&gt;Usability work can involve a mix of methods and the mix can be guided by high level distinctions between methods, for example &lt;strong&gt;the distinction between analytical and empirical evaluation methods&lt;/strong&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Analytical evaluation methods are based on examination of an interactive system and/or potential interactions with it. You analyse the system or analyse the interaction with the system.&lt;/li&gt;
&lt;li&gt;Empirical evaluation methods, on the other hand, are based on actual usage data.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Analytical evaluation methods may be system-centred, like Jakob Nielsen&amp;#8217;s &lt;em&gt;Heuristic Evaluation&lt;/em&gt; or interaction-centred, like the &lt;em&gt;Cognitive Walkthrough&lt;/em&gt; method. Design teams use the resources provided by a method (e.g. heuristics) to identify strong and weak elements of a design from a usability perspective.&lt;/p&gt;
&lt;p&gt;Three types of analytical evaluation methods:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Inspection methods&lt;/strong&gt; tend to focus on the causes of good or poor usability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;System-centered inspection methods&lt;/strong&gt; focus solely on software and hardware features regarding attributes that will promote or obstruct usability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interaction-centered methods&lt;/strong&gt; focus on two or more causal factors (i.e. software features, user characteristics, task demands, or other contextual factors).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://www.interaction-design.org/images/encyclopedia/usability_evaluation/two_hands_usability_figure.jpg"&gt;&lt;img class="alignnone size-full wp-image-112158" title="hands" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/hands.jpg" alt="" width="500" height="324" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;Figure 4: Jakob Nielsen&amp;#8217;s &lt;em&gt;Heuristic Evaluation&lt;/em&gt; is a good example of an analytical evaluation method. &lt;em&gt;Heuristic Evaluation&lt;/em&gt; became the most popular user-centered design approach in the 1990s, but has become less prominent with the move away from desktop applications.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Empirical evaluation methods focus on evidence of good or poor usability, i.e. the positive or negative effects of attributes of software, hardware, user capabilities and usage environments. User testing is the principal project-focused method. It uses project-specific resources such as test tasks, users, and also measuring instruments to expose usability problems that can arise in use. Also, empirical experiments can be used to demonstrate superior usability arising from user interface components (e.g. text entry on mobile phones) or to optimise tuning parameters (e.g. timings of animations for windows opening and closing).&lt;/p&gt;
&lt;p&gt;Such experiments assume that the test tasks, users and contexts allow generalisation in regards to other users, tasks and contexts. Such assumptions are readily broken, e.g. when users are very young or elderly, or have impaired movement or perception.&lt;/p&gt;
&lt;h3&gt;How To Balance The Mix: Why Is It Difficult?&lt;/h3&gt;
&lt;p class="indent"&gt;Achieving a balanced mix of evaluation methods is not straightforward, and involves more than simply combining analytical and empirical methods. This is because there is more to usability work than simply choosing and using methods.&lt;/p&gt;
&lt;p&gt;Evaluation methods are as complete as a Chicken Fajita Kit, which contains very little of what is actually needed to make Chicken Fajitas: no chicken, no onion, no peppers, no cooking oil, etc. Similarly, user testing &amp;#8216;methods&amp;#8217; miss out equally vital ingredients and project-specific resources such as participant recruitment criteria, screening questionnaires, consent forms, test task selection criteria, test (de)briefing scripts, target thresholds, data analysis methods, or reporting formats.&lt;/p&gt;
&lt;p&gt;There is no complete published user testing method that novices can pick up and use &amp;#8216;as is&amp;#8217;. All user testing requires extensive project-specific planning and implementation. Much usability work is about configuring and combining methods for project-specific use.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2012/05/fajita.jpg"&gt;&lt;img class="alignnone size-full wp-image-112115" title="fajita" src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/fajita.jpg" alt="" width="352" height="280" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;Figure 5. &lt;span class="indent"&gt;Chicken Fajita Kit&lt;/span&gt;. Copyright Old El Paso. All rights reserved.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;The Only Methods Are The Ones That You Complete Yourselves&lt;/h3&gt;
&lt;p style="margin-top: 0pt; margin-bottom: 0pt;"&gt;When planning usability work, it is important to recognise that so-called &amp;#8216;methods&amp;#8217; are simply loose collections of resources better understood as &amp;#8216;approaches&amp;#8217;. There is much work in getting usability work to work, and as with all knowledge-based work, methods cannot be copied from books and applied without a strong understanding of fundamental underlying concepts. All methods must have unique usage settings that require project-specific resources. For user testing, for example, these include participant recruitment, test procedures and (de-)briefings. There are no universal measures of usability that are relevant to every software development project.&lt;/p&gt;
&lt;h3&gt;The Position So Far&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;There are fundamental differences on the nature of usability, i.e. it is either an inherent property of interactive systems, or an emergent property of usage. There is no single definitive answer to what usability &amp;#8216;is&amp;#8217;.&lt;/li&gt;
&lt;li&gt;There are no universal measures of usability and no fixed thresholds above or below which all interactive systems are or are not usable. There are no universal, robust, objective and reliable metrics. All positions here involve hard won expertise, judgement calls, and project-specific resources beyond what all documented evaluation methods provide.&lt;/li&gt;
&lt;li&gt;Usability work is too complex and project-specific to admit generalised methods. What are called &amp;#8216;methods&amp;#8217; are more realistically &amp;#8216;approaches&amp;#8217; that provide loose sets of resources that need to be adapted and configured on a project by project basis.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Readers could reasonably draw the conclusion from the above that usability is an attractive idea in principle that has limited real-world application. However, the reality is that we all continue to experience frustrations when using interactive digital technologies, and even we would say that we find them difficult to use. Even so, frustrating user experiences may not be due to some single abstract construct called &amp;#8216;usability&amp;#8217;, but instead be the result of unique complex interactions between people, technology and usage contexts.&lt;/p&gt;
&lt;h3&gt;Usability In The Design Room&lt;/h3&gt;
&lt;p&gt;In well directed design teams, there will not be enough work for a pure usability specialist. This is evidenced by a trend within the last decade of a broadening from usability to user experience expertise. User experience work focuses on both positive and negative value, both during usage and after it. A sole focus on negative aspects of interactive experiences is becoming rarer. Useful measures of usage are extending beyond the mostly cognitive problem measures of 1980s usability to include positive and negative effect, attitudes and values, e.g. fun, trust, and self-affirmation. The coupling between evaluation and design is being improved by user experience specialists with design competences.&lt;/p&gt;
&lt;p&gt;Many user experience professionals have also developed specific competences in areas such as brand experience, trust markers, search experience/optimisation, usable security and privacy, game experience, self and identity, and human values. We can see two trends here. The first involves complementing human-centered expertise with strong understandings of specific technologies such as search and security. The second involves a broadening of human-centered expertise to include business competences (e.g. branding) and humanistic psychological approaches (e.g. phenomenology, meaning and value).&lt;/p&gt;
&lt;p&gt;As such, a usability person is not a lone judge who makes the call &amp;#8220;is this usable?&amp;#8221; Instead, the usability proficient person will often be a team player taking on many roles in the product development lifecycle.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://commons.wikimedia.org/wiki/File:Lorenzo_porzio_singolo.jpg"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/Row-One.jpg" alt="Rower" title="Rower" width="500" height="350" class="alignnone size-full wp-image-112285" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://commons.wikimedia.org/wiki/File:Rowing_-_USA_Lwt_4_@_World_Champs_2003.jpg"&gt;&lt;img src="http://media.smashingmagazine.com/wp-content/uploads/2012/05/Row-Team.jpg" alt="Row Team" title="Row Team" width="500" height="350" class="alignnone size-full wp-image-112286" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;Figure 6 A-B. From Solo Specialist to Team Member: User Experience&amp;mdash;as opposed to Usability&amp;mdash;as an integrated part of design teams. Copyright of leftmost picture: Flickr user &amp;#8216;Tety&amp;#8217; through the Creative Commons Attribution Share-Alike 2.0 licence&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Conclusion: Are You Confused?&lt;/h3&gt;
&lt;p&gt;This Smashing Magazine article is a digested version of the monstrous 25,000 word &lt;a title="Usability Evaluation introduction / primer" href="http://www.interaction-design.org/encyclopedia/usability_evaluation.html?p=7980"&gt;encyclopedic introduction to the history of Usability Evaluation&lt;/a&gt; at Interaction-Design.org. It&amp;#8217;s available in a special version for Smashing readers.&lt;/p&gt;
&lt;p&gt;Did this article confuse you more than it informed you? Well, it should! If you want an answer to the question of &amp;#8220;what is usability?&amp;#8221;, it&amp;#8217;s just as complicated as asking &amp;#8220;what is beauty?&amp;#8221; The more you think about it, the less you feel you know. I don&amp;#8217;t believe you will ever find the answer to the question &amp;#8220;what is usability?&amp;#8221;, but I nevertheless hope you&amp;mdash;as I&amp;mdash;will continue to ask that very question. And be confused again and again. Confusion is&amp;mdash;after all&amp;mdash;the mother of wisdom.&lt;/p&gt;
&lt;p&gt;The concept of usability is a product of millions of designers trying for decades to describe what they are doing to make technology easier and more pleasant. As such, the concept is immensely complex. It may have started out as a simple concept but the more people who are involved with usability, the more multi-faceted the concept will become. Therefore, the history of usability is a journey from simplicity to complexity. Is that journey worth the effort? Certainly! Anyone who masters usability&amp;mdash;and all its facets&amp;mdash;has a power position when it comes to designing easy/pleasant/cool/useful/usable/etc. technology. As confusing as that endeavour may be!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(jc) (il)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© Mads Soegaard for &lt;a href="http://www.smashingmagazine.com"&gt;Smashing Magazine&lt;/a&gt;, 2012.&lt;/small&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/MoSKWJam_B4" height="1" width="1"/&gt;</content>
                                                            <link rel="replies" type="text/html" href="http://www.smashingmagazine.com/2012/05/23/the-history-of-usability-from-simplicity-to-complexity/#comments" thr:count="0" />
        <link rel="replies" type="application/atom+xml" href="http://www.smashingmagazine.com/2012/05/23/the-history-of-usability-from-simplicity-to-complexity/feed/atom/" thr:count="0" />
        <thr:total>0</thr:total>
    <feedburner:origLink>http://www.smashingmagazine.com/2012/05/23/the-history-of-usability-from-simplicity-to-complexity/</feedburner:origLink></entry>
        </feed>

