Flash Develop And Design http://www.flashdevelop.net/rss.php For Flash Developer And Designer en-us Wed, 19 Jun 2013 16:38:25 UTC Wed, 19 Jun 2013 16:38:25 UTC http://www.flashdevelop.net Grab Your WordPress Bootcamp Seat Today and Save $200 http://www.flashdevelop.net/postshow.php?pid=6755 <p><a href="http://rss.buysellads.com/click.php?z=1281071&amp;k=4857ce43a258e87ce432a0c4b12797ce&amp;a=9078&amp;c=2082473536" target="_blank" rel="nofollow"> <img src="http://rss.buysellads.com/img.php?z=1281071&amp;k=4857ce43a258e87ce432a0c4b12797ce&amp;a=9078&amp;c=2082473536" border="0" alt="" /></a></p><p><a href="http://buysellads.com/buy/sitedetails/pubkey/4857ce43a258e87ce432a0c4b12797ce/zone/1281071" target="_blank">Advertise here with BSA</a></p><br /><p>Grab Your WordPress Bootcamp Seat Today and Save $200</p> <p>If you’re looking for a fast way to learn WordPress, LearnWebDevelopment.com has created the perfect program. It’s their WordPress Bootcamp &#8211; a training course that will teach you how to build a fully-functioning WordPress website in just 8 weeks! And, because they give all their students weekly feedback as they go through the course, you’ll never be left alone. </p> <p>The only catch is &#8230; early-bird pricing (and the option to save $200 off the regular price) is ending soon. You have until Thursday, June 20, 2013 at midnight. </p> <p>If you&#8217;d like to quickly become an in-demand WordPress website designer, <a href="http://www.learnwebdevelopment.com/cmd.php?af=1542368">sign up here now</a>.</p> <p>Remember, all of LearnWebDevelopment.com’s WordPress Bootcamps come with a risk-free lifetime money-back guarantee. <a href="http://www.learnwebdevelopment.com/cmd.php?af=1542368">Get the details here</a>.</p> <div> <a href="http://feeds.feedburner.com/~ff/Bittbox?a=bd5xDBGFEvQ:1_vbyrjKC-g:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Bittbox?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Bittbox?a=bd5xDBGFEvQ:1_vbyrjKC-g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Bittbox?i=bd5xDBGFEvQ:1_vbyrjKC-g:D7DqB2pKExk" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/Bittbox/~4/bd5xDBGFEvQ" height="1" width="1" />Rss AD FYI Monday: Surreal Illustrations by Andrew Archer http://www.flashdevelop.net/postshow.php?pid=6754 <p>This post is part of the <strong>For Your Inspiration Monday</strong> series showcasing the most inspiring designs out there. Each week a new artist or design style will be presented in order to get your creative juices flowing for the upcoming week. I hope you enjoy the series.</p> <p><strong>Andrew Archer</strong> is an illustrator based in Auckland, New Zealand. Many of Andrew&#8217;s work revolves around character design with a clear touch of surrealism. This illustration style lends itself perfectly to editorial design so it comes as no surprise that his client list features the likes of WIRED, Q Magazine and Fortune. For more inspiration visit <a title="Portfolio of Andrew Archer" href="http://www.andrewarcher.com/" target="_blank">Andrew&#8217;s portfolio</a>.<span></span></p> <p><img class="alignnone size-full wp-image-4539" alt="Andrew Archer BeoBachter Illustration" src="http://fudgegraphics.com/wp-content/uploads/2013/06/FYI-Andrew-Archer-BeoBachter-Illustration.jpg" width="496" height="650" /></p> <p><img class="alignnone size-medium wp-image-4540" alt="Andrew Archer Eating Slim Illustration" src="http://fudgegraphics.com/wp-content/uploads/2013/06/FYI-Andrew-Archer-Eating-Slim-Illustration-575x414.jpg" width="575" height="414" /></p> <p><img class="alignnone size-full wp-image-4542" alt="Andrew Archer Music Month Illustration" src="http://fudgegraphics.com/wp-content/uploads/2013/06/FYI-Andrew-Archer-Music-Month-Illustration.jpg" width="573" height="575" /></p> <p><img class="alignnone size-medium wp-image-4541" alt="Andrew Archer Little Ghosts Illustration" src="http://fudgegraphics.com/wp-content/uploads/2013/06/FYI-Andrew-Archer-Little-Ghosts-Illustration-575x402.jpg" width="575" height="402" /></p> <p><img class="alignnone size-medium wp-image-4543" alt="Andrew Archer Peaks and Pearls Illustration" src="http://fudgegraphics.com/wp-content/uploads/2013/06/FYI-Andrew-Archer-Peaks-and-Pearls-Illustration-575x387.jpg" width="575" height="387" /></p> <p><img class="alignnone size-medium wp-image-4545" alt="Andrew Archer Swish Basket Illustration" src="http://fudgegraphics.com/wp-content/uploads/2013/06/FYI-Andrew-Archer-Swish-Basket-Illustration-575x418.jpg" width="575" height="418" /></p> <p><img class="alignnone size-medium wp-image-4544" alt="Andrew Archer Red Bull Illustration" src="http://fudgegraphics.com/wp-content/uploads/2013/06/FYI-Andrew-Archer-Red-Bull-Illustration-575x310.jpg" width="575" height="310" /></p> <div> <a href="http://feeds.feedburner.com/~ff/fudgegraphics?a=Pa4As4mQXAg:EdFhG24l67k:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/fudgegraphics?i=Pa4As4mQXAg:EdFhG24l67k:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fudgegraphics?a=Pa4As4mQXAg:EdFhG24l67k:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/fudgegraphics?i=Pa4As4mQXAg:EdFhG24l67k:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fudgegraphics?a=Pa4As4mQXAg:EdFhG24l67k:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/fudgegraphics?i=Pa4As4mQXAg:EdFhG24l67k:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fudgegraphics?a=Pa4As4mQXAg:EdFhG24l67k:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/fudgegraphics?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/fudgegraphics?a=Pa4As4mQXAg:EdFhG24l67k:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/fudgegraphics?d=qj6IDK7rITs" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/fudgegraphics/~4/Pa4As4mQXAg" height="1" width="1" />Rss AD 200 Foodie Pack: A Free Set Of Food Icons http://www.flashdevelop.net/postshow.php?pid=6753 <table width="650"> <tr> <td width="650"> <div><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&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a></div> </td> </tr> </table> <p>Today we are pleased to feature a set of 200 useful and beautiful foodie icons. This freebie was created by the team behind <a href="http://www.freepik.com/">Freepik</a>, and at the time of writing it&#8217;s the largest set of food icons available on the web in one pack.</p> <p>The 200 Foodie Pack includes 200 customized icons available in PNGs (32×32px, 64×64px, 128×128px), as well as in AI, EPS and vector format. Perfect for any projects around gourmet, food, restaurant, gastronomy and the like. Enjoy!</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/foodie-icons_new-font_mini.jpg"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/foodie-icons_new-font_500_mini.jpg" alt="foodie icons_new font_500_mini" width="500" height="1357" class="alignnone size-full wp-image-164124" /></a><br /><em><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/foodie-icons_new-font_mini.jpg">Large preview</a></em></p> <h4>Download The Freebie!</h4> <p>You may freely use it for both your private and commercial projects without any restrictions, including software, online services, templates and themes.</p> <ul> <li><a href="http://provide.smashingmagazine.com/Freebies/200 Foodie icons_freebie.zip">Download the foodie pack (zip, 3.94 Mb)</a></li> </ul> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/preview-3_mini.jpg"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/preview-3_500_mini.jpg" alt="preview 3_500_mini" width="500" height="312" class="alignnone size-full wp-image-162857" /></a></p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/preview-4_mini.jpg"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/preview-4_500_mini.jpg" alt="preview 4_500_mini" width="500" height="312" class="alignnone size-full wp-image-162869" /></a></p> <h4>Behind The Design</h4> <p>Here are some insights from the design team:</p> <blockquote><p>&#8220;At Freepik we love to make freebies and to develop free icons sets for designers that make work easier. The pack was created to neutralize the growing demand for food icons.&#8221;</p></blockquote> <p>Many thanks to the creative minds behind <a href="http://www.freepik.com/">Freepik</a>! We really appreciate your efforts!</p> <p><em>(ea)</em></p> <hr /> <p><small>© The Smashing Editorial for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2013.</small></p><img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/Ohb1vkYVYZ0" height="1" width="1" />Rss AD Five Ways To Prevent Bad Microcopy http://www.flashdevelop.net/postshow.php?pid=6752 <table width="650"> <tr> <td width="650"> <div><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&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a></div> </td> </tr> </table> <p>You’ve just created the best user experience ever. You had the idea. You sketched it out. You started to build it. Except you’re already in trouble, because you’ve forgotten something: the copy. Specifically, the <a href="http://bokardo.com/archives/writing-microcopy/">microcopy</a>.</p> <p>Microcopy is the text we don’t talk about very often. It’s the label on a form field, a tiny piece of instructional text, or the words on a button. It’s <strong>the little text that can make or break your user experience</strong>.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/BillBeardMicrocopyImage_mini.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/BillBeardMicrocopyImage_mini.png" alt="BillBeardMicrocopyImage" width="500" height="332" class="alignnone size-full wp-image-118234" /></a></p> <p>If you think you’ve built the best user experience but didn’t make sure the microcopy was spot on, then you haven’t built the best user experience.</p> <p>With the adoption of agile development and lean UX, we’re often concerned about racing through iterations and getting our products in front of customers. But we can’t forget that <a href="http://37signals.com/svn/posts/3404-reminder-design-is-still-about-words">design is still about words</a>.</p> <p>Everyone frets about marketing copy &mdash; and they should &mdash; but communication doesn’t stop once you’ve sold the user. In some ways, you could argue that words become more important once the marketing experience is done. With most products, <strong>users have to be sold to only once</strong> &mdash; or once in a while &mdash; and then they’ll use the core product all the time.</p> <p>If your microcopy isn’t getting the job done, you’ll lose users &mdash; and all the marketing in the world might not get you a second chance.</p> <p>With that in mind, here are five ways to make sure your website’s microcopy doesn’t end up sinking your UX.</p> <h3>1. Get Out Of Your Own Head And Get To Know The User.</h3> <p>I’m willing to bet that your experience is plastered with internal terminology, especially your labels and navigation. Every company has its own language, which often sneaks onto the website when we’re not careful.</p> <p>Don’t let it happen. Never assume that what works for you will work for the user.</p> <p>Here’s a simple way to check whether your microcopy is too internal &mdash; or confusing, for that matter.</p> <p>Let’s assume that you’re running some form of <a href="http://uxdesign.smashingmagazine.com/2013/01/08/improving-your-website-usability-tests/">usability testing</a>. (If you’re not, there’s only about a thousand articles out there that will convince you you’re making a mistake, so you don’t need me for that.)</p> <p>When you’re testing, you probably get caught up in watching how the user interacts with your website and their facial expressions. But instead of simply watching, make a point to really listen to &mdash; and take notes on &mdash; <strong>the actual words the user says during testing</strong>. Listen closely to the phrases they utter when describing their actions. After all, you’ve told them to think out loud.</p> <p>Listen to the inflection in their voice as they read microcopy: Did they say that label or term with a question in their voice? Don’t hesitate to have your moderator follow up on copy. Have them go back and ask the user whether they’ve understood that label.</p> <p>Take it a step further: Listen to what users say from the moment they walk in the building. Listen to their banter with the moderator, the jokes they make and the words they use to express their frustration or enjoyment.</p> <p>You’d be surprised by what you can learn about a user and their language set from a comment they make about a cup of coffee. Everything someone says tells you something about them and can inform your copywriting process.</p> <h3>2. The User Is A Person. Talk To Them Like One.</h3> <p>Because brevity is essential on the Web, most of us tend to truncate everything &mdash; particularly labels. Labels are great for design. They organize and keep tidy essential parts of a UI, such as navigation and forms.</p> <p>Unfortunately, labels have an inherent problem: They’re easily subject to a user’s personal context because they don’t provide explanation. They’re on an island in the user’s mind.</p> <p>Not too long ago, we encountered this problem with a label at TheLadders.</p> <p>TheLadders is a job-matching service. Like any matching service, we required information to match a user with the right job.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/TheLadders-Job-Goals_mini.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/TheLadders-Job-Goals-e1370543926146_mini.png" alt="TheLadders Job Goals" width="500" height="210" class="alignnone size-full wp-image-118235" /></a></p> <p>We thought this form was very clear. “Job Goals” is the label we’ve used for our matching criteria for almost 10 years. It’s brief, which helped to keep the navigation neat. But in a recent redesign, we noticed that users kept stumbling when first arriving on the page.</p> <p>Turns out that people who don’t work in the job-search industry think of job goals as accomplishments they hope to achieve at their job, not as the <em>details</em> of their next job.</p> <p>(We also fell into the trap covered in the first point: internal terminology = bad.)</p> <p>So, we made it more conversational: “What job do you want?” Instantly, we could see that users no longer hesitated. Why? Because taking this new line of copy out of context was impossible.</p> <p>Instead of forcing a label on a form or field for the sake of the UI, <strong>use natural language</strong>. The experience should be a <strong>conversation with the user</strong>, not a filing cabinet for them to drudge through.</p> <p>Most of all, the labels in the navigation shouldn’t be more important than the user’s interaction with the pages that the labels represent.</p> <h3>3. Use Copy As A Guide, Not A Crutch.</h3> <blockquote> <p>&#8220;We can fix that with copy.&#8221;</p> </blockquote> <p>I’ve heard this too many times when the UX falls short, and I hate it. If there’s a problem with the design, then fix the design. The best experiences have minimal copy because they’re intuitive. When designing the UX and you find yourself writing a sentence or two to help the user take an action, step back.</p> <p>Tests have been conducted on readability and on the optimum length of content for understandability since the 1880s. With the rise of the Internet, this story became about <a href="http://baymard.com/blog/line-length-readability">line length</a>. Most sources net out between 45 to 75 characters as the ideal line length.</p> <p>To me, <strong>line length is moot</strong>, especially with responsive and mobile design. Besides, character counts seem tedious and not very lean.</p> <p>Instead, I subscribe to the original readability tables of Rudolf Flesch (pictured below), in which sentences with eight words or fewer are regarded as “very easy” to read.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/BeardFlesch_mini.jpeg"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/BeardFlesch_mini.jpeg" alt="BeardFlesch" width="500" height="279" class="alignnone size-full wp-image-118236" /></a><br /><em>The readability tables of Rudolf Flesch.</em></p> <p>It may be an old standard, but it still may be the best measuring stick we have, and it’s the easiest for lean teams to follow. On the Web, we’re shooting for “very easy to read” every time, and we want to be able to communicate with as many people (93%) as possible.</p> <p>If you can’t <strong>explain what a user needs to do in eight words or fewer</strong>, then reconsider the design.</p> <p>Once the user has gotten past the marketing portion of the experience, use copy as a guide to usher them through the product. The best copy on basic UI features, such as a form, will get read but not really noticed. The user absorbs the words and takes the desired action without a hiccup.</p> <h3>4. Treat Every Moment Like A Branding Moment, Even When It’s Not.</h3> <p>There are multiple definitions of a “branding moment.” When we talk about copy in a UX, I define it as a moment when you purposefully inject your brand’s tone and voice into what would normally be a straightforward user interaction.</p> <p>For example, Foursquare has a lot of great branding moments within its badging system. I unlocked the one below not too long ago. It’s fun and a bit edgy, on point with Foursquare’s brand.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/FoursquareBeard_mini.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/FoursquareBeard-e1370544155711_mini.png" alt="FoursquareBeard" width="400" height="578" class="alignnone size-full wp-image-118237" /></a><br /><em>A good job of a branding moment with Foursquare’s brand.</em></p> <p>But getting carried away is easy. Think hard before using fun or quirky &mdash; or whatever your brand’s voice is &mdash; copy in a situation that the user wants and expects to be straightforward.</p> <p>Your brand’s tone and voice are essential to consider when writing all of your copy, but it <strong>should not get in the way</strong> of a user who is trying to take action.</p> <p><strong>Avoid over-branding copy on:</strong></p> <ul> <li>navigation,</li> <li>forms and field labels,</li> <li>instructional text,</li> <li>selection text (drop-downs, radio buttons),</li> <li>buttons.</li> </ul> <p><strong>Consider incorporating your brand’s voice in:</strong></p> <ul> <li>confirmation messaging,</li> <li>rewards (badges, points),</li> <li>404 pages,</li> <li>server errors,</li> <li>error messaging.</li> </ul> <p>The difference between these lists is simple. In the first list, the user is attempting to take action; the second list is the results of actions.</p> <p>In the first list, you don’t want to risk confusing users as they try to accomplish something and cause them to abandon. Clarity is essential.</p> <p>In the second list, you have an opportunity to embrace the user’s success (Foursquare’s “You’re on fire!”) or mitigate a failure (TheLadders 404 page, below) by injecting your brand. You don’t need anything from the user at these points.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/TheLadders404BillBeard_mini.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/TheLadders404BillBeard-e1370543743342_mini.png" alt="TheLadders404BillBeard" width="500" height="309" class="alignnone size-full wp-image-118238" /></a><br /><em>TheLadders 404 page.</em></p> <p>This isn’t to say that you can’t brand that first list. But if you’re going to do it, test it first. With branding moments, execution is paramount. If you’re unsure, don’t risk it.</p> <p>By choosing <em>not</em> to brand parts of the experience to keep it simple and easy for the user, you’ll provide an enjoyable experience, which will make your brand stronger. So, <strong>every moment is a branding moment. Even when it’s not.</strong></p> <h3>5. If Content Is King, Then Treat Context Like A Queen.</h3> <p>The hot saying right now is “<em>Content</em> is king.” Native advertising, or the integration of relevant content into a natural experience for the purpose of acquisition, is becoming a core offering of many agencies and has spawned a few popular startups.</p> <p>But without context, content is useless. (And if you’re big on Game of Thrones, then you’ll know that queens have all the real power!)</p> <p>Whether you’re labeling a form or writing a blog post, you have to either understand the user’s existing context or provide context for them.</p> <p>A user’s context will define how they interpret the copy on the page. That context could come from anywhere: an email they’ve just read, or something that happened to them when they were eight.</p> <p>When a user doesn’t have proper context, they get confused. When a user gets confused, they abandon.</p> <p>If you’re agile and iterative, accounting for a holistic experience adds an additional layer of complexity, in the form of consistency. A simple change to copy on one page could affect 10 other pages. One minute you’re calling something “Job Goals,” and the next you’re changing it to “What job do you want?” Well, where else have you used “Job Goals”?</p> <p>To better understand the user’s context &mdash; and to check for consistency &mdash; sit down at least once per iteration and <strong>experience your “contextual flow” as the user sees it</strong>.</p> <p>For example, if you have a subscription service, the flow might be something like this:</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/ContextualFlowBeard-e1370543804451_mini.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/ContextualFlowBeard-e1370543804451_mini.png" alt="ContextualFlowBeard" width="500" height="237" class="alignnone size-full wp-image-118239" /></a></p> <p>That’s at least 10 distinct steps in which a user’s context could be created, confirmed or altered.</p> <p>Sit down, take a breath and wipe your mind of what you know is there. Then start with Google or your home page or wherever the first touch usually happens.</p> <p>Does your onboarding experience deliver the same promise as your Google ad? Have you described a feature using the same language throughout? Are your labels so subjective that the context gets lost? These are questions to answer as you go through the flow.</p> <h3>Whatever Happens, Don’t Ignore Your Microcopy.</h3> <p>Microcopy often falls victim to personal bias, internal terminology, poor branding, broken contextual flows, time crunches and other factors. Any of these can undermine even the most well-designed UX and the copy within.</p> <p>Here’s the thing about mistakes with microcopy: They’re so <strong>easy to make yet so hard to identify</strong> after you’ve made them.</p> <p>You have a much better chance of stopping the mistakes in advance than of identifying them after the fact. When you’re testing, how often do you think, “Hey, maybe we should change the label on the third field of this form?” You’re wrapped up in other UX mistakes that you know you’ve made. Unfortunately, a repeated pattern of noticeable failure is usually needed in order for microcopy to get updated or even tested.</p> <p>So, the next time you’re creating or improving an experience, I hope you employ some of the tactics provided here so that you avoid these “easy” mistakes and do right by your microcopy &mdash; and by your user.</p> <p><em>(al)</em></p> <hr /> <p><small>© Bill Beard for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2013.</small></p><img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/MVkfEc7utUk" height="1" width="1" />Rss AD What Leap Motion And Google Glass Mean For Future User Experience http://www.flashdevelop.net/postshow.php?pid=6751 <table width="650"> <tr> <td width="650"> <div><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&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a></div> </td> </tr> </table> <p>With the Leap Motion controller being released on June 27th and the Google Glass Explorer program already live, it is obvious that our reliance on the mouse or even the monitor to interact with the Web will eventually become obsolete.</p> <p>The above statement seems like a given, considering that technology moves at such a rapid pace. Yet in 40 years of personal computing, our methods of controlling our machines haven’t evolved beyond using a mouse, keyboard and perhaps a stylus. Only in the last six years have we seen mainstream adoption of touchscreens.</p> <p>Given that emerging control devices such as the Leap Controller are enabling us to interact with near pixel-perfect accuracy in 3-D space, our computers will be less like dynamic pages of a magazine and more like windows to another world. To make sure we’re on the same page, please take a minute to check out what the <a href="http://www.youtube.com/embed/_d6KuiuteIA">Leap Motion controller</a> can do:</p> <p><br /> <em>“<a href="http://www.youtube.com/embed/_d6KuiuteIA">Introducing the Leap Motion</a>”</em></p> <p>Thanks to monitors becoming portable with Google Glass (and the competitors that are sure to follow), it’s easy to see that the virtual world will no longer be bound to flat two-dimensional surfaces.</p> <p>In this article, we’ll travel five to ten years into the future and explore a world where Google Glass, Leap Motion and a few other technologies are as much a part of our daily lives as our smartphones and desktops are now. We’ll be discussing a new paradigm of human-computer interface. <strong>The goal of this piece is to start a discussion with forward-thinking user experience designers</strong>, and to explore what’s possible when the mainstream starts to interact with computers in 3-D space.</p> <blockquote><p><strong>Please note</strong>: We’re exploring an entirely hypothetical scenario, and these are opinions, some of which you may not agree with. However, the opinions are based on current trends, statistics and existing technology. If you’re the kind of designer who is interested in developing the future, I encourage you to read the sources that are linked throughout the article.</p></blockquote> <h3>Setting The Stage: A Few Things To Consider</h3> <p>Prior to the introduction of the iPhone in 2007, many considered the smartphone to be for techies and business folk. But in 2013, you’d be hard pressed to find someone in the developed world who isn’t checking their email or tweeting at random times.</p> <p>So, it’s understandable to think that a conversation about motion control, 3-D interaction and portable monitors is premature. But if the mobile revolution has taught us anything, it’s that people crave connection without being tethered to a stationary device.</p> <p>To really understand how user experience (UX) will change, we first have to consider the possibility that social and utilitarian UX will be taking place in different environments. In the future, people will use the desktop primarily for utilitarian purposes, while “social” UX will happen on a virtual layer, overlaying the real world (thanks to Glass). Early indicators of this are that <a href="http://thenextweb.com/facebook/2012/10/24/facebook-anticipates-growth-happening-in-mobile-usage-rather-than-through-personal-computers/">Facebook anticipates its mobile growth to outpace its PC growth</a> and that nearly <a href="http://www.go-gulf.com/blog/smartphone/">one-seventh of the world’s population own smartphones</a>.</p> <p>The only barrier right now is that we lack the technology to truly merge the real and virtual worlds. But I’m getting ahead of myself. Let’s start with something more familiar.</p> <h3>The Desktop</h3> <p>Right now, UX on the desktop cannot be truly immersive. Every interaction requires physically dragging a hunk of plastic across a flat surface, which approximates a position on screen. While this is accepted as commonplace, it’s quite unnatural. The desktop is the only environment where you interact with one pixel at a time.</p> <p>Sure, you could create the illusion of three dimensions with drop shadows and parallax effects, but that doesn’t change the fact that the user may interact with only one portion of the screen at a time.</p> <p>This is why <strong>the Leap Motion controller is revolutionary</strong>. It allows you to interact with the virtual environment using all 10 fingers and real-world tools in 3-D space. It is as important to computing as analog sticks were to video games.</p> <h3>The Shift In The Way We Interact With Machines</h3> <p>To wrap our heads around just how game-changing this will be, let’s go back to basics. One basic UX and artificial intelligence test for any new platform is a simple game of chess.</p> <p><a href="http://commons.wikimedia.org/wiki/File:Agat-7_Chess.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/Virtual-Chess-e1370636058728.png" alt="Virtual Chess" width="500" height="375" title="Virtual Chess" /></a><br /> <em>(Image: <a href="http://commons.wikimedia.org/wiki/File:Agat-7_Chess.png">Wikimedia Commons</a>)</em></p> <p>In the game of chess below, thanks to motion controllers and webcams, you’ll be able to “reach in” and grab a piece, as you watch your friend stress over which move to make next.</p> <p><a href="http://algerblog.blogspot.com/2011/12/quality-time.html"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/Real-Chess-e1370636247876.jpg" alt="Now you can watch your opponent sweat." width="500" height="375" title="Now you can watch your opponent sweat." /></a><br /> <em>Now you can watch your opponent sweat. (Image: <a href="http://algerblog.blogspot.com/2011/12/quality-time.HTML">Algernon D’Ammassa</a>)</em></p> <p>In a game of The Sims, you’ll be able to rearrange furniture by moving it with your hands. CAD designers will use their hands to “physically” manipulate components (and then send their design to the <a href="http://www.staples.com/3-D-Printing/cat_CL205651?icid=SearchResults3-D">3-D printer they bought from Staples</a> for prototyping.)</p> <p>While the lack of tactile feedback might deter mainstream adoption early on, <a href="http://www.disneyresearch.com/project/surround-haptics-immersive-tactile-experiences/">research into haptics</a> is already enabling developers to simulate physical feedback in the real world to correspond with the actions of a user’s virtual counterpart. Keep this in mind as you continue reading.</p> <p>Over time, this level of 3-D interactivity will fundamentally change the way we use our desktops and laptops altogether.</p> <p><strong>Think about it</strong>: The desktop is a perfect, quiet, isolated place to do more involved work like writing, photo editing or “hands-on” training to learn something new. However, a 3-D experience like those mentioned above doesn’t make sense for social interactions such as on Facebook or even reading the news, which are <a href="http://www.businessesgrow.com/2013/03/27/what-a-blog-post-will-look-like-in-2020/">more becoming of mobile</a>.</p> <p>With immersive, interactive experiences being available primarily via the desktop, it’s hard to imagine users wanting these two experiences to share the same screen.</p> <p>So, what would a typical desktop experience look like?</p> <h3>Imagine A Cooking Website For People Who Can’t Cook</h3> <p>With this cooking website for people who can’t cook, we’re not just talking about video tutorials or recipes with unsympathetic instructions, but rather immersive simulations in which an instructor leads you through making a virtual meal from prep to presentation.</p> <p>Interactions in this environment would be so natural that the real design challenge is to put the user in a kitchen that’s believable as their own.</p> <p>You wouldn’t click and drag the icon that represents sugar; you would reach out with your virtual five-fingered hand and grab the life-sized “box” of Domino-branded sugar. You wouldn’t click to grease the pan; you’d mimic pushing the aerosol nozzle of a bottle of Pam.</p> <p>The Tokyo Institute of Technology has already built such a simulation in the real world. So, transferring the experience to the desktop is only a matter of time.</p> <p><br /> <em>“<a href="http://www.youtube.com/embed/F565MHCfsSo">Cooking simulator will help you cook a perfect steak every time</a>”</em></p> <p><strong>UX on the future desktop</strong> will be about simulating physics and creating realistic environments, as well as tracking head, body and <a href="https://www.youeye.com/how-it-works">eyes</a> to create intuitive 3-D interfaces, based on HTML5 and <a href="http://www.awwwards.com/22-experimental-webgl-demo-examples.HTML">WebGL</a>.</p> <p>Aside from the obvious hands-on applications, such as CAD and art programs, the technology will shift the paradigm of UX and user interface (UI) design in ways that are currently difficult to fathom.</p> <p>The problem right now is that we currently lack a set of clearly defined 3-D gestures to interact with a 3-D UI. Designing UIs will be hard without knowing what our bodies will have to do to interact.</p> <p>The closest we have right now to defined gestures are those created by <a href="http://www.youtube.com/results?search_query=kinect+ui+hacks&amp;oq=kinect+ui+hacks&amp;gs_l=youtube.3...903891.906571.0.906817.15.15.0.0.0.0.134.938.14j1.15.0...0.0...1ac.1.hF5nT0Br_Ik">Kinect hackers</a> and John Underkoffler of <a href="http://www.oblong.com/g-speak/">Oblong Technology</a> (the team behind Minority Report’s UI).</p> <p>In his TED talk from 2010, Underkoffler demonstrates probably the most advanced example of 3-D computer interaction that you’re going to see for a while. If you’ve got 15 minutes to spare, I highly recommend watching it:</p> <p><br /> <em>John Underkoffler’s talk “<a href="http://www.youtube.com/embed/b6YTQJVzwlI">Pointing to the Future of UI</a>”</em></p> <p>Now, before you start arguing, “Minority Report isn’t practical &mdash; humans aren’t designed for that!” consider two things:</p> <ol> <li>We won’t likely be interacting with 60-inch room-wrapping screens the way Tom Cruise does in Minority Report; therefore, our gestures won’t need to be nearly as big.</li> <li>The human body rapidly adapts to its environment. Between the years 2000 and 2010, a period when home computers really went mainstream, <a href="http://www.health.state.mn.us/divs/hpcd/cdee/occhealth/indicators/carpal-tunnel.HTML">reports of Carpal Tunnel Syndrome dropped by nearly 8%</a>.</li> </ol> <p><a href="http://www.health.state.mn.us/divs/hpcd/cdee/occhealth/indicators/carpal-tunnel.html"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/Graph-of-Carpel-Tunnel.png" alt="Graph of Carpel Tunnel" width="452" height="230" title="Graph of Carpel Tunnel" /></a><br /> <em>(Image: <a href="http://www.health.state.mn.us/divs/hpcd/cdee/occhealth/indicators/carpal-tunnel.html">Minnesota Department of Health</a>)</em></p> <p>However, because the Leap Motion controller is less than $80 and will be available at Best Buy, this technology isn’t just hypothetical, sitting in a lab somewhere, with a bunch of geeks saying “Wouldn’t it be cool if…”</p> <p>It’s real and it’s cheap, which really means we’re about to enter the Wild West of true 3-D design.</p> <h3>Social Gets Back To The Real World</h3> <p>So, where does that leave social UX? Enter Glass.</p> <p>It’s easy to think that head-mounted augmented reality (AR) displays, such as Google Glass, will not be adopted by the public, and in 2013 that might be true.</p> <p>But remember that we resisted the telephone when it came out, for <a href="http://news.cnet.com/8301-1023_3-57573966-93/google-glass-and-the-third-half-of-your-brain/">many of the same privacy concerns</a>. The <a href="http://www.maebrussell.com/Articles%20and%20Notes/Do%20cell%20phones%20cook%20cells.HTML">same goes for mobile phones</a> and <a href="http://www.computerworld.com/s/article/9014118/Ten_dangerous_claims_about_smart_phone_security">for smartphones</a> around 2007.</p> <p>So, while first-generation Glass won’t likely be met with widespread adoption, it’s the introduction of a new phase. ABI Research predicts that the wearable device market will <a href="http://www.abiresearch.com/press/wearable-computing-devices-like-apples-iwatch-will">exceed 485 million annual shipments by 2018.</a></p> <p>According to Steve Lee, Glass’ product director, the goal is to “allow people to have more human interactions” and to “get technology out of the way.”</p> <p>First-generation Glass performs Google searches, tells time, gives turn-by-turn directions, reports the weather, snaps pictures, records video and does Hangouts &mdash; which are many of the reasons why our phones are in front of our faces now.</p> <p>Moving these interactions to a heads-up display, while moving important and more heavy-duty social interactions to a wrist-mounted display, like the <a href="http://getpebble.com/">Pebble smartwatch</a>, eliminates the phone entirely and enables you to truly see what’s in front of you.</p> <p><a href="http://getpebble.com"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/pebble_smartwatch_dm_120418_wblog-e1370636774109.jpg" alt="pebble_smartwatch_dm_120418_wblog" width="500" height="281" /></a><br /> <em>(Image: <a href="http://getpebble.com/">Pebble</a>)</em></p> <p>Now, consider the possibility that something like the Leap Motion controller could become small enough to integrate into a wrist-mounted smartwatch. This, combined with a head-mounted display, would essentially give us the ability to create an interactive virtual layer that overlays the real world.</p> <p>Add <a href="http://www.popsci.com/technology/article/2012-09/haptic-armband-improves-muscle-memory-helping-blind-athletes-train-better">haptic wristband</a> technology and a Bluetooth connection to the smartwatch, and you’ll be able to <a href="http://www.popsci.com/technology/article/2010-07/fingertip-mounted-haptic-interface-lets-you-feel-virtual-3-d-objects">“feel” virtual objects</a> as you physically manipulate them in both the real world and on the desktop. While this might still sound like science fiction, with Glass reportedly to be priced between $299 and $499 and Leap Motion at $80 and Pebble being $150, widespread affordability of these technologies isn’t entirely impossible.</p> <h3>Social UX In The Future: A Use Case</h3> <p>Picture yourself walking out of the mall, and your close friend Jon updates his status. A red icon appears in the top right of your field of vision. Your watch displays Jon’s avatar, which says, “Sooo hungry right now.”</p> <p>You say, “OK, Glass. Update status: How about lunch? What do you want?” and keep walking.</p> <p>“Tacos.”</p> <p>You say, “OK, Glass. Where can I get good Mexican food?” 40 friends have favorably rated <a href="http://facebook.com/rosascafe">Rosa’s Cafe</a>. Would you like directions? “Yes.” The navigation starts, and you’re en route.</p> <p>You reach the cafe, but Jon is 10 minutes away. Would you like an audiobook while you wait? “No, play music.” A smart playlist compiles exactly 10 minutes of music that perfectly fits your mood.</p> <p>“OK, Glass. Play Angry Birds 4.”</p> <p>Across the table, 3-D versions of the little green piggies and their towers materialize.</p> <p>In front of you are a red bird, a yellow bird, two blue birds and a slingshot. The red bird jumps up, you pull back on the slingshot, the trajectory beam shows you a path across the table, you let go and knock down a row of bad piggies.</p> <p>Suddenly, an idea comes to you. “OK, Glass. Switch to Evernote.”</p> <p>A piece of paper and a pen are projected onto the table in front of you, and a bulletin board appears to the left.</p> <p>You pick up the AR pen, jot down your note, move the paper to the appropriate bulletin, and return to Angry Birds.</p> <p>You could make your game visible to other Glass wearers. That way, others could play with you &mdash; or, at the very least, would know you’re not some crazy person pretending to do… whatever you’re doing across the table.</p> <p>When Jon arrives, notifications are disabled. You push the menu icon on the table and select your meal. Your meal arrives; you take photos of your food; eat; publish to Instagram 7.</p> <p>Before you leave, the restaurant gives a polite notification, letting you know that a coupon for 10% off will be sent to your phone if you write a review.</p> <h3>How Wearable Technology Interacts With Desktops</h3> <p>Later, having finished the cooking tutorial on the desktop, you decide it’s time to make the meal for real. You put on Glass and go to the store. The headset guides you directly to the brands that were advertised “in game.” After picking out your ingredients, you receive a notification that a manufacturer’s coupon has been sent to your phone and can be used at the check-out.</p> <p>When you get home, you lay a carrot on the cutting board and an overlay projects guidelines on where to cut. You lay out the meat, and a POW graphic is overlaid, <strong>showing you where to hit for optimal tenderness</strong>:</p> <p><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/augmented-meat-300x225.png" alt="Augmented Meat" width="500" height="375" /><br /> <em>Image source?</em></p> <p>You put the meat in the oven; Glass starts the timer. You put the veggies in the pan; Glass overlays a pattern to show where and when to stir.</p> <p>While you were at the store, Glass helped you to pick out the perfect bottle of wine to pair with your meal (based on reviews, of course). So, you pour yourself a glass and relax while you wait for the timer to go off.</p> <p>In the future, augmented real-world UX experiences will be turned into real business. The more you enhance real life, the more successful your business will be. After all, is it really difficult to imagine this cooking experience being turned into a game?</p> <h3>What Can We Do About This Today?</h3> <p>If you’re the kind of UI designer who seeks to push boundaries, then the best thing you can do right now is think. Because the technology isn’t 100% available, the best you can do is open your imagination to what will be possible when the average person has evolved beyond the keyboard and mouse.</p> <p>Draw inspiration from websites and software that simulate depth to create dynamic, layered experiences that can be easily operated without a mouse. The website of agency <a href="http://blacknegative.com/">Black Negative</a> is a good example of future-inspired “flat” interaction. It’s easy to imagine interacting with this website without needing a mouse. The new <a href="http://new.myspace.com">Myspace</a> is another.</p> <p>To go really deep, look at the different <a href="http://www.chromeexperiments.com/">Chrome Experiments</a>, and find a skilled HTML5 and WebGL developer to discuss what’s in store for the future. The software and interactions that come from your mind will determine whether these technologies will be useful.</p> <h3>Conclusion</h3> <p>While everything I’ve talked about here is conceptual, I’m curious to hear what you think about how (or even if) these devices will affect UIs. I’d also love to hear your vision of future UIs.</p> <p>To get started, let me ask you two questions:</p> <ol> <li>How will the ability to reach into the screen and interact with the virtual world shape our expectations of computing?</li> <li>How will untethering content from flat surfaces fundamentally change the medium?</li> </ol> <p>I look forward to your feedback. Please share this article if you’ve enjoyed this trip into the future.</p> <p><em>(il) (al)</em></p> <hr /> <p><small>© Tommy Walker for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2013.</small></p><img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/OpC3FARigns" height="1" width="1" />Rss AD Freebie Friday: 4 Horizontal Noise Brushes http://www.flashdevelop.net/postshow.php?pid=6750 <p><a href="http://rss.buysellads.com/click.php?z=1281071&amp;k=4857ce43a258e87ce432a0c4b12797ce&amp;a=9061&amp;c=2138146940" target="_blank" rel="nofollow"> <img src="http://rss.buysellads.com/img.php?z=1281071&amp;k=4857ce43a258e87ce432a0c4b12797ce&amp;a=9061&amp;c=2138146940" border="0" alt="" /></a></p><p><a href="http://buysellads.com/buy/sitedetails/pubkey/4857ce43a258e87ce432a0c4b12797ce/zone/1281071" target="_blank">Advertise here with BSA</a></p><br /><p><img src="http://www.bittbox.com/wp-content/uploads/0169.jpg" alt="" width="485" height="388" class="alignnone size-full wp-image-9065" /><br /> <span></span><br /> <img src="http://www.bittbox.com/wp-content/uploads/0264.jpg" alt="" width="485" height="388" class="alignnone size-full wp-image-9062" /><br /> <img src="http://www.bittbox.com/wp-content/uploads/0364.jpg" alt="" width="485" height="388" class="alignnone size-full wp-image-9063" /><br /> <img src="http://www.bittbox.com/wp-content/uploads/0465.jpg" alt="" width="485" height="388" class="alignnone size-full wp-image-9064" /></p> <h1><a href="http://media.bittbox.com/brushes/BB_HorizontalNoiseBrushes.zip">Download .ZIP</a></h1> <div> <a href="http://feeds.feedburner.com/~ff/Bittbox?a=vwW1oWqfdjI:91NN-2h_z4U:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Bittbox?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Bittbox?a=vwW1oWqfdjI:91NN-2h_z4U:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Bittbox?i=vwW1oWqfdjI:91NN-2h_z4U:D7DqB2pKExk" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/Bittbox/~4/vwW1oWqfdjI" height="1" width="1" />Rss AD Front-End Ops http://www.flashdevelop.net/postshow.php?pid=6749 <table width="650"> <tr> <td width="650"> <div><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&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a></div> </td> </tr> </table> <p>When a team builds a complex application, there is often a common breakdown of roles. Specifically on the back end, there are database engineers, application engineers and operations engineers, or something close to this. In recent years, more and more <strong>application logic is being deferred to the client side</strong>. For some reason, though, operations folks aren’t going with it.</p> <p>I recently wrote an article on “<a href="http://alexsexton.com/blog/2013/03/deploying-javascript-applications/">Deploying JavaScript Applications</a>.” It was largely well received, and I was happy with the content, but one negative comment stuck out to me. I probably didn’t have the reaction that the commenter was intending, but it pointed out something to me nonetheless.</p> <blockquote> <p>&#8220;With all due respect, may I ask if you actually enjoy your job? I am a dev, and I do enjoy using tech to do stuff to a point. If your role is to squeeze every last second of performance out of your app, then yea, all this stuff must be cool. BUT if you are a coder doing something else and then come back to all of this as well, then wow, I don’t know how you haven’t gone mad already. I’d be sick to the stomach if I had to do all of this, in addition to my usual work.&#8221;</p> </blockquote> <p>See, I had written my article with a few too many assumptions. I understood ahead of time that a few of my solutions weren’t globally applicable, and that many people wouldn’t have the time or energy to implement them. What I didn’t fully grasp was how different the role in that article is from the picture that people have of a front-end developer in their head. Up to this point, a front-end developer had just the few operations duties lumped into their role, and even then, many people chose to skip those steps (that’s why Steve Souders is constantly yelling at you to make your pages faster).</p> <p>I think things are about to shift, and I’d (humbly) like to help guide that shift, because I think it’ll be great for the Web.</p> <h3>The Front-End Operations Engineer</h3> <p>A front-end operations engineer is not a title you’ve likely come across, but hopefully one that you will. Such a person would need to be an expert at serving and hosting front-end resources. They’d need to be pros at Grunt (or something similar) and have strong opinions about modules. They would find the best ways to piece together the parts of a Web application, and they&#8217;d be pros at versioning, caching and deployment.</p> <p>A front-end operations engineer would <em>own</em> external performance. They would be critical of new HTTP requests, and they would constantly be measuring file size and page-load time. They wouldn’t necessarily always worry about the number of times that a loop can run in a second &mdash; that’s still an application engineer’s job. They own everything <em>past</em> the functionality. <strong>They are the bridge between an application’s intent and an application’s reality</strong>.</p> <p>A front-end operations engineer would be very friendly with the quality assurance team, and they would make sure that &#8220;performance&#8221; is a test that comes up green. They’d monitor client-side errors and get alerts when things go wrong. They’d make sure that migrations to new versions of the application go smoothly, and they’d keep all external and internal dependencies up to date, secure and stable. They are the gatekeepers of the application.</p> <h3>Why?</h3> <p>We have reached a point where there is enough work to be done in the operations space that it often no longer serves us to have an application engineer do both jobs. When the application&#8217;s features are someone&#8217;s priorities, and that person has a full plate, they will typically deprioritize the critical steps in delivering their application most successfully to the end users.</p> <p>Not every company or team can afford this person, but even if someone puts on the “front-end operations” hat for one day a week and prioritizes their work accordingly, users win. It doesn’t matter how many features you have or how sexy your features are if they aren’t delivered to the user quickly, with ease, and then heavily monitored. Front-end operations engineers are the <strong>enablers of long-term progress</strong>.</p> <h3>Builds And Deployment</h3> <p>If you were to ask most back-end engineers which person on their team has traditionally worried about builds and deployment, I’m sure you’d get a mixed bag. However, a very sizeable chunk of engineers would tell you that they have build engineers or operations engineers who handle these things. In that world, this often entails generating an RPM file, spinning up EC2 instances, running things through continuous integration tools, and switching load balancers over to new machines. Not all of this will necessarily go away for a front-end operations engineer, but there will be new tools as well.</p> <p>A front-end operations engineer will be a master of the build tool chain. They’ll help run and set up the continuous integration (or similar) server but, more specifically, <strong>they&#8217;ll set up the testing instances</strong> that their application runs on and then, eventually, the deployment instances. They’ll integrate Git post-commit hooks into the application and run the tests (either in Node.js and PhantomJS or against something like Sauce Labs, Testling or BrowserStack) before anything gets merged into the master. They’ll need to make sure that those servers can take the raw code and, with a few commands, build up the resulting application.</p> <p>This is where many people use Grunt these days. With a quick <code>grunt build</code>, these machines could be serving the built version of an application in order to enable proper testing environments. The front-end operations engineer would be in charge of much that’s behind that command as well. <code>grunt build</code> could call out to RequireJS’ r.js build tool, or a Browserify process, or it could simply minify and concatenate a list of files in order. It would also do similar things to the CSS (or your favorite preprocessed CSS dialect), in addition to crushing images, building sprites and reducing requests in any other way necessary or possible.</p> <p>Front-end operations engineers would <strong>make sure that all of this stuff works on people’s local machines</strong>. A quick <code>grunt test</code> should be able to build everything locally, serve it and test it (likely with some WebDriver API-compatible server). They’d make sure that team members have the power to push their applications into the continuous integration environment and test them there. And they’d remove single points of failure from deployment (GitHub being down during launch wouldn’t scare them).</p> <p>They’d facilitate internal deployments of feature branches and future release branches. They’d make sure that the quality assurance team has an easy time of testing anything and that the managers have an easy time of demoing things that aren’t ready.</p> <p>They’d help build multiple versions of an application to best suit each of their core sets of users. This could mean builds for mobile or for old versions of Internet Explorer, but all of it should be relatively transparent to those who are programming against those feature, browser or device tests.</p> <p>They’d facilitate the process of taking a release, building it, uploading it to a static edge-cached content delivery network, and flipping the switch to make it live. And they’d have a documented and fast roll-back mechanism in place.</p> <p>Perhaps most importantly, <strong>they’d automate everything</strong>.</p> <p><a href="http://en.wikipedia.org/wiki/Rube_Goldberg_machine"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/front-end-ops-start-image_mini.jpg" alt="front-end ops start image_mini" width="500" height="294" class="alignnone size-full wp-image-163686" /></a><br /><em>(Image credits: <a href="http://en.wikipedia.org/wiki/Rube_Goldberg_machine">Rube Goldberg</a>)</em></p> <h3>Tracking Speed</h3> <p>The metric by which a front-end operations engineer would be judged is speed: the speed of the application, the speed of the tests, of the builds and deployment, and the speed at which other teammates understand the operational process.</p> <p>A front-end operations engineer would live in a dashboard that feeds them data. Data is king when it comes to speed. This dashboard would integrate as much of it as possible. Most importantly, it would constantly be running the team&#8217;s app in multiple browsers and tracking all important metrics of speed. This space currently doesn’t have a ton of options, so they’d likely set up a private cloud of WebPageTest instances. They’d put them in multiple zones around the world and just run them non-stop.</p> <p>They’d run against production servers and new commits and pull requests and anything they can get their hands on. At any given point, they’d be able to tell when, where, and what the surrounding circumstances were behind a slow-down. <strong>A decrease in speed would be directly correlated to some change</strong>, whether a new server, a diff of code, a dependency or third-party outage, or something similar.</p> <p>They’d have a chart that graphs the number of HTTP requests on load. They’d also have a chart that tells them the Gzip’ed and minified payload of JavaScript, CSS and images that are delivered on load. And they&#8217;d also go crazy and have the unGzip’ed payload of JavaScript so that they can measure the effect of code parsing, because they know how important it can be on mobile. They’d instrument tools like mod_pagespeed and nginx_pagespeed to catch any mistakes that fall through the cracks.</p> <p>They’d be masters of the latest development and measurement tools. They’d read flame graphs and heap snapshots of their apps from their development tools (in each browser that has them). They’d measure frames per second on scrolling and animations, prevent layout thrashing, build memory profiles, and keep a constant eye on compositing, rendering and the overall visual performance of the application. They’d do all of this for desktop and mobile devices, and they’d track trends in all of these areas.</p> <p>They’d <strong>religiously parallelize tasks</strong>. They’d track the application via waterfalls and <code>.har</code> data to make sure that all serial operations are necessary or intentional.</p> <p>They’d chart the average run time of the tests, builds and deploys. And they’d fight to keep them low. They’d chart their external dependencies in size and speed. They may not have control over slow API requests, but they’d want to be able to point to the reasons why their numbers are increasing.</p> <p>They’d set an alarm if any of these numbers rose above an acceptable limit.</p> <h3>Monitoring Errors And Logs</h3> <p>Managing logging is a critical job of a normal operations engineer. The data that is generated from running an application is vital to understanding where things go wrong in the real world. A front-end operations engineer would also instrument tools and code that allow the same level of introspection on the client side.</p> <p>This would often manifest itself as an analytics tool. Application engineers would be encouraged to log important events and any errors at certain levels to a logging service. These would be appropriately filtered and batched on the client and sent back as events to an internal or external analytics-style provider. The engineer would have enough information to identify the circumstances, such as browser name and version, application deployment version, screen size and perhaps a bit of other data. (Though they’d want to avoid storing personally identifiable information here.)</p> <p>Logging stack traces can be very helpful in browsers that support them. You can integrate third-party services that do this for you.</p> <p>The front-end operations engineer would <strong>encourage a very small tolerance for errors</strong>. Any error that happened would be investigated and either fixed or logged differently. With the data that comes back, they should be able to visualize groups of errors by browser or by state information from the application. A threshold of errors would be allowed to occur, and when that is passed, engineers would be notified. Severities would be assigned, and people would be responsible for getting patches out or rolling back as necessary (with quick patches being heavily favored to roll backs).</p> <p>Much like today’s operations people focus on the security of the systems they manage, a front-end operations engineer would have probes for XSS vulnerabilities and would constantly be looking for holes in the app (along with the quality assurance team).</p> <p>A front-end operations engineer would have an up-to-date picture of the state of the application in production. This is challenging in the front-end world, because your application doesn&#8217;t run on your machines &mdash; but that makes it even <em>more</em> necessary.</p> <h3>Keeping Things Fresh and Stable</h3> <p>My favorite thing that good operations people who I’ve worked with in the past were really good at was keeping things up to date. For some applications, stability and security are so deeply necessary that caution is the larger priority; but in most cases, failure to keep dependencies and environments up to date is what causes applications to get stale over time. We’ve all worked on a project that’s four years old where all of the tools are very old versions of the ones we know, and getting good performance out of it is impossible.</p> <p>A front-end operations engineer would be effective at keeping dependencies up to date and at removing cruft in systems. When the next version of jQuery is released, they’d use their skills to switch out the dependency in the application to work with the new version and then test it to validate the change. They’d keep Grunt up to date (and Node.js along with it). When WebP becomes viable, they’d automate moving the application&#8217;s images over to that format.</p> <p>They’d work closely with the more architecture-oriented application engineers to make sure that the entire system still feels viable and is not lagging behind in any one area. They would keep on top of this stuff as often as possible. Updating a dependency here and there as you build is far easier than having a big “Update Everything” day. It encourages application developers to loosely couple dependencies and to build good, consistent interfaces for their own modules.</p> <p>A front-end operations engineer makes it viable and fun to work on a project long after it’s new.</p> <h3>The Future</h3> <p>I’m sure plenty of commenters will tell me that these tasks have been going on for years, and plenty will tell me that they should be the concern of all developers on a team. I would agree with both statements. I am not introducing new concepts; I’m compiling tasks we’ve all been doing for years and giving them a name. I think this will help us build better tools and document better processes in the future.</p> <p>The addition of this role to a team doesn’t absolve the other members of performance responsibilities. It’s just that right now, front-end operations are no one’s explicit priority on most of the teams that I’ve encountered, and because of that, they often get skipped in crunch time. I think there’s enough to be done, especially in the configuration and monitoring of these tools, outside of the normal job of a front-end engineer, to justify this role.</p> <p>Most importantly, regardless of whether a new job comes from these tasks, or whether we solve the problem in a different way, we do all need to be conscious of the importance of solving these problems in some way. You simply can&#8217;t ignore them and still achieve reliable, robust, high-experience applications. Addressing these concerns is critical to the stability and longevity of our applications and to the happiness of programmers and users.</p> <p>If we build with that in mind, it helps the Web win, and we all want the Web to win.</p> <p><em>(al) (il) (ea)</em></p> <hr /> <p><small>© Alex Sexton for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2013.</small></p><img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/36teXQfOAZE" height="1" width="1" />Rss AD Smashing Conference 2013: A Community Event That Will Change Everything http://www.flashdevelop.net/postshow.php?pid=6748 <table width="650"> <tr> <td width="650"> <div><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&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a></div> </td> </tr> </table> <p>Guess what? The Smashing Conference is coming! 2 single-track conference days, 3 full-day workshops, 16 excellent speakers, and only 300 available seats. We&#8217;d be honoured to welcome you in our home town Freiburg, on September 9–11th 2013, at the foot of the legendary, beautiful Black Forest in Southern Germany.</p> <p><a href="http://www.smashingconf.com"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/freiburg-wurst-am-muenster.jpg" width="500" height="500" alt="" title="" /></a><br /><em>You can enjoy the well-known &#8220;Münsterwurst&#8221; opposite the conference venue, also known as a &#8220;lange Rote&#8221;. Of course, there are also vegetarian tofu sausages available. <a href="http://www.flickr.com/photos/kontour/7995753331/">Image credit</a>.</em></p> <h3>SmashingConf 2013: We Are Building The Web</h3> <p>We want the Smashing Conference to be a unique, valuable and friendly event for everybody involved. Not only do we want to provide new perspectives into Web design in general; more importantly, we want the event to focus on how exactly we, designers and developers, work, design and code to solve real-life problems.</p> <p><a href="http://www.smashingconf.com"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/smashing-conference-venue-2013.png" width="342" height="" alt="" title="" /></a><br /><em>Tickets can now be purchased via the <a href="http://smashingconf.com/">SmashingConf 2013</a> page.</em></p> <p>We&#8217;ll explore in detail what techniques, strategies and tools we use, but also what lessons we can learn from our personal experiences, successes and failures. Smashing Conference is a conference about how we work and play &mdash; and how we build the Web today.</p> <p><a href="https://shop.smashingmagazine.com/smashing-conference-ticket-2013.html?pk_campaign=SmashingConf.com%3A%20Booking&amp;pk_kwd=Conference%20Ticket">Get your ticket!</a></p> <h4>Speakers and Workshops</h4> <p>We&#8217;ve invited excellent speakers who all have something to share, be it personal experiences or case-studies on large projects. We&#8217;re very happy to welcome Jason Santa Maria, Dan Mall, Luke Wroblewski, Dan Rubin, Inayaili de Leon, David Březina, Andy Hume, Tim Kadlec and — of course — the <em>Mystery Speaker</em> among the first confirmed speakers. You can find more information about the talks on the <a href="http://smashingconf.com/speakers">SmashingConf 2013 Speakers page</a>.</p> <p><a href="http://www.smashingconf.com"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/taking-notes.jpg" width="500" height="281" alt="" title="" /></a><br /><em>Taking notes the old-fashioned way. <a href="http://www.flickr.com/photos/littlemad/8002274002/in/pool-smashingconf">Image credit</a>.</em></p> <p>We are also happy to announce 3 full-day and 1 half-day practical, hands-on workshops that will take place after the two main conference days: Dan Mall will be teaching how to be the typographer you were born to be, Dan Rubin will be exploring how to design for User Experience, Luke Wroblewski will be exploring how we can improve Web forms for mobile, and Addy Osmani will be teaching how to become the real front-end warrior.</p> <p>Does it all sounds good to you? Well, it gets even better: If you purchase a Conference Ticket + Workshop ticket, you can <a href="https://shop.smashingmagazine.com/smashing-conference-ticket-2013.html">save 15% off the regular price</a>! So what are you waiting for?</p> <h4>Date, Location, Prices</h4> <p>The conference will take place on 9&ndash;11th of September in 2013 in the Historic Merchant Hall in our lovely home town Freiburg, Germany. We have only 300 seats, so the number of tickets is very limited. Also, we&#8217;ve blocked every single hotel in town for you — you can select your hotel at the <a href="http://smashingconf.com/locations">SmashingConf 2013 Location page</a> (&#8220;Smashing Conference&#8221; is the magic word for hotel booking!).</p> <p><a href="http://www.smashingconf.com"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/smashing-conference-venue-flag.jpg" width="500" height="500" alt="" title="" /></a><br /><em><a href="http://www.flickr.com/photos/chelium/8002432439/in/pool-smashingconf">Image credit</a>.</em></p> <p>AirBnB could be a good option as well, but be fast — there aren&#8217;t many rooms available. <a href="https://maps.google.de/maps?q=parken&amp;ie=UTF8&amp;ll=47.994316,7.845268&amp;spn=0.0195,0.045233&amp;sll=47.995018,7.852753&amp;sspn=0.014934,0.032015&amp;near=M%C3%BCnsterplatz+24,+79098+Freiburg+im+Breisgau+(Historisches+Kaufhaus)&amp;geocode=CdwLoi9LK2aiFYtY3AId0dJ3ACGeDPWTdIlZKg&amp;dq=Historisches+Kaufhaus,+Freiburg+im+Breisgau&amp;hq=parken&amp;t=m&amp;fll=47.994316,7.845268&amp;fspn=0.0195,0.045233&amp;z=15">Freiburg</a> is known for being a vacation place, so perhaps you&#8217;d like to combine the conference with a relaxing family vacation in the skirts of the Black Forest? We&#8217;ve prepared some information about the location of Freiburg, so you don&#8217;t get lost in the suburbs of the Southern Germany while travelling here. Now if that isn&#8217;t an experience of a life-time, what is? (No, seriously, you will enjoy it!).</p> <p><strong>The price per ticket is &euro;369</strong> (incl. VAT). We&#8217;re organzing 3 full-day (&euro;349) and 1 half-day (&euro;229) workshops. Make sure to actually consider booking a workshop as well — if you buy both a conf ticket and a workshop, you <a href="https://shop.smashingmagazine.com/smashing-conference-ticket-2013.html">save 15% off the price</a> right away. Three days of learning, sharing, networking — it&#8217;s getting better and better! No lunch will be provided, but drinks and snacks will be provided, of course.</p> <p><a href="https://shop.smashingmagazine.com/smashing-conference-ticket-2013.html?pk_campaign=SmashingConf.com%3A%20Booking&amp;pk_kwd=Conference%20Ticket">Get your ticket!</a></p> <h3>Sponsors, Dear Sponsors</h3> <p>We keep the ticket prices affordable for everyone, and we&#8217;re happy to <strong>welcome sponsors</strong> to help us make the conference <em>smashing</em> in every possible way. If you&#8217;re interested in sponsoring the event, please contact Vitaly at <a href="mailto:hello@smashingconf.com">hello [@] smashingconf [dot] com</a>. We love our sponsors, and you make the event possible, and we&#8217;d be honoured to have you involved!</p> <p><a href="http://www.smashingconf.com"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/smashing-conference-badges.jpg" width="500" height="500" alt="" title="" /></a><br /><em>Snapshot of SmashingMag&#8217;s 2012 Conference badge and lanyard. <a href="http://www.smashingmagazine.com/2012/09/18/smashing-conference-liveblog-day-2/">Image credit</a>.</em></p> <ul> <li>&#8220;This conference was well worth the money and I hope we will make it next year. Well done Smashing Magazine!&#8221; (<a href="http://blog.14islands.com/post/31976848761/smashing-conference-take-aways">Source</a>)</li> <li>&#8220;The two days of talks offered a very good balance of design-, philosophy-, typography-, and development-based topics. [...] Thanks to all who attended, organized, cared, spoke and made this an overall very great event!&#8221; (<a href="http://welearned.net/2012/09/smashing-conference-freiburg-germany-september-2012/">Source</a>)</li> <li>&#8220;It was an immensely successful conference [...] The talks, the beer and the interesting people definitely made me want to go visit Freiburg again next year!&#8221; (<a href="http://thenextweb.com/dd/2012/09/24/tnw-smashing-conference-2012/">Source</a>)</li> </ul> <h3>Questions?</h3> <p>Follow us at <a href="http://www.twitter.com/smashingconf">@smashingconf</a> and get more details on the <a href="http://www.smashingconf.com">SmashingConf 2013 website</a>. Also, more speakers will be announced soon, so get ready to be <em>smashed</em> with a few exciting surprises and announcements!</p> <p>Questions? Shoot us an email anytime at <em>hello@smashingconf.com</em> &mdash; we&#8217;d love to assist you in every possible way and would be humbled and happy to welcome you in our lovely home town Freiburg this September!</p> <p>Auf Wiedersehen!</p> <p><a href="https://shop.smashingmagazine.com/smashing-conference-ticket-2013.html?pk_campaign=SmashingConf.com%3A%20Booking&amp;pk_kwd=Conference%20Ticket">Get your ticket!</a></p> <!-- deleted style tag --> <hr /> <p><small>© Vitaly Friedman for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2013.</small></p><img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/0s0fHxPac14" height="1" width="1" />Rss AD Free Texture Tuesday: Weathered Wood http://www.flashdevelop.net/postshow.php?pid=6747 <p><a href="http://rss.buysellads.com/click.php?z=1281071&amp;k=4857ce43a258e87ce432a0c4b12797ce&amp;a=9042&amp;c=1557781024" target="_blank" rel="nofollow"> <img src="http://rss.buysellads.com/img.php?z=1281071&amp;k=4857ce43a258e87ce432a0c4b12797ce&amp;a=9042&amp;c=1557781024" border="0" alt="" /></a></p><p><a href="http://buysellads.com/buy/sitedetails/pubkey/4857ce43a258e87ce432a0c4b12797ce/zone/1281071" target="_blank">Advertise here with BSA</a></p><br /><p><a href="http://www.flickr.com/photos/36238268@N03/sets/72157634068937862/with/9017099178/"><img src="http://www.bittbox.com/wp-content/uploads/BB_WeatheredWood_01.jpg" alt="" width="485" height="323" class="alignnone size-full wp-image-9043" /></a><br /> <span></span><br /> <a href="http://www.flickr.com/photos/36238268@N03/sets/72157634068937862/with/9017099178/"><img src="http://www.bittbox.com/wp-content/uploads/BB_WeatheredWood_02.jpg" alt="" width="485" height="323" class="alignnone size-full wp-image-9044" /></a><br /> <a href="http://www.flickr.com/photos/36238268@N03/sets/72157634068937862/with/9017099178/"><img src="http://www.bittbox.com/wp-content/uploads/BB_WeatheredWood_03.jpg" alt="" width="485" height="323" class="alignnone size-full wp-image-9045" /></a><br /> <a href="http://www.flickr.com/photos/36238268@N03/sets/72157634068937862/with/9017099178/"><img src="http://www.bittbox.com/wp-content/uploads/BB_WeatheredWood_04.jpg" alt="" width="485" height="323" class="alignnone size-full wp-image-9046" /></a><br /> <a href="http://www.flickr.com/photos/36238268@N03/sets/72157634068937862/with/9017099178/"><img src="http://www.bittbox.com/wp-content/uploads/BB_WeatheredWood_05.jpg" alt="" width="485" height="323" class="alignnone size-full wp-image-9047" /></a></p> <div> <a href="http://feeds.feedburner.com/~ff/Bittbox?a=Aq_n3MwBnJc:_BU0Zz2SG9g:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Bittbox?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Bittbox?a=Aq_n3MwBnJc:_BU0Zz2SG9g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Bittbox?i=Aq_n3MwBnJc:_BU0Zz2SG9g:D7DqB2pKExk" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/Bittbox/~4/Aq_n3MwBnJc" height="1" width="1" />Rss AD Gone In 60 Frames Per Second: A Pinterest Paint Performance Case Study http://www.flashdevelop.net/postshow.php?pid=6746 <table width="650"> <tr> <td width="650"> <div><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&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a></div> </td> </tr> </table> <p>Today we’ll discuss how to improve the paint performance of your websites and Web apps. This is an area that we Web developers have only recently started looking at more closely, and it’s important because it could have an impact on your <strong>user engagement and user experience</strong>.</p> <h3>Frame Rate Applies To The Web, Too</h3> <p>Frame rate is the rate at which a device produces <strong>consecutive</strong> images to the screen. A low frames per second (FPS) means that individual frames can be made out by the eye. A high FPS gives users a more responsive feel. You&#8217;re probably used to this concept from the world of gaming, but it applies to the Web, too.</p> <p>Long image decoding, unnecessary image resizing, heavy animation and data processing can all lead to dropped frames, which reduces the frame rate, resulting in janky pages. We&#8217;ll explain what exactly we mean by “jank” shortly.</p> <h3>Why Care About Frame Rate?</h3> <p>Smooth, high frame rates drive user engagement and can affect how much users interact with your website or app.</p> <p>At EdgeConf earlier this year, Facebook <a href="http://www.youtube.com/watch?list=SPNYkxOF6rcICCU_UD67Ga0qLvMjnBBwft&amp;v=3-WYu_p5rdU&amp;feature=player_detailpage#t=2149s">confirmed</a> this when it mentioned that in an A/B test, it slowed down scrolling from 60 FPS to 30 FPS, causing engagement to collapse. That said, if you can’t do high frame rates and 60 FPS is out of reach, then you’d at least want something smooth. If you&#8217;re doing your own animation, this is one benefit of using <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.requestAnimationFrame"><code>requestAnimationFrame</code></a>: the browser can dynamically adjust to keep the frame rate normal.</p> <p>In cases where you’re concerned about scrolling, the browser can manage the frame rate for you. But if you introduce a large amount of jank, then it won’t be able to do as good a job. So, <strong>try to avoid big hitches</strong>, such as long paints, long JavaScript execution times, long anything.</p> <h3>Don&#8217;t Guess It, Test It!</h3> <p>Before getting started, we need to step back and look at our approach. We all want our websites and apps to run more quickly. In fact, we&#8217;re arguably paid to write code that runs not only correctly, but quickly. As busy developers with deadlines, we find it very easy to rely on snippets of advice that we&#8217;ve read or heard. Problems arise when we do that, though, because the internals of browsers change very rapidly, and something that&#8217;s slow today could be quick tomorrow.</p> <p>Another point to remember is that your app or website is unique, and, therefore, the performance issues you face will depend heavily on what you&#8217;re building. Optimizing a game is a very different beast to optimizing an app that users will have open for 200+ hours. If it&#8217;s a game, then you&#8217;ll likely need to focus your attention on the main loop and heavily optimize the chunk of code that is going to run every frame. With a DOM-heavy application, the memory usage might be the biggest performance bottleneck.</p> <p>Your best option is to <strong>learn how to measure your application and understand what the code is doing</strong>. That way, when browsers change, you will still be clear about what matters to you and your team and will be able to make informed decisions. So, no matter what, <a href="http://aerotwist.com/blog/dont-guess-it-test-it/">don’t guess it, test it!</a></p> <p>We&#8217;re going to discuss how to measure frame rate and paint performance shortly, so hold onto your seats!</p> <p><strong>Note:</strong> Some of the tools mentioned in this article require <a href="https://www.google.com/intl/en/chrome/browser/canary.html">Chrome Canary</a>, with the “Developer Tools experiments” enabled in <code>about:flags</code>. (We &mdash; Addy Osmani and Paul Lewis &mdash; are engineers on the Developer Relations team at Chrome.)</p> <h3>Case Study: Pinterest</h3> <p>The other day we were on <a href="http://pinterest.com/">Pinterest</a>, trying to find some ponies to add to our pony board (Addy loves ponies!). So, we went over to the Pinterest feed and started scrolling through, looking for some ponies to add.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.30.57.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.30.57-500.png" alt="Screen Shot 2013-03-25 at 14.30.57-500" width="500" height="310" class="alignnone size-full wp-image-161844" /></a><br /> <em>Addy adding some ponies to his Pinterest board, as one does. <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.30.57.png">Larger view</a>.</em></p> <h4>Jank Affects User Experience</h4> <p>The first thing we noticed as we scrolled was that scrolling on this page doesn’t perform very well &mdash; scrolling up and down takes effort, and the experience just feels sluggish. When they come up against this, users get frustrated, which means they’re more likely to leave. Of course, this is the last thing we want them to do!</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.31.27.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.31.27-500.png" alt="Screen Shot 2013-03-25 at 14.31.27-500" width="500" height="310" class="alignnone size-full wp-image-161848" /></a><br /> <em>Pinterest showing a performance bottleneck when a user scrolls. <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.31.27.png">Larger view</a>.</em></p> <ul> <li><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/slow_scroll2.gif">Animated GIF</a></li> </ul> <p>This break in consistent frame rate is something the Chrome team calls “jank,” and we’re not sure what’s causing it here. You can actually notice some of the frames being drawn as we scroll. But let’s visualize it! We’re going to open up Frames mode and show what slow looks like there in just a moment.</p> <p><strong>Note:</strong> What we’re really looking for is <strong>a consistently high FPS, ideally matching the refresh rate of the screen</strong>. In many cases, this will be 60 FPS, but it’s not guaranteed, so check the devices you’re targeting.</p> <p>Now, as JavaScript developers, our first instinct is to suspect a memory leak as being the cause. Perhaps some objects are being held around after a round of garbage collection. The reality, however, is that very often these days JavaScript is not a bottleneck. Our major performance problems come down to slow painting and rendering times. The DOM needs to be turned into pixels on the screen, and a lot of paint work when the user scrolls could result in a lot of slowing down.</p> <p><strong>Note:</strong> HTML5 Rocks specifically discusses some of the <a href="http://www.html5rocks.com/en/tutorials/speed/scrolling/">causes of slow scrolling</a>. If you think you&#8217;re running into this problem, it&#8217;s worth a read.</p> <h3>Measuring Paint Performance</h3> <h4>Frame Rate</h4> <p>We suspect that something on this page is affecting the frame rate. So, let’s go open up Chrome’s Developer Tools and head to the “Timeline” and “Frames” mode to record a new session. We’ll click the record button and start scrolling the page the way a normal user would. Now, to simulate a few minutes of usage, we’re going to scroll just a little faster.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-15-at-17.57.48.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-15-at-17.57.48-500.png" alt="Screen Shot 2013-05-15 at 17.57.48-500" width="500" height="363" class="alignnone size-full wp-image-161858" /></a><br /> <em>Using Chrome&#8217;s Developer Tools to profile scrolling interactions. <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-15-at-17.57.48.png">Larger view</a>.</em></p> <ul> <li><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/performance.gif">Animated GIF</a></li> </ul> <p>Up, down, up, down. What you’ll notice now in the summary view up at the top is a lot of purple and green, corresponding to painting and rendering times. Let’s stop recording for now. As we flip through these various frames, we see some pretty hefty “Recalculate Styles” and a lot of “Layout.”</p> <p>If you look at the legend to the very right, you’ll see that we’ve actually blown our budget of 60 FPS, and we’re not even hitting 30 FPS either in many cases. It’s just performing quite poorly. Now, each of these bars in the summary view correspond to one frame &mdash; i.e. all of the work that Chrome has to do in order to be able to draw an app to the screen.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/screen4343431.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/screen434343-5001.png" alt="screen434343-500" width="500" height="364" class="alignnone size-full wp-image-162022" /></a><br /> <em>Chrome&#8217;s Developer Tools showing a long paint time. <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/screen4343431.png">Larger view</a>.</em></p> <ul> <li><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/selection1.gif">Animated GIF</a></li> </ul> <h4>Frame Budget</h4> <p>If you’re targeting 60 FPS, which is generally the optimal number of frames to target these days, then to match the refresh rate of the devices we commonly use, you’ll have a 16.7-millisecond budget in which to complete everything &mdash; JavaScript, layout, image decoding and resizing, painting, compositing &mdash; everything.</p> <p><strong>Note:</strong> A constant frame rate is our ideal here. If you can’t hit 60 FPS for whatever reason, then you’re likely better off targeting 30 FPS, rather than allowing a variable frame rate between 30 and 60 FPS. In practice, this can be challenging to code because when the JavaScript finishes executing, all of the layout, paint and compositing work still has to be done, and predicting that ahead of time is very difficult. In any case, whatever your frame rate, <strong>ensure that it is consistent and doesn’t fluctuate</strong> (which would appear as stuttering).</p> <p>If you’re aiming for low-end devices, such as mobile phones, then that frame budget of 16 milliseconds is really more like 8 to 10 milliseconds. This could be true on desktop as well, where your frame budget might be lowered as a result of miscellaneous browser processes. If you blow this budget, you will miss frames and see jank on the page. So, you likely have somewhere nearer 8 to 10 milliseconds, but be sure to test the devices you’re supporting to get a realistic idea of your budget.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.34.26.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.34.26-500.png" alt="Screen Shot 2013-03-25 at 14.34.26-500" width="500" height="348" class="alignnone size-full wp-image-161867" /></a><br /> <em>An extremely costly layout operation of over 500 milliseconds. <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.34.26.png">Larger view</a>.</em></p> <ul> <li><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/highlight.gif">Animated GIF</a></li> </ul> <p><strong>Note:</strong> We&#8217;ve also got an article on how to use the Chrome Developer Tools to <a href="http://addyosmani.com/blog/performance-optimisation-with-timeline-profiles/">find and fix rendering performance issues</a> that focuses more on the timeline.</p> <p>Going back to scrolling, we have a sneaking suspicion that a number of unnecessary repaints are occurring on this page with <code>onscroll</code>.</p> <p>One common mistake is to stuff just way too much JavaScript into the <code>onscroll</code> handlers of a page &mdash; making it difficult to meet the frame budget at all. Aligning the work to the rendering pipeline (for example, by placing it in <code>requestAnimationFrame</code>) gives you a little more headroom, but you still have only those few milliseconds in which to get everything done.</p> <p>The best thing you can do is just capture values such as <code>scrollTop</code> in your scroll handlers, and then use the most recent value inside a <code>requestAnimationFrame</code> callback.</p> <h4>Paint Rectangles</h4> <p>Let’s go back to <code>Developer Tools &rarr; Settings</code> and enable “Show paint rectangles.” This visualizes the areas of the screen that are being painted with a nice red highlight. Now look at what happens as we scroll through Pinterest.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.35.17.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.35.17-500.png" alt="Screen Shot 2013-03-25 at 14.35.17-500" width="500" height="309" class="alignnone size-full wp-image-161873" /></a><br /> <em>Enabling Chrome Developer Tools’ “Paint Rectangles” feature. <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.35.17.png">Larger view</a>.</em></p> <ul> <li><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/rects.gif">Animated GIF</a></li> </ul> <p>Every few milliseconds, we experience a big bright flash of red across the entire screen. There seems to be a paint of the whole screen every time we scroll, which is potentially very expensive. What we want to see is the browser just painting what is new to the page &mdash; so, typically just the bottom or top of the page as it gets scrolled into view. The cause of this issue seems to be the little “scroll to top” button in the lower-right corner. As the user scrolls, the fixed header at the top needs to be repainted, but so does the button. The way that Chrome deals with this is to create a union of the two areas that need to be repainted.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-15-at-19.00.12.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-15-at-19.00.12-500.png" alt="Screen Shot 2013-05-15 at 19.00.12-500" width="500" height="361" class="alignnone size-full wp-image-161877" /></a><br /> <em>Chrome shows freshly painted areas with a red box. <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-15-at-19.00.12.png">Larger view</a>.</em></p> <p>In this case, there is a rectangle from the top left to top right, but not very tall, plus a rectangle in the lower-right corner. This leaves us with a rectangle from the top left to bottom right, which is essentially the whole screen! If you inspect the button element in Developer Tools and either hide it (using the <code>H</code> key) or delete it and then scroll again, you will see that <strong>only the header area is repainted</strong>. The way to solve this particular problem is to move the scroll button to its own layer so that it doesn’t get unioned with the header. This essentially isolates the button so that it can be composited on top of the rest of the page. But we’ll talk about layers and compositing in more detail in a little bit.</p> <p>The next thing we notice has to do with hovering. When we hover over a pin, Pinterest paints an action bar containing “Repin, comment and like” buttons &mdash; let’s call this the action bar. When we hover over a single pin, it paints not just the bar but also the elements underlying it. Painting should happen only on those elements that you expect to change visually.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.35.46.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.35.46-500.png" alt="Screen Shot 2013-03-25 at 14.35.46-500" width="500" height="179" class="alignnone size-full wp-image-161880" /></a><br /> <em>A cause for concern: full-screen flashes of red indicate a lot of painting. <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.35.46.png">Larger view</a>.</em></p> <ul> <li><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/scroll.gif">Animated GIF</a></li> </ul> <p>There’s another interesting thing about scrolling here. Let’s keep our cursor hovered over this pin and start scrolling the page again.</p> <p>Every time we scroll through a new row of images, this action bar gets painted on yet another pin, even though we don’t mean to hover over it. This comes down more to UX than anything else, but scrolling performance in this case might be more important than the hover effect during scrolling. Hovering amplifies jank during scrolling because the browser essentially pauses to go off and paint the effect (the same is true when we roll out of the element!). One option here is to use a <code>setTimeout</code> with a delay to ensure that the bar is painted only when the user really intends to use it, an approach we covered in “<a href="http://www.html5rocks.com/en/tutorials/speed/unnecessary-paints/">Avoiding Unnecessary Paints</a>.” A more aggressive approach would be to measure the <code>mouseenter</code> or the mouse’s trajectory before enabling hover behaviors. While this measure might seem rather extreme, remember that we are trying to avoid unnecessary paints at all costs, especially when the user is scrolling.</p> <h4>Overall Paint Cost</h4> <p>We now have a really great workflow for looking at the overall cost of painting on a page; go back into Developer Tools and <strong>“Enable continuous page repainting.”</strong> This feature will constantly paint to your screen so that you can find out what elements have costly paint times. You’ll get this really nice black box in the top corner that summarizes paint times, with the minimum and maximum also displayed.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/screenshot43234242.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/screenshot43234242-500.png" alt="screenshot43234242-500" width="500" height="309" class="alignnone size-full wp-image-161885" /></a><br /> <em>Chrome&#8217;s “Continuous Page Repainting” mode helps you to assess the overall cost of a page. <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/screenshot43234242.png">Larger view</a>.</em></p> <ul> <li><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/painthud.gif">Animated GIF</a></li> </ul> <p>Let’s head back to the “Elements” panel. Here, we can select a node and just use the keyboard to walk the DOM tree. If we suspect that an element has an expensive paint, we can use the <code>H</code> shortcut key (something recently added to Chrome) to toggle visibility on that element. Using the continuous paint box, we can instantly see whether this has a positive effect on our pages’ paint times. We should expect it to in many cases, because if we hide an element, we should expect a corresponding reduction in paint times. But by doing this, we might see one element that is especially expensive, which would bear further scrutiny!</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/Screen-Shot-2013-06-10-at-09.46.18_large_mini.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/Screen-Shot-2013-06-10-at-09.46.31_500_mini.png" alt="Screen Shot 2013-06-10 at 09.46.31_500_mini" width="500" height="326" class="alignnone size-full wp-image-163586" /></a><br /> <em>The “Continuous Page Repainting” chart showing the time taken to paint the page.</em></p> <ul> <li><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/cont.gif">Animated GIF</a></li> </ul> <p>For Pinterest’s website, we can do it to the categories bar or to the header, and, as you’d expect, because we don’t have to paint these elements at all, we see a drop in the time it takes to paint to the screen. If we want even more detailed insight, we can go right back to the timeline and record a new session to measure the impact. Isn’t that great? Now, while this workflow should work great for most pages, there might be times when it isn’t as useful. In Pinterest’s case, the pins are actually quite deeply nested in the page, making it hard for us to measure paint times in this workflow.</p> <p>Luckily, we can still get some good mileage by selecting an element (such as a pin here), going to the “Styles” panel and looking at what CSS styles are being used. <strong>We can toggle properties on and off to see how they effect the paint times.</strong> This gives us much finer-grained insight into the paint profile of the page.</p> <p>Here, we see that Pinterest is using <a href="http://www.html5rocks.com/en/tutorials/speed/css-paint-times/"><code>box-shadow</code></a> on these pins. We’ve optimized the performance of <code>box-shadow</code> in Chrome over the past two years, but in combination with other styles and when heavily used, it could cause a bottleneck, so it’s worth looking at.</p> <p>Pinterest has reduced continuous paint mode times by 40% by moving <code>box-shadow</code> to a separate element that doesn’t have <code>border-radius</code>. The side effect is slightly fuzzy-looking corners; however, it is barely noticeable due to the color scheme and the low <code>border-radius</code> values.</p> <p><strong>Note:</strong> You can read more about this topic in “<a href="http://www.html5rocks.com/en/tutorials/speed/css-paint-times/">CSS Paint Times and Page Render Weight</a>.”</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-15.47.40.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-15.47.40-500.png" alt="Screen Shot 2013-03-25 at 15.47.40-500" width="500" height="309" class="alignnone size-full wp-image-161892" /></a><br /> <em>Toggling styles to measure their effect on page-rendering weight. <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-15.47.40.png">Larger view</a>.</em></p> <ul> <li><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/box.gif">Animated GIF</a></li> </ul> <p>Let’s disable <code>box-shadow</code> to see whether it makes a difference. As you can see, it’s no longer visible on any of the pins. So, let’s go back to the timeline and record a new session in which we scroll the same way as we did before (up and down, up and down, up and down). We’re getting closer to 60 FPS now, and that’s just from one change.</p> <p><strong>Public service announcement:</strong> We&#8217;re absolutely not saying don’t use <code>box-shadow</code> &mdash; by all means, do! Just make sure that if you have a performance problem, measure correctly to find out what your own bottlenecks are. Always measure! Your website or application is unique, as will any performance bottleneck be. Browser internals change almost daily, so measuring is the smartest way to stay up to date on the changes, and Chrome’s Developer Tools makes this really easy to do.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.39.25.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.39.25.png" alt="Screen Shot 2013-03-25 at 15.50.25-500" width="500" height="309" class="alignnone size-full wp-image-161896" /></a><br /> <em>Using Chrome Developer Tools to profile is the best way to track browser performance changes. <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-03-25-at-14.39.25.png">Larger view</a>.</em></p> <p><strong>Note:</strong> Eberhard Grather recently wrote a detailed post on “<a href="http://updates.html5rocks.com/2013/02/Profiling-Long-Paint-Times-with-DevTools-Continuous-Painting-Mode">Profiling Long Paint Times With DevTools’ Continuous Painting Mode</a>,” which you should spend some quality time with.</p> <p>Another thing we noticed is that if you click on the “Repin” button, do you see the animated effect and the lightbox being painted? There’s a big red flash of repaint in the background. It&#8217;s not clear from the tooling if the paint is the white cover or some other affected being area. Be sure to double check that the paint rectangles correspond to the element or elements that you think are being repainted, and not just what it looks like. In this case, it looks like the whole screen is being repainted, but it could well be just the white cover, which might not be all that expensive. It’s nuanced; the important thing is to understand what you’re seeing and why.</p> <h4>Hardware Compositing (GPU Acceleration)</h4> <p>The last thing we’re going to look at on Pinterest is GPU acceleration. In the past, Web browsers have relied pretty heavily on the CPU to render pages. This involved two things: firstly, painting elements into a bunch of textures, called layers; and secondly, compositing all of those layers together to the final picture seen on screen.</p> <p>Over the past few years, however, we’ve found that getting the GPU involved in the compositing process <strong>can lead to some significant speeding up</strong>. The premise is that, while the textures are still painted on the CPU, they can be uploaded to the GPU for compositing. Assuming that all we do on future frames is move elements around (using CSS transitions or animations) or change their opacity, we simply provide these changes to the GPU and it takes care of the rest. We essentially avoid having to give the GPU any new graphics; rather, we just ask it to move existing ones around. This is something that the GPU is exceptionally quick at doing, thus improving performance overall.</p> <p>There is no guarantee that this hardware compositing will be available and enabled on a given platform, but if it is available the first time you use, say, a 3D transform on an element, then it will be enabled in Chrome. Many developers use the <code>translateZ</code> hack to do just that. The other side effect of using this hack is that the element in question will get its own layer, which may or may not be what you want. It can be very useful to effectively isolate an element so that it doesn’t affect others as and when it gets repainted. It’s worth remembering that the uploading of these textures from system memory to the video memory is not necessarily very quick. <strong>The more layers you have, the more textures need to be uploaded</strong> and the more layers that will need to be managed, so it’s best <a href="https://plus.google.com/115133653231679625609/posts/gv92WXBBkgU">not to overdo it</a>.</p> <p><strong>Note:</strong> Tom Wiltzius has written about the <a href="http://www.html5rocks.com/en/tutorials/speed/layers/">layer model in Chrome</a>, which is a relevant read if you are interested in understanding how compositing works behind the scenes. Paul has also written a <a href="http://aerotwist.com/blog/on-translate3d-and-layer-creation-hacks/">post about the <code>translateZ</code> hack</a> and how to make sure you’re using it in the right ways.</p> <p>Another great setting in Developer Tools that can help here is “Show composited layer borders.” This feature will give you insight into those DOM elements that are being manipulated at the GPU level.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/layer_folders_addy_mini.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/layer_folders_addy_500_mini.png" alt="layer_folders_addy_500_mini" width="500" height="321" class="alignnone size-full wp-image-163530" /></a><br /> <em>Switching on composited layer borders will indicate Chrome&#8217;s rendering layers. <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/layer_folders_addy_mini.png">Larger view</a>.</em></p> <ul> <li><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/nolayers.gif">Animated GIF</a></li> </ul> <p>If an element is taking advantage of the GPU acceleration, you’ll see an orange border around it with this on. Now as we scroll through, we don’t really see any use of composited layers on this page &mdash; not when we click “Scroll to top” or otherwise.</p> <p>Chrome is getting better at automatically handling layer promotion in the background; but, as mentioned, developers sometimes use the <code>translateZ</code> hack to create a composited layer. Below is Pinterest’s feed with <code>translateZ(0)</code> applied to all pins. It&#8217;s not hitting 60 FPS, but it is getting closer to a consistent 30 FPS on desktop, which is actually not bad.</p> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-15-at-19.03.13.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-15-at-19.03.13-500.png" alt="Screen Shot 2013-05-15 at 19.03.13-500" width="500" height="361" class="alignnone size-full wp-image-161903" /></a><br /> <em>Using the <code>translateZ(0)</code> hack on all Pinterest pins. Note the orange borders. <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-15-at-19.03.13.png">Larger view</a>.</em></p> <ul> <li><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/transformpost.gif">Animated GIF</a></li> </ul> <p>Remember to test on both desktop and mobile, though; their performance characteristics vary wildly. Use the timeline in both, and watch your paint time chart in Continuous Paint mode to evaluate how fast you’re busting your budget.</p> <p>Again, don’t use this hack on every element on the page &mdash; it might pass muster on desktop, but it won’t on mobile. The reason is that there is increased video memory usage and an increased layer management cost, both of which could have a negative impact on performance. Instead, use hardware compositing only to isolate elements where the paint cost is measurably high.</p> <p><strong>Note:</strong> In the <a href="http://nightly.webkit.org/">WebKit nightlies</a>, the Web Inspector now also gives you the <a href="https://twitter.com/addyosmani/status/313978378220879872/photo/1">reasons</a> for layers being composited. To enable this, switch off the “Use WebKit Web Inspector” option and you&#8217;ll get the front end with this feature in there. Switch it on using the “Layers” button.</p> <h3>A Find-and-Fix Workflow</h3> <p>Now that we’ve concluded our Pinterest case study, what about the workflow for diagnosing and addressing your own paint problems?</p> <h4>Finding the Problem</h4> <ul> <li>Make sure you&#8217;re in “Incognito” mode. Extensions and apps can skew the figures that are reported when profiling performance.</li> <li>Open the page and the Developer Tools.</li> <li>In the timeline, record and interact with your page.</li> <li>Check for frames that go over budget (i.e. over 60 FPS).</li> <li>If you’re close to budget, then you’re likely way over the budget on mobile.</li> <li>Check the cause of the jank. Long paint? CSS layout? JavaScript?</li> </ul> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-15-at-19.36.22.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-15-at-19.36.22-500.png" alt="Screen Shot 2013-05-15 at 19.36.22-500" width="500" height="324" class="alignnone size-full wp-image-161907" /></a><br /> <em>Spend some quality time with Frame mode in Chrome Developer Tools to understand your website&#8217;s runtime profile. <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-15-at-19.36.22.png">Larger view</a>.</em></p> <h4>Fixing the Problem</h4> <ul> <li>Go to “Settings” and enable “Continuous Page Repainting.”</li> <li>In the “Elements” panel, hide anything non-essential using the hide (<code>H</code>) shortcut.</li> <li>Walk through the DOM tree, hiding elements and checking the FPS in the timeline.</li> <li>See which element(s) are causing long paints.</li> <li>Uncheck styles that could affect paint time, and track the FPS.</li> <li>Continue until you’ve located the elements and styles responsible for the slow-down.</li> </ul> <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/fixing_mini.jpg"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/05/fixing-500_mini.jpg" alt="fixing-500_mini" width="500" height="149" class="alignnone size-full wp-image-161909" /></a><br /> <em>Switch on extra Developer Tools features for more insight. <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/05/fixing_mini.jpg">Larger view</a>.</em></p> <h3>What About Other Browsers?</h3> <p>Although at the time of writing, Chrome has the best tools to profile paint performance, we strongly recommend testing and measuring your pages in other browsers to get a feel for what your own users might experience (where feasible). Performance can vary massively between them, and a performance smell in one browser might not be present in another.</p> <p>As we said earlier, <strong>don&#8217;t guess it, test it!</strong> Measure for yourself, understand the abstractions, know your browser’s internals. In time, we hope that the cross- browser tooling for this area improves so that developers can get an accurate picture of rendering performance, regardless of the browser being used.</p> <h3>Conclusion</h3> <p>Performance is important. Not all machines are created equal, and the fast machines that developers work on might not have the performance problems encountered on the devices of real users. Frame rate in particular can have a big impact on engagement and, consequently, on a project’s success. Luckily, a lot of great tools out there can help with that.</p> <p>Be sure to measure paint performance on both desktop and mobile. If all goes well, your users will end up with snappier, more silky-smooth experiences, regardless of the device they&#8217;re using.</p> <h4>Further Reading</h4> <ul> <li>“<a href="https://developers.google.com/chrome-developer-tools/docs/using-timeline">Performance Profiling With the Timeline</a>,” Chrome DevTools, Google Developers</li> <li><a href="http://jankfree.org">Let’s Make the Web Jank-Free</a> (resources)</li> <li>“<a href="http://aerotwist.com/blog/dont-guess-it-test-it/">“Don&#8217;t Guess It, Test It!</a>” (article and video), Paul Lewis</li> <li>“<a href="http://www.html5rocks.com/en/tutorials/speed/css-paint-times/">CSS Paint Times and Page Render Weight</a>,” Colt McAnlis, HTML5 Rocks</li> <li>“<a href="http://www.html5rocks.com/en/tutorials/speed/layers/">Accelerated Rendering in Chrome</a>,” Tom Wiltzius, HTML5 Rocks</li> <li>“<a href="http://www.html5rocks.com/en/tutorials/speed/unnecessary-paints/">Avoiding Unnecessary Paints</a>,” Paul Lewis, HTML5 Rocks</li> <li>“<a href="https://speakerdeck.com/ariya/fluid-user-interface-with-hardware-acceleration">Fluid User Interface With Hardware Acceleration</a>” (slidedeck) Ariya Hidayat, W3Conf 2013</li> </ul> <h4>About the Authors</h4> <p><a href="http://twitter.com/addyosmani">Addy Osmani</a> and <a href="http://twitter.com/aerotwist">Paul Lewis</a> are engineers on the Developer Relations team at Chrome, with a focus on tooling and rendering performance, respectively. When they&#8217;re not causing trouble, they have a passion for helping developers build snappy, fluid experiences on the Web.</p> <p><em>(al)</em></p> <hr /> <p><small>© Addy Osmani for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2013.</small></p><img src="http://feeds.feedburner.com/~r/SmashingMagazine/~4/8Ex-TrJ88pU" height="1" width="1" />Rss AD