Archive

Archive for June, 2015

Webdesigner News: Focused News Aggregator Saves Your Time

June 19th, 2015 No comments

Staying afloat the news stream is not easy. If you manage to you can be confident that you are not too far away from recent developments in our industry. And you can make an educated decision which topics are worth digging in deeper and which ones are not. As reading is not bringing in any money, you need to cut that down to the necessary. The aggregator I want to introduce you to today helps you achieve just the right balance. Say hello to Webdesigner News… Why Web Designers Need to Stay Updated I know that in this large industry of web designers not everyone sees the need to stay on top of the game when it comes to the most recent developments in modern technologies. The (r)evolution of mobile apps has heightened the level of expectancy from the client’s side. Today almost everyone is able to distinguish between good and bad websites (except for those who are not ;-)). Thus, the wheat separates itself from the chaff pretty fast. This means it’s not enough to only be part of the wheat anymore. You will have to be part of the top quality wheat – constantly improving. Constantly improving means […]

Categories: Others Tags:

Creating Advanced Animations In Photoshop

June 18th, 2015 No comments
Photoshop has two timelines for you to choose from.

While animation in Photoshop is not a new concept, it definitely has come a long way in the last few years: The Timeline panel has been overhauled, video layers have been introduced, as has the ability to create keyframe animation. These additions have really upped Photoshop’s game.

Even though Photoshop is still a long way off from being able to create the high-end and cinematic animations of such programs as After Effects, it still has enough power to create complex animation — which is especially useful if you don’t want to spend time learning a new application.

In this article, I will share several advanced techniques to help you create complex animations. We’ll look at the Timeline panel and the different properties that can be animated. We’ll also explore the roles that adjustment layers, filters and smart objects can have in animation (and how to combine all three for some amazing effects). Because the topics and techniques in this article are advanced, a moderate level of Photoshop knowledge is expected.

Overview Of Timeline Panel

Opening the Timeline panel (“Window” ? “Timeline”) allows you to select between two types of timelines: video and frame. The frame timeline is for frame-by-frame animation and can be very limiting. It generally works by converting the layers in your Layers panel to individual frames. I won’t go into any more detail on this timeline; I want to focus on the video timeline.

1
Photoshop has two timelines for you to choose from. (View large version2)

Video Timeline

The video timeline allows for keyframe animation — which is an animation process in which you define key points of animation along a timeline and Photoshop will interpret the in-between frames to create a cohesive animation. Let’s go ahead and create a very simple animation to see how this works.

3
The video timeline panel shows a layer (1) with layer properties (2). The timeline shows the current time indicator (3) and existing keyframes (4). (View large version4)

As you probably noticed from the image above, the video timeline shows a representation of layers in the Layers panel. Each layer in the timeline has a dropdown panel that exposes the layer properties (these are the properties that can be animated). To animate a layer property, simply click the stopwatch icon, which enables keyframe animation. Notice that a keyframe is automatically placed at the current time indicator.

The stopwatch icon has been selected for the Position property. A keyframe is automatically added to the timeline.5
The stopwatch icon has been selected for the “Position” property. A keyframe is automatically added to the timeline. (View large version6)

Move the current time indicator to another point in the timeline and reposition the layer. Again, another keyframe will automatically be added to the timeline.

Moving the layer automatically adds a keyframe at the current time indicator's location on the timeline.7
Moving the layer automatically adds a keyframe at the current time indicator’s location in the timeline. (View large version8)

Playing back the animation shows how the object on the canvas moves from one position to the next.

Photoshop automatically creates the animation in between the keyframes.

Layer Types

Now that we have a good idea of how the animation process works in Photoshop, let’s take a closer look at the common layer types that can be animated. Because different layer types have different properties to animate, pay attention to which layer types are being used.

The standard (pixel) layer is a layer that contains pixel information. This is the most common (and most basic) layer in Photoshop. Layer properties include:

  • position,
  • opacity,
  • styles.
A standard layer in the timeline with the layer properties exposed.
A standard layer in the timeline with the layer properties exposed.

Adding a layer mask or vector mask to any layer will introduce additional properties specific to that mask. Layer properties that are added to the layer’s existing properties include:

  • layer or vector mask position
  • layer or vector mask enabling
A layer with a layer mask in the timeline
A layer with a layer mask in the timeline.
A layer with a vector mask in the timeline
A layer with a vector mask in the timeline.

A shape layer contains a shape (whether from one of the shape tools or the Pen tool) or a line segment. Because shapes and line segments are built with vector mask information, those mask properties will appear in addition to the other layer properties. Layer properties include:

  • position,
  • opacity,
  • styles,
  • vector mask position,
  • vector mask enabling.
A shape layer in the timeline with the layer properties exposed
A shape layer in the timeline with the layer properties exposed.

A text layer contains editable text. If text has been rasterized, then the layer will no longer be a text layer, but rather will be a standard layer with pixel information. Layer properties include:

  • transform,
  • opacity,
  • styles,
  • text warp.
A text layer in the timeline with the layer properties exposed
A text layer in the timeline with the layer properties exposed.

A smart object can contain any one or combination of the above layer types. A smart object acts like a wrapper for any layer, preserving the original layer while using a new set of properties. These properties include:

  • transform,
  • opacity,
  • styles.
A text layer in the timeline with the layer properties exposed
A text layer in the timeline with the layer properties exposed.

A word of warning when using smart objects. Because a smart object preserves the original quality of the layer or the set of layers it contains, it can be scaled and rescaled without losing quality. However, it cannot be scaled any larger than the size of the original layer it contains. Doing so would cause the smart object to lose quality.

At this point, I want to mention two other layer types — a video layer and a 3D layer. Both of these layers are completely unique from the other layer types mentioned. The video layer is actually a layer group that contains its own set of properties, while the 3D layer — besides containing a unique set of properties — is manipulated in an environment entirely separate from the other layers, adding to the level of complexity. Due to the uniqueness of these two layer types, I will not go into detail here. You can see how both layers are represented in the timeline below:

A video layer group in the timeline with the layer properties exposed
A video layer group in the timeline with the layer properties exposed.
A 3D layer in the timeline with the layer properties exposed
A 3D layer in the timeline with the layer properties exposed.

I encourage you to explore these two layer types on your own. For the rest of this article, I will be focusing only on the traditional layer types, excluding video and 3D.

Layer Properties

Now that we have a grasp of the different layer types, let’s examine the different properties that we are able to animate. Knowing how each property works is important to understanding their limitations and how to get around them. Let’s look at the common animation properties.

The Position property allows for movement along the X- and Y-axis. Manipulate the position of an object by using the Move Tool.

The object’s Position property was keyframed to move the ball back and forth along the x axis.

Opacity allows you to keyframe the opacity of a layer. The Opacity control can be found in the Layers panel.

The object’s opacity was keyframed at 100% and 0% to create a fading animation.

The Style property allows you to keyframe the layer styles of a layer. Access the layer styles by double-clicking a layer in the Layers panel.

The object’s layer styles (Bevel & Emboss, Color Overlay, and Drop Shadow) were all keyframed to create a pulsing animation.

The layer mask or vector mask position keyframes the x and y positions of each mask. It works best when the mask is not linked to the layer.

The mask’s position is keyframed to scrub across the layer, revealing the background layer.

Enabling or disabling a layer or vector mask is also possible. To enable or disable a layer mask, go to “Layer” ? “Layer Mask” and select either “Enable” or “Disable.” For vector masks, go to “Layer” ? “Vector Mask.” Alternatively, you can “Shift + Click” the mask in the Layers panel to toggle on or off.

The mask is keyframed to be enabled, then disabled after a short time, causing a reveal.

Specific to text layers, the Text Warp property allows you to keyframe any text warp applied to a text layer. You can access a list of text warp effects by going to “Type” ? “Warp Text.”

A Flag warp was applied to the text and keyframed to create a warping animation.

The Transform property allows you to keyframe transformation to a layer. Various transformations (such as Rotate and Scale) can be accessed by going to “Edit” ? “Transform,” or by pressing Control + T to enter Free Transform mode.

The object’s Scale and Rotation are keyframed to create a spinning star that grows and shrinks.

Footnotes

  1. 1 http://www.smashingmagazine.com/wp-content/uploads/2015/05/p1-01-overview-opt.jpg
  2. 2 http://www.smashingmagazine.com/wp-content/uploads/2015/05/p1-01-overview-opt.jpg
  3. 3 http://www.smashingmagazine.com/wp-content/uploads/2015/05/p1-02-timeline-1-opt.jpg
  4. 4 http://www.smashingmagazine.com/wp-content/uploads/2015/05/p1-02-timeline-1-opt.jpg
  5. 5 http://www.smashingmagazine.com/wp-content/uploads/2015/05/p1-03-timeline-2-opt.jpg
  6. 6 http://www.smashingmagazine.com/wp-content/uploads/2015/05/p1-03-timeline-2-opt.jpg
  7. 7 http://www.smashingmagazine.com/wp-content/uploads/2015/05/p1-04-timeline-3-opt.jpg
  8. 8 http://www.smashingmagazine.com/wp-content/uploads/2015/05/p1-04-timeline-3-opt.jpg

The post Creating Advanced Animations In Photoshop appeared first on Smashing Magazine.

Categories: Others Tags:

Responsive Typography With Sass Maps

June 17th, 2015 No comments

Managing consistent, typographic rhythm isn’t easy, but when the type is responsive, things get even more difficult. Fortunately, Sass maps make responsive typography much more manageable.

Writing the code is one thing, but keeping track of font-size values for each breakpoint is another — and the above is for paragraphs alone. Throw in h1 to h6s, each with variable font sizes for each breakpoint, and it gets cumbersome, especially when the type doesn’t scale linearly.

If you’ve tried to tackle responsive type, this may look familiar:

p { font-size: 15px; }

@media screen and (min-width: 480px) {
  p { font-size: 16px; }
}
@media screen and (min-width: 640px) {
  p { font-size: 17px; }
}
@media screen and (min-width: 1024px) {
  p { font-size: 19px; }
}

Sass variables are great for making values reusable throughout a project, but managing them for responsive font sizes easily becomes a mess.

$p-font-size-mobile : 15px;
$p-font-size-small  : 16px;
$p-font-size-medium : 17px;
$p-font-size-large  : 19px;

$h1-font-size-mobile: 28px;
$h1-font-size-small : 31px;
$h1-font-size-medium: 33px;
$h1-font-size-large : 36px;

// I think you get the point…

This is where Sass maps1 and loops are powerful: They’ve helped me manage z-index values2, colors3 and, as you’ll see in a moment, font sizes.

Organizing Font Sizes With Sass Maps

Let’s start by creating a Sass map with key-value pairs — breakpoints as keys and font sizes as corresponding values.

$p-font-sizes: (
  null  : 15px,
  480px : 16px,
  640px : 17px,
  1024px: 19px
);

With mobile-first in mind, we see that the key null represents the default font size (not in a media query), and breakpoints are in ascending order.

Next, the mixin, which iterates through a Sass map and generates the appropriate media queries.

@mixin font-size($fs-map) {
  @each $fs-breakpoint, $fs-font-size in $fs-map {
    @if $fs-breakpoint == null {
      font-size: $fs-font-size;
    }
    @else {
      @media screen and (min-width: $fs-breakpoint) {
        font-size: $fs-font-size;
      }
    }
  }
}

Note: It’s worth mentioning that this mixin, along with the ones to follow, feature some basic programming logic. Sass, with the help of SassScript4 (a set of extensions that comes baked in), makes basic programming constructs possible, like if/else statements, each loops and a ton more. I encourage you to take some time to read through the documentation5. Sass’ “power features” will introduce you to a new dimension of things you can do with Sass.

We’ll then use the mixin for paragraphs:

p {
  @include font-size($p-font-sizes);
}

… which results in the following CSS:

p { font-size: 15px; }

@media screen and (min-width: 480px) {
  p { font-size: 16px; }
}
@media screen and (min-width: 640px) {
  p { font-size: 17px; }
}
@media screen and (min-width: 1024px) {
  p { font-size: 19px; }
}

Managing and keeping track of font sizes for elements becomes a whole lot easier! With every new element, create a map and call the mixin in the appropriate selector.

$h1-font-sizes: (
  null  : 28px
  480px : 31px,
  640px : 33px,
  1024px: 36px
);

h1 {
  @include font-size($h1-font-sizes);
}

Keep font sizes consistent for various elements:

p, ul, ol {
  @include font-size($p-font-sizes);
}

Solving Breakpoint Fragmentation

But wait! What if we decide that we want the font size of ps to be 17 pixels and of h1s to be 33 pixels at a breakpoint of 700 pixels, instead of 640 pixels? With the solution above, that would require manually changing every instance of 640px. By trying to solve one problem, we’ve inadvertently created another: breakpoint fragmentation.

If we can manage font sizes in Sass maps, surely we can do the same with breakpoints, right? Exactly!

Let’s create a map for common breakpoints and assign each value an appropriate name. We’ll also change the font-sizes map a bit by using the breakpoint names we assigned in $breakpoints to establish a relationship between the breakpoints and font-sizes maps.

$breakpoints: (
  small : 480px,
  medium: 700px, // Previously 640px
  large : 1024px
);

$p-font-sizes: (
  null  : 15px,
  small : 16px,
  medium: 17px,
  large : 19px
);

$h1-font-sizes: (
  null  : 28px,
  small : 31px,
  medium: 33px,
  large : 36px
);

The last step is to tweak the mixin a bit so that when it iterates through the font-sizes map, it’ll use the breakpoint name to get the appropriate value from $breakpoints before generating the media query.

@mixin font-size($fs-map, $fs-breakpoints: $breakpoints) {
  @each $fs-breakpoint, $fs-font-size in $fs-map {
    @if $fs-breakpoint == null {
      font-size: $fs-font-size;
    }
    @else {
      // If $fs-font-size is a key that exists in
      // $fs-breakpoints, use the value
      @if map-has-key($fs-breakpoints, $fs-breakpoint) {
        $fs-breakpoint: map-get($fs-breakpoints, $fs-breakpoint);
      }
      @media screen and (min-width: $fs-breakpoint) {
        font-size: $fs-font-size;
      }
    }
  }
}

Note: The mixin’s default breakpoints map is $breakpoints; if your breakpoints variable’s name is different, be sure to change it in the second argument of line 1.

Voila! Now, what if we want an element to have a font size for a custom breakpoint that doesn’t exist in $breakpoints? In the font-sizes map, simply drop in the breakpoint value instead of a name as the key, and the mixin will do the work for you:

$p-font-sizes: (
  null  : 15px,
  small : 16px,
  medium: 17px,
  900px : 18px,
  large : 19px,
  1440px: 20px,
);

p {
  @include font-size($p-font-sizes);
}

The magic happens in the mixin thanks to Sass’ map-has-key function6. It checks to see whether the key name exists in $breakpoints: If it exists, it’ll use the value of the key; if not, it’ll assume the key is a custom value and use that instead when generating the media query.

p { font-size: 15px; }

@media screen and (min-width: 480px) {
  p { font-size: 16px; }
}
@media screen and (min-width: 700px) {
  p { font-size: 17px; }
}
@media screen and (min-width: 900px) {
  p { font-size: 18px; }
}
@media screen and (min-width: 1024px) {
  p { font-size: 19px; }
}
@media screen and (min-width: 1440px) {
  p { font-size: 20px; }
}

Improving Vertical Rhythm With Line Height

Line height is also an important part of achieving consistent vertical rhythm. So, without going overboard, let’s include line height in the solution.

Extend the font-sizes map by including both font size and line height in a list as the value of the desired key:

$breakpoints: (
  small : 480px,
  medium: 700px,
  large : 1024px
);

$p-font-sizes: (
  null  : (15px, 1.3),
  small : 16px,
  medium: (17px, 1.4),
  900px : 18px,
  large : (19px, 1.45),
  1440px: 20px,
);

Note: Although line-height values can be defined using any valid CSS unit (percentages, pixels, ems, etc.), “unitless” values are recommended7 and preferred8 in order to avoid unexpected results due to inheritance.

We then need to modify the mixin to include line height when generating the CSS.

@mixin font-size($fs-map, $fs-breakpoints: $breakpoints) {
  @each $fs-breakpoint, $fs-font-size in $fs-map {
    @if $fs-breakpoint == null {
      @include make-font-size($fs-font-size);
    }
    @else {
      // If $fs-font-size is a key that exists in
      // $fs-breakpoints, use the value
      @if map-has-key($fs-breakpoints, $fs-breakpoint) {
        $fs-breakpoint: map-get($fs-breakpoints, $fs-breakpoint);
      }
      @media screen and (min-width: $fs-breakpoint) {
        @include make-font-size($fs-font-size);
      }
    }
  }
}

// Utility function for mixin font-size
@mixin make-font-size($fs-font-size) {
  // If $fs-font-size is a list, include
  // both font-size and line-height
  @if type-of($fs-font-size) == "list" {
    font-size: nth($fs-font-size, 1);
    @if (length($fs-font-size) > 1) {
      line-height: nth($fs-font-size, 2);
    }
  }
  @else {
    font-size: $fs-font-size;
  }
}

The mixin checks to see whether the value of the key in the font-sizes map is a list as opposed to a font-size value. If it’s a list, then it gets the correct value from the list by index value, with the help of the nth function9. It assumes that the first value is the font size and the second is the line height. Let’s see it in action:

p {
  @include font-size($p-font-sizes);
}

And here’s the resulting CSS:

p { font-size: 15px; line-height: 1.3; }

@media screen and (min-width: 480px) {
  p { font-size: 16px; }
}
@media screen and (min-width: 700px) {
  p { font-size: 17px; line-height: 1.4; }
}
@media screen and (min-width: 900px) {
  p { font-size: 18px; }
}
@media screen and (min-width: 1024px) {
  p { font-size: 19px; line-height: 1.45; }
}
@media screen and (min-width: 1440px) {
  p { font-size: 20px; }
}

This final solution is easily extensible to accommodate a host of other attributes, such as font weights, margins, etc. The key is to modify the make-font-size utility mixin and use the nth function to get the appropriate value from the list.

Conclusion

There are various ways to approach responsive typography and consistent vertical rhythm, and they are not limited to my suggestion. However, I find that this works for me more times than not.

Using this mixin will likely generate duplicate media queries in your compiled CSS. There’s been a lot of discussion about duplicate media queries versus grouped media queries, using @extend instead of mixins10, and performance and file size; however, tests have concluded that “the difference, while ugly, is minimal at worst, essentially non-existent at best11.”

I also realize that my solution is not robust (it’s not designed to handle media-query ranges, max-width or viewport orientation). Such features can be implemented in the mixin (my personal version also converts pixel values to ems), but for complex media queries, I prefer to write by hand. Don’t forget that you can use the map-get function12 to retrieve values from existing maps.

Alternatives

Viewport units13 (vh, vw, vmin and vmax) can also be used to create responsive typography:

An example of viewport units in action. One viewport unit = 1% of the viewport’s width or height. (For a 1000-pixel-wide viewport, 1vw = 10px; for a 500-pixel-high viewport, 1vh = 5px.)

For example, viewport-width units can be used to build fluid hero text14. However, because the text will be scaled to the width or height of the viewport (as opposed to the size of the content area of the page) and because CSS currently lacks min and max values for the font-size property, viewport units aren’t suitable for body text: No matter what value you choose, body text sized in viewport units will always end up being too large or too small at extreme browser sizes, necessitating intervention by media query.

FitText.js15 does a similar job, with a focus on sizing text so that it always rests on a single line or measure. SVG techniques can also be used to achieve a similar effect.

Finally, Erik van Blokland16 has been working on some very exciting possibilities for responsive typography17, such as letterforms that actually alter with viewport size to preserve space, rather than simply get smaller.

Further Resources

Modular Scale18 is a great tool to achieve responsive typography, and Sara Soueidan has a great article on responsive typography techniques19.

Image source20 of picture on front page.

(ds, ml, al)

Footnotes

  1. 1 https://jonsuh.com/blog/sass-maps/
  2. 2 https://jonsuh.com/blog/organizing-z-index-with-sass/
  3. 3 https://jonsuh.com/blog/sass-maps/#loops-and-maps
  4. 4 http://sass-lang.com/documentation/file.SASS_REFERENCE.html#sassscript
  5. 5 http://sass-lang.com/documentation/file.SASS_REFERENCE.html
  6. 6 http://sass-lang.com/documentation/Sass/Script/Functions.html#map_has_key-instance_method
  7. 7 https://css-tricks.com/almanac/properties/l/line-height/
  8. 8 https://developer.mozilla.org/en-US/docs/Web/CSS/line-height#Prefer_unitless_numbers_for_line-height_values
  9. 9 http://sass-lang.com/documentation/Sass/Script/Functions.html#nth-instance_method
  10. 10 https://tech.bellycard.com/blog/sass-mixins-vs-extends-the-data/
  11. 11 http://sasscast.tumblr.com/post/38673939456/sass-and-media-queries
  12. 12 http://sass-lang.com/documentation/Sass/Script/Functions.html#map_get-instance_method
  13. 13 https://css-tricks.com/viewport-sized-typography/
  14. 14 http://demosthenes.info/blog/739/Creating-Responsive-Hero-Text-With-vw-Units
  15. 15 http://fittextjs.com/
  16. 16 https://twitter.com/letterror
  17. 17 http://letterror.com/dev/mathshapes/page_20_Excellence.html
  18. 18 http://www.modularscale.com/
  19. 19 http://tympanus.net/codrops/2013/11/19/techniques-for-responsive-typography/
  20. 20 http://www.flickr.com/photos/r2i-social-networking/6925301398/sizes/m/in/photostream/

The post Responsive Typography With Sass Maps appeared first on Smashing Magazine.

Categories: Others Tags:

Freebie: Responsive Sports Icon Set (40×4 Icons, AI, CSH, PNG, PSD, Sketch, SVG)

June 13th, 2015 No comments
Responsive Sports Icon Set

Free icons are always great to spice up our work with minimal effort. Today, we’re happy to release a free set of 40 sports icons in four styles and six formats. Each icon in this set comes in four styles: flat colored, glyph, Google material palette, and line strokes. Additionally, the line icons morph into four responsive sizes, comprising a unique icon at every breakpoint. That way, details adjust according to size while preserving the icons’ style and identity.

All icons are included in six formats: AI, PSD, SVG, PNG, CSH and Sketch. We’ve optimized the SVG format, producing really light and small-size files that will enhance your websites’ and applications’ performance. Additionally, it makes creating web fonts a lot easier. The set is still in its infancy with plenty more icons currently in production. It’s licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

1

Every icon in the set is named and archived in the appropriate folder, which makes finding icons very easy.

2
Colored style. (View large version3)
Responsive Sports Icon Set4
Filled glyphs. (View large version5)
Responsive Sports Icon Set6
Responsive line stroke. (View large version7)
Responsive Sports Icon Set8
Google material palette. (View large version9)

Download The Icon Set For Free!

Insights From The Designer

“With responsive design thriving, the need for scalable iconography increases. After all, adaptability is key. Simply scaling an icon won’t do: details get lost during downsizing, lines disconnect or overlap, and minimalistic icons don’t always suffice when enlarged. We decided to create an extensive library of responsive icons, or in other words, icons that adapt. Whether your design needs detailed flat-style icons, glyphs or simple line strokes of any size, we’ve got them all.”

We sincerely thank Ramy Wafaa12 for the design — we appreciate your time and effort, and please do keep up the brilliant work.

(ml, og)

Footnotes

  1. 1 http://www.smashingmagazine.com/wp-content/uploads/2015/06/icon-styles1-opt.png
  2. 2 http://www.smashingmagazine.com/wp-content/uploads/2015/06/colored-opt.png
  3. 3 http://www.smashingmagazine.com/wp-content/uploads/2015/06/colored-opt.png
  4. 4 http://www.smashingmagazine.com/wp-content/uploads/2015/06/glyph-opt.png
  5. 5 http://www.smashingmagazine.com/wp-content/uploads/2015/06/glyph-opt.png
  6. 6 http://www.smashingmagazine.com/wp-content/uploads/2015/06/responsive-line-icons-opt.png
  7. 7 http://www.smashingmagazine.com/wp-content/uploads/2015/06/responsive-line-icons-opt.png
  8. 8 http://www.smashingmagazine.com/wp-content/uploads/2015/06/material-opt.png
  9. 9 http://www.smashingmagazine.com/wp-content/uploads/2015/06/material-opt.png
  10. 10 http://provide.smashingmagazine.com/responsive-sports-icon-set/responsive-sports-icon-set.zip
  11. 11 http://www.iconsresponsive.com/
  12. 12 https://twitter.com/flatroundicons

The post Freebie: Responsive Sports Icon Set (40×4 Icons, AI, CSH, PNG, PSD, Sketch, SVG) appeared first on Smashing Magazine.

Categories: Others Tags:

Why and How We Migrated Babylon.js to Azure: CORS, Gzip, and IndexedDB

June 11th, 2015 No comments

You’re working for a startup. Suddenly that hard year of coding is paying off – with success comes more growth and demand for your web app to scale. In this tutorial, I want to humbly use one of our more recent “success stories” around our WebGL open-source gaming framework, babylon.js and its website: babylonjs.com. We’ve been excited to see so many web gaming devs try it out. But to keep up with the demand, we knew we needed a new web hosting solution. While this tutorial focused on Microsoft Azure, many of the concepts apply to various solutions you might prefer. We’re going to see also the various optimizations we’ve put in place to limit as much as possible the output bandwidth from our servers to your browser. Introduction Babylon.js is a personal project we’ve been working on for over a year now. As it’s a personal (i.e. our time and money), we’ve hosted the website, textures & 3d scenes on a relatively cheap hosting solution using a small, dedicated Windows/IIS machine. The project started in France, but was quickly under the radar of several 3D and web specialists around the globe as well as some gaming studios. We were […]

Categories: Others Tags:

Dealing With Redundant, Out-Of-Date and Trivial (ROT) Content

June 11th, 2015 No comments
Large sites like microsoft.com have millions of pages, many of which are ROT.

Publishing content to the web is expensive. I know what you’re thinking: no, it’s not; it costs nothing, especially when compared to print. And you would be right, from a certain point of view. The problem is that publishing is cheap. This seduces you, encouraging you to put more and more content online.

In fact, the cost is so cheap that many organizations let almost any employee put content online. They install a content management system and give staff free rein. Even those who enforce standards for consistency and accuracy still produce a lot of content. After all, somebody might find that piece of content useful.

But you will soon discover hidden costs. Costs that are crippling larger organizations.

The Hidden Cost Of Content

Although there is a cost to producing this content in the first place, there is a far higher cost in maintaining that content over time. It costs huge amounts of money and time to review content on a regular basis and ensure it is still accurate and relevant. This is especially true when some organizations have millions of pages online. In the end, many companies just give up. We often forget content once we hit “Publish”, unless it is a particularly prominent piece.

The hidden cost is not just limited to maintenance. It also impacts the usability of sites. With so much content online it can be hard for users to find content that is useful. For example, at one point microsoft.com had over 10 million pages online1, over 3 million of which a user had never visited. This clutter only succeeded in damaging findability and lowering customer satisfaction.

2
Large sites like microsoft.com have millions of pages, many of which are ROT. (View large version3)

But there is a final hidden cost: a cost to an organization’s ability to evolve its site over time. Take, for example, a company that wants to make its site responsive. In theory we can do this with some updates to the CSS or, at most, the templates in the content management system. But when you have millions of pages produced over an extended period of time this is often not the case. Content producers will have marked up content in a variety of different ways making design changes hard.

Many digital teams give up on the idea. Instead, they redesign the core site and leave legacy content alone. This leads to a fragmented experience as users struggle to adapt to the changing user interface across the site.

How can this enormous challenge be overcome? It begins by addressing the ROT on your site.

What Is ROT?

ROT stands for redundant, out-of-date and trivial. Much of the content on our sites falls into one of these three categories. ROT is a huge problem on many larger websites.

The European Commission recently undertook a content audit. It removed a staggering 80% of its online content because it was ROT. This created a better user experience while reducing costs. It also allowed them to evolve their digital offering.

4
The European Commission removed a staggering 80% of its content. (View large version5)

Much of the content that organizations put online is trivial. It caters to edge cases that most users do not care about. Yet it takes time and effort to maintain and makes finding important content harder.

But even important content can become ROT. As an organization evolves so should its online content. Yet it often doesn’t and that content becomes redundant.

Finally, a lot of the content we put online has a limited shelf life. Events that have come and gone, or news stories from years ago that clutter up search results.

Sooner or later this ROT will need addressing. But how do you do that?

Start From A Clean Slate

Often the best solution is to start from scratch. On larger sites even auditing what content you have online is too expensive in both time and money. It is not uncommon for digital teams to be unaware of all the content that exists. In such situations the best they can do is migrate content. But that is like putting lipstick on a pig. It doesn’t address the underlying issue.

Instead, many organizations are starting from scratch. They are beginning with user needs by identifying top tasks and producing content around those. This allows them to migrate only the relevant content, often rewriting it as they go.

This is exactly the approach adopted by the Government Digital Service6 when working on the beta for GOV.UK. They translated the content on existing government websites into a user need, such as “I need to report a lost passport.” They then passed these needs through a series of criteria to judge whether that need was worth addressing. They tracked this process through a small web app they created called the Needotron7.

Unfortunately, in many organizations the digital team would be unable to take such radical action. They often do not own the content and so do not have the authority to remove it. I could argue that this shouldn’t be the case but I doubt that would make any difference. Instead, let’s look at some options that might be more possible.

Removing The Redundant

The first area to target is redundant content: products or services that no longer exist; campaigns that have long since ended. These are easy to spot, appearing in navigation, search results and analytics.

Addressing this content is often easy, too. Nobody much cares for redundant content and so you won’t hear many complaints when you remove it. What is more, there is less of it so the digital team has the capacity to deal with it.

Out-of-date content is a trickier challenge.

Dealing With The Out-Of-Date

Out-of-date content is harder to spot. It is that phone number that no longer works, or a reference to a member of staff who has left; it is that event buried in the events calendar, or a mention of a product that no longer exists. You can find this kind of content deep within pages or subsections on a site.

There is also a lot more out-of-date content than completely redundant content, too much for the digital team to track down. This is going to involve a degree of automation and the cooperation of content producers across the company.

One approach is to archive content such as news and events after an agreed amount of time. This removes the content from site search and navigation, but makes it available for those that want it. But what about content with a less obvious end date?

The best approach is to establish a policy to enforce content review. This will make sure content producers check their content to ensure it is not out of date. For example, this might need people to log in to the content management system once every six months to check their content.

If out-of-date content cannot be removed it should at least be marked as out of date.8
If out-of-date content cannot be removed it should at least be marked as out of date. (View large version9)

Of course, there will need to be consequences if they don’t do that, otherwise they just won’t bother. This will involve removing the offending page from the main navigation and search results as well as adding a banner to the page; the banner will warn users that the content maybe out of date, a technique used by the BBC in the past.

It would be easy enough to use the last modified date in your CMS to trigger an email telling the person who created the page to check it. If that person has left the company and nobody else is supporting the content it needs flagging anyway.

You could go further and notify content producers if their content fails to reach a traffic threshold or a minimum dwell time. The possibilities are limitless. But be careful you don’t chase a false metric. Traffic and dwell time are not always the best measure for all content.

But What About Trivial Content?

The hardest type of ROT to deal with is trivial content, because you will face disagreement over what is trivial. What you consider an edge case might be business critical to another member of staff.

To address this problem you need a set of criteria to assess the value of content. These should be:

  • Analytics
  • Users’ top tasks
  • Business objectives

First, you should look at the amount of traffic hitting a page. Falling below a certain traffic threshold should flag it for review. This does not mean that the content is trivial, it is just a way you can find content that might be trivial.

Next, you should compare that content with a list of top tasks10 you know users want to complete. You do have a list like that, don’t you? This should be the major criterion for judging if something is trivial. If the content is not on that list then we have a potential problem.

Of course, a task might not be particularly important to the majority of users and yet be business critical to the organization. Only a fraction of users of a site go on to buy, but this is still considered an important action!

This means it is important to ask whether a piece of content supports one of the top two or three objectives of the business. Supporting some minor business goal is not enough.

If the content fails to meet any of these criteria then it is trivial. But that doesn’t mean you should remove it. Some content needs to be online for regulatory reasons or is of crucial importance to a small but valid user group.

The key here is to ensure it does not interfere with the findability of more important content. You could make it only accessible via search or maybe remove it from the main site completely. It is often much easier to point people at a specific page via social media, email or other communication channel. Easier than expecting them to navigate through the hierarchy of a site to find an obscure page.

A Difficult But Important Challenge

Dealing with ROT can feel intimidating on a large site. In fact, it can feel impossible. But it isn’t. Often it is just a matter of putting some processes in place to deal with it.

I would encourage you not to dismiss the clean slate approach out of hand. You may think it will be out of the question in your organization but you may well be wrong. If you create a prototype that gives people a sense of how much better the site could be, they are often more amenable than you think. Now is not the time to be timid. Now is the time to confront the ROT.

(ml, og)

Footnotes

  1. 1 http://www.gerrymcgovern.com/new-thinking/removing-poor-quality-content-increases-customer-satisfaction
  2. 2 http://www.smashingmagazine.com/wp-content/uploads/2015/06/01-microsoft-opt.jpg
  3. 3 http://www.smashingmagazine.com/wp-content/uploads/2015/06/01-microsoft-opt.jpg
  4. 4 http://www.smashingmagazine.com/wp-content/uploads/2015/06/02-EC-opt.jpg
  5. 5 http://www.smashingmagazine.com/wp-content/uploads/2015/06/02-EC-opt.jpg
  6. 6 https://gds.blog.gov.uk/2011/09/19/introducing-the-needotron-working-out-the-shape-of-the-product/
  7. 7 https://github.com/gds-attic/need-o-tron
  8. 8 http://www.smashingmagazine.com/wp-content/uploads/2015/06/03-ofd-opt.jpg
  9. 9 http://www.smashingmagazine.com/wp-content/uploads/2015/06/03-ofd-opt.jpg
  10. 10 http://alistapart.com/article/what-really-matters-focusing-on-top-tasks

The post Dealing With Redundant, Out-Of-Date and Trivial (ROT) Content appeared first on Smashing Magazine.

Categories: Others Tags:

10 Fresh Free WordPress Plugins (Edition: June 2015)

June 10th, 2015 No comments

Plugins are the icing on the WordPress cake. Can you imagine your favorite CMS without them? These helpful tools have become essential in many areas and save us a lot of developing time. In our little series, we picked out once again the latest and most interesting plugins covering a wide range of use cases. As an appetizer, we have a Jetpack Clone that keeps your data private. Don’t believe it? Keep on reading! 1. Slimpack Slimpack is a light version of Jetpack that doesn’t hurt your data privacy. It provides several modules you might know from Jetpack without having to be connected to WordPress.com, so your data won’t be transmitted there. All you need to do is deactivate your existing installation of Jetpack and activate Slimpack. Your settings should be saved. There are no external scripts anymore. The plugin comes with the necessary JavaScript. Slimpack supports the following modules: Carousels Contact Form Custom CSS Custom Content Types Infinite Scroll Gravatar Hovercards Beautiful Math (LaTeX) Markdown Omnisearch Sharing (Sharedaddy) Shortcode Embeds Site Icon Site Verification Widget Visibility Widgets All other modules require a connection to WordPress.com or might be implemented in a future version. Developer: Tunghsiao Liu (a.k.a. Sparanoid) Continuous development: […]

Categories: Others Tags:

¡Mañana, Mañana! SmashingConf Barcelona 2015: An Event Where Anything Could Happen

June 9th, 2015 No comments
SmashingConf Barcelona 2015

Well, almost anything. We can’t guarantee space shuttle journeys or going back in time, but we will put on a truly intimate, valuable and memorable event. Taking place on October 20–21, SmashingConf Barcelona1 will be packed with smart solutions ranging from front-end to design to UX — and a few delightful surprises along the way. To the tickets.2

3

$399 / €294 + VAT

Get the tickets ?34224Hurry up! Only 23 early-birds left.

About The Conference

We strongly believe that trends don’t matter, but techniques do. With SmashingConf Barcelona, we keep exploring interesting problems, smart solutions and lessons learned from actual projects. We highlight what has worked and what has failed — and why — so you know what to do next time you encounter similar problems. That’s what makes up the spirit of our conferences, and we take pride in it.

5
This year, the SmashingConf flags will be blowing in the breeze from the Palau de la Música Catalana — an architectural jewel of Catalan Modernism. (Large view6. Image credit: Pug Girl7).

It’s not just about techniques, though. We will also explore how designers and developers work, design and build, how they approach problems strategically and what workflows they use to find solutions. You’ll learn what warning signs and common stumbling blocks to watch out for, how to deal with them, and how to prevent them from happening. Think of it as a little playbook with handy rules of thumb: it doesn’t get more practical than this.

We also want to hear your stories and your experiences. That’s why we also invite you to speak at the meet-up before the event. Taking place on October 20–21, it’s an event that might keep you on your toes for quite some time. Seriously.

First Speakers

We’ve invited speakers passionate about their work and who’ve learned a thing or two from their own experiences. We’re happy to welcome the first confirmed speakers:

First confirmed speakers: Anna Debenham and Chris Coyier8
The first confirmed speakers: Anna Debenham and Chris Coyier.

SmashingConf Barcelona 201521

Get the tickets ?34224Only 23 early-birds left.

Hands-On Workshops

We’ll also host hands-on full-day workshops23 with practical techniques and strategies taught by practitioners in the industry. So if you are going to attend the conference, why not attend a workshop as well? In fact, if you book a workshop too, you’ll save €75 off the conference + workshop ticket price.

Park Güell Barcelona24
If you’ve always wanted to visit Barcelona, or just happen to live around the corner (well, more or less), this is just the opportunity you’ve been waiting for. Image credit: Pixabay25. Grab your ticket.26

Why This Conference Could Be For You

The conference could be for you just because it’s very practical. You’ll learn many valuable techniques for your workflow, and you’ll meet fantastic, like-minded people from the industry. You’ll learn:

  1. Strategies for building fast responsive websites,
  2. Clever psychological techniques for smarter interfaces,
  3. Techniques and guidelines for better mobile UX,
  4. Guidelines for scalable CSS and JavaScript,
  5. Gotchas and rules of thumb when using SVG and Flexbox,
  6. How to optimize for performance and content delivery,
  7. Techniques for better lettering and interaction design,
  8. Mistakes and lessons learned from real-life projects,
  9. Responsive design patterns for future-ready websites,
  10. Avoid generic solutions with designs that exhibit soul and personality.

Download “Convince Your Boss” PDF

We also prepared a neat Convince Your Boss (PDF)27 (0.15 Mb) that you can use to convince your boss, colleagues, friends, neighbors and total strangers to join you or send you to the event. We know that you will not be disappointed. Still not good enough? Well, tweet us @smashingconf — we can be quite convincing, too!

SmashingConf Barcelona: Convince Your Boss PDF28
“Eight reasons why you should send your incredibly hard-working, deserving employee to the SmashingConf” (PDF29). Quite self-explanatory, really.

We also welcome sponsors to help us create a truly unique, unforgettable conference experience. And you can be a major part of it. We have quite a number of attractive and creative sponsorship options (PDF)30 for you, and we’d love to adjust them to your needs. So if you’re interested, please contact us via hello@smashingconf.com31 — we’d love for you to be involved!

See You In Barcelona!

We are looking forward to seeing you in Barcelona, and who knows, perhaps months after the conference is over, you’ll look back at your workflow, at your projects and at this very article realizing that it wasn’t far off after all. After all, it’s a conference where anything can happen, right? See you there!

No, Mahna Mahna32 has nothing to do with Mañana33 or the SmashingConf, but it might help you guess what to expect in Barcelona once you are there.

Get the tickets ?34224Hurry up! Only 23 early-birds left.

Footnotes

  1. 1 http://smashingconf.com/barcelona-2015/
  2. 2 http://smashingconf.com/barcelona-2015/registration
  3. 3 http://smashingconf.com/barcelona-2015/
  4. 4 http://smashingconf.com/barcelona-2015/registration
  5. 5 http://smashingconf.com/barcelona-2015/locations
  6. 6 http://www.smashingmagazine.com/wp-content/uploads/2015/06/Palau-de-la-Musica-Catalana-1500px-v3.jpg
  7. 7 https://www.flickr.com/photos/pug_girl/13994908202/in/photolist-njFyCJ-bq36iq-4WHBtw-dtxLEh-4wmW2V-4pnX6M-hKVc5D-Bb28r-ejJ4RL-4LsYKZ-cf1QDu-4gCDKA-nrunMx-8G53MV-5YNe48-iLX1mz-4zqoqf-4a9NNa-4xjVTb-a2TYd8-4wjdFY-5Dav9v-4yWU4t-iUAUYc-4HzZ9z-5Ce8YM-5CBdq4-diNSS9-9iRopP-Eqi4S-cVopvd-dhXbP2-sfMKL-5tJSAJ-BC732-u9h7F-BJoza-5qRYRf-4vydzf-e1mxNZ-3f6uDL-GxA2h-5p3ck8-5brvhC-drVLnU-9f4wVb-gCPgU-GM12c-GjVxY-hyDPkm
  8. 8 http://barcelona.smashingconf.com
  9. 9 https://twitter.com/anna_debenham
  10. 10 https://twitter.com/chriscoyier
  11. 11 https://twitter.com/mrjoe
  12. 12 https://twitter.com/leisa
  13. 13 https://twitter.com/brendandawes
  14. 14 https://twitter.com/jina
  15. 15 https://twitter.com/hellogeri
  16. 16 https://twitter.com/zomigi
  17. 17 https://twitter.com/patrickhamann
  18. 18 https://twitter.com/ebrunborg
  19. 19 https://twitter.com/seblester
  20. 20 https://twitter.com/Malarkey
  21. 21 http://smashingconf.com/barcelona-2015/registration
  22. 22 http://smashingconf.com/barcelona-2015/registration
  23. 23 http://smashingconf.com/barcelona-2015/workshops
  24. 24 http://smashingconf.com/barcelona-2015/locations
  25. 25 http://pixabay.com/en/parc-g%C3%BCell-gaud%C3%AD-spain-barcelona-411936/
  26. 26 http://smashingconf.com/barcelona-2015/registration
  27. 27 http://smashingconf.com/pdf/8-reasons-for-Smashing-Conference-Barcelona-2015.pdf
  28. 28 http://smashingconf.com/pdf/8-reasons-for-Smashing-Conference-Barcelona-2015.pdf
  29. 29 http://smashingconf.com/pdf/8-reasons-for-Smashing-Conference-Barcelona-2015.pdf
  30. 30 http://smashingconf.com/pdf/SmashingConf-Sponsorship-2015.pdf
  31. 31 mailto:hello@smashingconf.com
  32. 32 https://www.youtube.com/watch?v=8N_tupPBtWQ&t=5s
  33. 33 http://en.wiktionary.org/wiki/ma%C3%B1ana
  34. 34 http://smashingconf.com/barcelona-2015/registration

The post ¡Mañana, Mañana! SmashingConf Barcelona 2015: An Event Where Anything Could Happen appeared first on Smashing Magazine.

Categories: Others Tags:

¡Mañana, Mañana! SmashingConf Barcelona 2015: An Event Where Anything Could Happen

June 9th, 2015 No comments
SmashingConf Barcelona 2015

Well, almost anything. We can’t guarantee space shuttle journeys or going back in time, but we will put on a truly intimate, valuable and memorable event. Taking place on October 20–21, SmashingConf Barcelona1 will be packed with smart solutions ranging from front-end to design to UX — and a few delightful surprises along the way. To the tickets.2

3

$399 / €294 + VAT

Get the tickets ?3527224Hurry up! Only 49 early-birds left.

About The Conference

We strongly believe that trends don’t matter, but techniques do. With SmashingConf Barcelona, we keep exploring interesting problems, smart solutions and lessons learned from actual projects. We highlight what has worked and what has failed — and why — so you know what to do next time you encounter similar problems. That’s what makes up the spirit of our conferences, and we take pride in it.

5
This year, the SmashingConf flags will be blowing in the breeze from the Palau de la Música Catalana — an architectural jewel of Catalan Modernism. (Large view6. Image credit: Pug Girl7).

It’s not just about techniques, though. We will also explore how designers and developers work, design and build, how they approach problems strategically and what workflows they use to find solutions. You’ll learn what warning signs and common stumbling blocks to watch out for, how to deal with them, and how to prevent them from happening. Think of it as a little playbook with handy rules of thumb: it doesn’t get more practical than this.

We also want to hear your stories and your experiences. That’s why we also invite you to speak at the meet-up before the event. Taking place on October 20–21, it’s an event that might keep you on your toes for quite some time. Seriously.

First Speakers

We’ve invited speakers passionate about their work and who’ve learned a thing or two from their own experiences. We’re happy to welcome the first confirmed speakers:

First confirmed speakers: Anna Debenham and Chris Coyier8
The first confirmed speakers: Anna Debenham and Chris Coyier.

SmashingConf Barcelona 201521

Get the tickets ?3527224Only 49 early-birds left.

Hands-On Workshops

We’ll also host hands-on full-day workshops23 with practical techniques and strategies taught by practitioners in the industry. So if you are going to attend the conference, why not attend a workshop as well? In fact, if you book a workshop too, you’ll save €75 off the conference + workshop ticket price.

Park Güell Barcelona24
If you’ve always wanted to visit Barcelona, or just happen to live around the corner (well, more or less), this is just the opportunity you’ve been waiting for. Image credit: Pixabay25. Grab your ticket.26

Why This Conference Could Be For You

The conference could be for you just because it’s very practical. You’ll learn many valuable techniques for your workflow, and you’ll meet fantastic, like-minded people from the industry. You’ll learn:

  1. Strategies for building fast responsive websites,
  2. Clever psychological techniques for smarter interfaces,
  3. Techniques and guidelines for better mobile UX,
  4. Guidelines for scalable CSS and JavaScript,
  5. Gotchas and rules of thumb when using SVG and Flexbox,
  6. How to optimize for performance and content delivery,
  7. Techniques for better lettering and interaction design,
  8. Mistakes and lessons learned from real-life projects,
  9. Responsive design patterns for future-ready websites,
  10. Avoid generic solutions with designs that exhibit soul and personality.
Get the tickets ?3527224Hurry up! Only 49 early-birds left.

Download “Convince Your Boss” PDF

We also prepared a neat Convince Your Boss (PDF)28 (0.15 Mb) that you can use to convince your boss, colleagues, friends, neighbors and total strangers to join you or send you to the event. We know that you will not be disappointed. Still not good enough? Well, tweet us @smashingconf — we can be quite convincing, too!

SmashingConf Barcelona: Convince Your Boss PDF29
“Eight reasons why you should send your incredibly hard-working, deserving employee to the SmashingConf” (PDF30). Quite self-explanatory, really.

We also welcome sponsors to help us create a truly unique, unforgettable conference experience. And you can be a major part of it. We have quite a number of attractive and creative sponsorship options (PDF)31 for you, and we’d love to adjust them to your needs. So if you’re interested, please contact us via hello@smashingconf.com32 — we’d love for you to be involved!

See You In Barcelona!

We are looking forward to seeing you in Barcelona, and who knows, perhaps months after the conference is over, you’ll look back at your workflow, at your projects and at this very article realizing that it wasn’t far off after all. After all, it’s a conference where anything can happen, right? See you there!

No, Mahna Mahna33 has nothing to do with Mañana34 or the SmashingConf, but it might help you guess what to expect in Barcelona once you are there.

Get the tickets ?3527224Hurry up! Only 49 early-birds left.

Footnotes

  1. 1 http://smashingconf.com/barcelona-2015/
  2. 2 http://smashingconf.com/barcelona-2015/registration
  3. 3 http://smashingconf.com/barcelona-2015/
  4. 4 http://smashingconf.com/barcelona-2015/registration
  5. 5 http://smashingconf.com/barcelona-2015/locations
  6. 6 http://www.smashingmagazine.com/wp-content/uploads/2015/06/Palau-de-la-Musica-Catalana-1500px-v3.jpg
  7. 7 https://www.flickr.com/photos/pug_girl/13994908202/in/photolist-njFyCJ-bq36iq-4WHBtw-dtxLEh-4wmW2V-4pnX6M-hKVc5D-Bb28r-ejJ4RL-4LsYKZ-cf1QDu-4gCDKA-nrunMx-8G53MV-5YNe48-iLX1mz-4zqoqf-4a9NNa-4xjVTb-a2TYd8-4wjdFY-5Dav9v-4yWU4t-iUAUYc-4HzZ9z-5Ce8YM-5CBdq4-diNSS9-9iRopP-Eqi4S-cVopvd-dhXbP2-sfMKL-5tJSAJ-BC732-u9h7F-BJoza-5qRYRf-4vydzf-e1mxNZ-3f6uDL-GxA2h-5p3ck8-5brvhC-drVLnU-9f4wVb-gCPgU-GM12c-GjVxY-hyDPkm
  8. 8 http://barcelona.smashingconf.com
  9. 9 https://twitter.com/anna_debenham
  10. 10 https://twitter.com/chriscoyier
  11. 11 https://twitter.com/mrjoe
  12. 12 https://twitter.com/leisa
  13. 13 https://twitter.com/brendandawes
  14. 14 https://twitter.com/jina
  15. 15 https://twitter.com/hellogeri
  16. 16 https://twitter.com/zomigi
  17. 17 https://twitter.com/patrickhamann
  18. 18 https://twitter.com/ebrunborg
  19. 19 https://twitter.com/seblester
  20. 20 https://twitter.com/Malarkey
  21. 21 http://smashingconf.com/barcelona-2015/registration
  22. 22 http://smashingconf.com/barcelona-2015/registration
  23. 23 http://smashingconf.com/barcelona-2015/workshops
  24. 24 http://smashingconf.com/barcelona-2015/locations
  25. 25 http://pixabay.com/en/parc-g%C3%BCell-gaud%C3%AD-spain-barcelona-411936/
  26. 26 http://smashingconf.com/barcelona-2015/registration
  27. 27 http://smashingconf.com/barcelona-2015/registration
  28. 28 http://smashingconf.com/pdf/8-reasons-for-Smashing-Conference-Barcelona-2015.pdf
  29. 29 http://smashingconf.com/pdf/8-reasons-for-Smashing-Conference-Barcelona-2015.pdf
  30. 30 http://smashingconf.com/pdf/8-reasons-for-Smashing-Conference-Barcelona-2015.pdf
  31. 31 http://smashingconf.com/pdf/SmashingConf-Sponsorship-2015.pdf
  32. 32 mailto:hello@smashingconf.com
  33. 33 https://www.youtube.com/watch?v=8N_tupPBtWQ&t=5s
  34. 34 http://en.wiktionary.org/wiki/ma%C3%B1ana
  35. 35 http://smashingconf.com/barcelona-2015/registration

The post ¡Mañana, Mañana! SmashingConf Barcelona 2015: An Event Where Anything Could Happen appeared first on Smashing Magazine.

Categories: Others Tags:

Practical Techniques On Designing Animation

June 8th, 2015 No comments
Storyboard sketch

Animation, like any other facet of the web, must1be2designed3. As web developers, we think about the effects of typography, layout, interaction, and shifting viewports, but when incorporating animation we have another factor to consider: time.

It’s not just an extra aspect to consider, either: it increases the complexity of each of the aforementioned parameters exponentially. Rather than viewing this as a heavy mass of ideas, we can bake animation into the core of our user experience process to create dazzling, exciting, and engaging work that pushes boundaries and collectively elevates the medium of the web.

“Form” And Function

Forms are one of the most important UI elements on a site. A contact form is the gateway to your company, the clearest way to capture lead generation and, therefore, revenue. The harder you make the form experience for the user, the more money you will lose. If you’re not thinking about the usability of this component, you do your company, and the user, an injustice.

The submit button is the most powerful part of a form. We usually address this by using strong colors to draw attention to it. But what happens when that submit button is activated? Does the user have to wait, not knowing if the form worked, or are they provided with instant feedback? A simple submit button, even with a push animation, sometimes cannot achieve this goal, while a button with a loader could keep the viewer engaged while data is loaded in the background. This helps with the anticipation part of the animation, but what happens when the form input is actually submitted? You should aim to give the customer a feedback rush when the process is completed. A success page is fine, but a smooth transition into something that snaps into view could give them better visual response and produce small but delightful results.

Because of the importance of the form, everyone needs to be able to access it, including screen readers. In this case, we should be using either CSS or SVG; if we use , we should ensure there is navigable content by incorporating something like React.js4, a JavaScript library that offers a virtual DOM.

See the Pen Form with Animation That Assists in UX5 by Sarah Drasner (@sdras463828256) on CodePen473929267.

Form with animation-assisted UX. Press the button to see the animation.

These are the aspects we considered to put together the pieces of that one animation:

  • What information are you trying to convey that can’t be done with UI design alone?
  • What information does the user need to understand where they are going?
  • What is the most subtle effect (in this case, for the push of the button)?
  • What feelings are you trying to evoke (anticipation while the button loads, positive feedback when the form is successful, etc.)?
  • Are the pieces of the UI accessible to screen readers?

What A Character

The first thing to realize when you’re designing for animation is that everything is a character. This may seem counterintuitive at first, but there are a few things to consider. Usability experts know that the key to creating a seamlessly designed system is the ability to empathize with the user:

  • What is the quickest way to get to this information?
  • What would make me feel at ease?
  • What is the most compelling element I could place to direct attention?

We understand that we are inviting people into a situation they are unfamiliar with; a situation built from HTML elements rather than bricks and mortar, but a created façade all the same. A/B testing consistently shows that a viewer’s attention can meander away in fractions of a second8. Designers and developers need to create experiences that are as compelling as possible without causing tension in these interstitial moments.

How does animation help in this scenario? By holding the attention of the audience. Animation creates a character out of our interfaces. Observe how this Stripe checkout illustrates invalid user data, for instance (from this really well-written article9):

(Image credit: Michaël Villar)

Not only does it allow you to understand that something went wrong, it does so without a big warning in red, which might cause anxiety in the user. Credit card payments are already an anxiety-ridden process… why make them more so?

In contrast, this input form becomes a character, one that we’re more likely to sympathize with, engage with, and one that can command our attention better than a simple static box.

Like actors, designers must know a character inside and out. Actors don’t just know what their lines are: they know what time their character gets up in the morning and their favorite flavor of ice cream. They might never use this information in performance, but they have a complete sense of who their character is, so that they can respond to any situation in a way that presents a believable, holistic portrait. When done well, we identify with this representation completely, and the artifice of the performance disappears. This is exactly what branding strives to accomplish.

The impact of Google’s material design, in my mind, lies less with the design language itself, and more with that it was the first major industry example of a company that incorporated animation guidelines10 in its branding. For the first time, people started thinking about the style of animation as a functioning entity that had a voice, one that must be designed in cohesion with everything else.

If our company is a well-trusted, stoic insurance company, the character of any animation on our site is going to be less flamboyant and more formal, and we’ll tend to use linear eases rather than bounce or elastic motion. But with branding that’s more comfortable and friendly, like Zendesk or MailChimp, the form should follow the branding and accordingly have more lively animation, while still communicating effectively; something with the charm of Chris Gannon’s loaders11 appear to be simple, yet exciting.

If you think back to the first time you cried because of a fictional character, it was likely animated. In Aarron Walters’ “Designing for Emotion”12, he discusses how emotion is tied to the limbic system: we are more likely to remember something that becomes part of our emotional memory. Chapter 7 of his book goes into hard numbers of how much return on investment (ROI) can be gained by focusing on the impact of user’s emotive experiences.

If you have a static piece of content that looks like a Photoshop mockup on a webpage, the viewer engagement stops where your CSS does. Animation allows us to show rather than tell, a vital tactic considering users typically only scan body content13. It allows customers to attach themselves to our UIs personally, for their needs to unfold before them. If done correctly, the potential for positive engagement is staggering.

There’s been a lot of talk lately about perceived user experience. Sometimes you can’t get around the time it takes to load something (though you should try your best). If you give your users nothing to do in the interim, you will likely lose them. Animation’s special sauce is that it can move users from one interface to another, and entertain them while they wait. Seconds that previously felt arduous and had them tabbing away to Facebook are now engaging and feel seamless. This is probably the single most important reason to use animation in UX.

Elevate This

Animation has to be taught to live on its own as a substantial part of the development process. We can accomplish this in several ways:

  • Animation has to be designed just as the rest of the page is: with mock-ups, color palettes, storyboards with wireframes, and its own composition.
  • Your design process should follow the same logical structure as your code.
  • Animation must move toward being informative, appealing to rational actions and guiding users’ attention.
  • Animation should follow branding guidelines, be part of a living style guide, and appeal to users’ emotions.
  • We shouldn’t reinvent the wheel. Animation has existed outside of the web for ages. (Yes, you can go watch Toy Story for “research” purposes.)

Because animation is so engaging, it’s easy to overdo it, but not everything on the screen needs to be animated. You don’t start a war with the secret weapon. Animation can be a way of signifying the end or beginning of something, as well as directing your attention. With animation that is purposeful and planned according to viewer engagement, performance budget, and branding, we can elevate the medium. Val Head discusses this very clearly when she writes about invisible animation14. Good animation should not seem out of place, nor be an afterthought.

Check out Oleg Solomka’s Bubble layout demo15 (it’s nice with the sound on): The animation is delightful enough to keep you engaged as you navigate, but gets out of your way while you’re reading the content. Keep in mind that the purpose of these tutorials is to showcase a particular method; in the wild, the implementation can even be toned down slightly to accommodate a professional, yet engaging effect.

Time Is Money

Animation is often considered an afterthought in the corporate development process. We make mock-ups, pass them, develop them, and at the very end add an animation on top. Because of this, animated components can often look like what they are: whipped cream fluff. It is only when animation is baked into the substance of layout, storyboard, and development processes that it holds meaning as a performant and substantial piece of a web experience.

Studios like Active Theory16 get away with engaging their clients with this conversation earlier in the design process because of their own branding. “We make bold things for the big guys.” Clients who seek out Active Theory’s work know they are paying for a blockbuster, knock-your-socks-off kind of web experience. This isn’t going to be the case 98% of the time.

How do we change this? Again, the way that we usually do. In salesman’s terms that means “increase the ROI.” In developer terms it means elevating the product to something that’s useful, that increases engagement, or has a positive experience, and then it won’t be a waste of time or money. For more information on how to communicate with clients effectively, consult Mike Monteiro’s “You’re my Favorite Client”17 or “Design is a Job”18.

Before we gleefully skip into the sunset and make everything on the page move, we need to commit to some action items to make an effective change.

The first is communicating effectively with our clients. This does not mean railroading them into adhering to our beliefs. It means explaining the possible gains, assuring them we will A/B test19 our interfaces and produce measurable results, and meeting them halfway on time allowances.

Consider the form we worked on earlier. Show your client prototypes of two forms (you can show them other people’s work as an example if you don’t have the time to build; CodePen has a great design patterns20 resource). One form will present itself without feedback on the button, progress, or a snappy success UX; the other will incorporate all the lessons we’ve learned here. Or better yet, use A/B testing (usability testing with different variants) to prove the form with animation to be a more effective tool. Solid numbers are always better than subjective opinion, which can be shaped around trends, ignorance, or past bad experiences due to poor implementation.

Once we get the go-ahead, we can plan. You have performance budget allowances in new categories now:

  • time
  • experience
  • performance budget
  • color
  • composition
  • user’s time

This may seem overly complicated, but you should be able to give yourself basic ballpark figures within seconds for each of these, and they should be considered before you move on. Do you lack experience? Then you’ll need a little more time, as with most things. Do you currently have a lot of other heavy assets on the page? You will need to be very careful loading up images, SVGs, scripts, and animation libraries. Does your site already have a very rich palette? You’ll need to reuse those color variables. Are older browsers a consideration? Then you’ll likely have to use libraries like GreenSock21, which have a much deeper cross-browser backwards compatibility than even native animation rendering22 on SVGs, while providing polyfills and fallbacks23 for any vector graphics.

The Good Stuff

Now that I’ve worried your project to a smooth curve, we can get to the fun stuff. Everyone has different ways of working and nothing is gospel, but here are a few key points that I have discovered after working at this for a while.

Pay attention to how stuff moves. This one might make you laugh, it’s so simple. But how often do you really watch water pour into a glass? What makes one person’s gait so recognizable?

Most people start with a ball bouncing, and that’s a great exercise, partly because the simplicity can show you character, weight and dynamism. Here are two balls bouncing: can you guess which is hard and which is soft?

See the Pen Bouncing ball demo24 by Sarah Drasner (@sdras463828256) on CodePen473929267.

Bouncing ball demo.

How do you know which is which? First, there is the elasticity of the objects. One stays consistently round, the other is manipulated based on the impact. What else? Well, there’s the movement: one seems fairly rigid, and the other is more playful. Though they have the same timing, their physical motions imply different masses. Easing functions convey the density of the object.

Note also that even though they have the same timing, the easing function is used in such a way that they have different keyframes. If I placed a strobe light on these balls, you would see them at different places during the same time period. This concept has a term in old cel animation: spacing.

See the Pen Bouncing ball demo27 by Sarah Drasner (@sdras463828256) on CodePen473929267.

Bouncing ball demo.

This can also come in the form of the motion of secondary elements. If someone shakes a glass, how is the water inside affected? When someone kicks a rock, how does the rock express the force of impact? Here’s a great example of elemental motion design30.

As Hans Bacher discusses in Dream Worlds, when animators were working on “Beauty and the Beast” they were flown to London and France to observe the styles of these places. You might not have this kind of budget (but if you do, take me with you!); luckily the internet has plenty of visual, historical and spatial information for you to work from.

Follow your interests. If you have any leeway at all in the content of the animation, use that to your advantage. Genuine interest and enthusiasm is easily conveyed. You’re more likely to follow a project through if the content excites you.

Backwards To Move Forwards

Before you begin animating, you must storyboard. Storyboarding is a very important part of the process because it allows you to work modularly in your code, in scenes. It allows you to plan out timing. And it allows you to work backwards: to draw something and then slowly unveil it.

A common misconception is that your storyboards have to look like polished comics. I think that’s often why people don’t want to make them: they’re scared of drawing; they’re scared that their work has to look perfect; they’re scared of spending all of their creative energy in the planning process, and they just want to start working on the project. I understand this completely. To avoid all of it, I encourage you to forget the platonic ideal of a storyboard.

I was a scientific illustrator for the Field Museum of Natural History31 and Stanford. I was a professor of painting at a college. Can I draw? You betcha. Here’s what my storyboards look like:

32
Storyboard sketch. (View large version33)

Am I ashamed of this? Not in the slightest. That storyboard took me 45 seconds and allowed me to understand and edit up front what I was going to spend many days making. Without it, my workflow would have doubled. Storyboards exist behind the scenes and are for personal communication. I’m not saying you can’t create beautiful standalone work like Rachel Nabors34, just that you don’t have to.

Let’s revisit our discussion about user empathy. You can accomplish this with storyboarding all a user’s interaction from beginning to end, as well. Consider this article, “Story Map”35. A story map takes you through the entire experience of visiting your site and becoming a customer from beginning to end. It’s a storyboard with muscle, one where you see the whole picture of their visit and therefore can make purposeful decisions based on desired direction and outcome.

It’s probably not new to hear about storyboards in animation: little comics that allow animators to break down tasks scene by scene. But did you know that there are also color scripts? Just as you design color and overall branding for your site, animators at Disney and other animation houses create color scripts that work well with the colors of their main characters and inform the scene. You should be doing this, too.

This means you should spend some time on Adobe Kuler36 crafting color swatches. It takes a small amount of time at the start, but saves buckets while you’re working. We all know color is meaningful. Working with it is made so much easier in CSS with preprocessor variables: use them to your advantage.

See the Pen
When you’re an introvert…37 by Sarah Drasner (@sdras463828256) on CodePen473929267.

The animation above uses two different color palettes: one for the “before” scene and one for the “after”. The palettes are related: they have to be, to create seamless events. Just as the animation palette for a large company must correspond to the company’s branding and the rest of the site. But the cool tones in the first scene in relation to the warmer hues of the second inform the viewer. They are part of the story. And if they weren’t planned before I started drawing, the animation wouldn’t have made any sense.

Design And Code Workflows

It’s clear that storyboarding pays off in the design and planning stages of animations, but it can easily reap rewards in your code architecture, too. If your code reflects the same logical organization you use for your design, you gain all the benefits of clear, legible structure; and the more it mirrors the design process, the easier it is to share implementations between the two.

Functions should be named according to the scene you are in: even “sceneOne” will do. Similarly named variables look nice and neat, but they’ll trip up you and your team in the long run, particularly as an animation gets more complex. Naming form elements as the characters they portray, and setting up your code in a clear way that mirrors your design means less worrying about scoping problems, and more concrete divisions between JavaScript and Sass variables and assignments. It’s also particularly helpful at the end when you have to go back in and adjust something: you will easily find your place again and know what follows.

Murder Your Darlings

It’s an old quotation40, but it’s true. You’re never going to get things right the first time, so relax and make some mistakes. Don’t get too precious about it. Whether you’re a designer, a developer, or both, chances are you weren’t as good in the beginning as you are now and it took a lot of ugly stuff in the middle to get there. That’s OK. This means trying different types of animation on for size, and messing all of those up, too. Did you learn JavaScript by only programming one kind of interaction using only one library? No. Did you learn to design only using one composition? I certainly hope not. The same principles apply to learning to animate as well.

41
The difference between novice and experienced programmers. (View large version42)

Perhaps you could have both graphics editor and text editor open at the same time. You need to move fluidly back and forth between them. Don’t be scared of retracing your steps, adding things, or editing. You will need ready access to your tooling, like optimization43, so you can move quickly through it. The further you put these things away from you, the lazier and sloppier you will become about adjusting, editing, and re-creating images or code as you need them. And you will need them.

You’re going to have to redo your timing and easing a hundred times. Personally, I find it easiest when I’m using a tool like GreenSock’s TimelineLite44 to move pieces around. It lets you stack, stagger, overlap timings, and even animate full scenes

See the Pen
Understanding GSAP Timeline45 by Sarah Drasner (@sdras463828256) on CodePen473929267.

CSS is great for very small UI interactions; in fact I really recommend it for those use cases because you don’t need to load other resources. However, if you have more than two animations set on an object, you should probably consider switching over to GSAP. The ability to move a little forward or behind the last animation, or set them to fire at the same time no matter what, is too powerful a tool to avoid, particularly when you need to rehearse and readjust the timing. CSS makes you recalculate all of your values if something in your animation changes at the start, but the GSAP timeline does not.

This wouldn’t be such a major issue if timing weren’t so vital. Have you ever noticed how some comics have frames where there is no action? They create the illusion of a pause, and your brain treats it as such. Timing is vital for comedy, for whimsy, but also for animation UI design that appears seamless or natural.

Just like all design, the parts of an animation that look simple and effortless are sometimes the hardest to accomplish.

The Sky’s The Limit

The Illusion of Life48 begins with one of my all-time favorite quotes from Walt Disney: “Animation can explain whatever the mind of man can conceive.” This quotation is so spot on because it really is animation’s strength: you can make anything happen. You can create and destroy worlds, excite or condemn.

That said, there is a lot to consider. Animation will never be more than empty calories if we don’t design it the way we do other aspects of UX. As with our other tooling, it is a loss leader: we’ll spend more time getting the variables and parameters set up at the start. But with that preparation, the character will tell us which road it would like to take during implementation, even if the character is a UI or branding.

Animation on the web has the potential to revolutionize our small bright box. We can go even further than traditional animation because we can accept user feedback and input. With these tools we can throw away the soul-destroying, bleak, dark engagements that govern things like airline ticket purchases. We can help people by unfolding scenes like a choose-your-own-adventure that can feel fluid, interesting, and intuitive.

(ds, ml, og)

Footnotes

  1. 1 http://www.smashingmagazine.com/2015/05/14/functional-ux-design-animations/
  2. 2 http://www.smashingmagazine.com/2014/11/18/the-state-of-animation-2014/
  3. 3 http://www.smashingmagazine.com/2011/09/14/the-guide-to-css-animation-principles-and-examples/
  4. 4 https://facebook.github.io/react/
  5. 5 ‘http://codepen.io/sdras/pen/LEorev/’
  6. 6 ‘http://codepen.io/sdras’
  7. 7 ‘http://codepen.io’
  8. 8 http://www.statisticbrain.com/attention-span-statistics/
  9. 9 https://medium.com/@michaelvillar/improve-the-payment-experience-with-animations-3d1b0a9b810e
  10. 10 http://www.google.com/design/spec/what-is-material/material-properties.html#
  11. 11 http://tympanus.net/codrops/2015/03/25/jump-loader-animation-svg-gsap/
  12. 12 http://abookapart.com/products/designing-for-emotion
  13. 13 http://uxmyths.com/post/647473628/myth-people-read-on-the-web
  14. 14 http://valhead.com/2015/05/07/getting-to-invisible/
  15. 15 http://codepen.io/sol0mka/full/yNOage/
  16. 16 http://activetheory.net/
  17. 17 http://abookapart.com/products/youre-my-favorite-client
  18. 18 http://abookapart.com/products/design-is-a-job
  19. 19 http://www.smashingmagazine.com/2010/06/24/the-ultimate-guide-to-a-b-testing/
  20. 20 http://codepen.io/patterns
  21. 21 https://greensock.com/
  22. 22 https://css-tricks.com/svg-animation-on-css-transforms/
  23. 23 http://sarasoueidan.com/blog/svg-picture/
  24. 24 ‘http://codepen.io/sdras/pen/zxJWBJ/’
  25. 25 ‘http://codepen.io/sdras’
  26. 26 ‘http://codepen.io’
  27. 27 ‘http://codepen.io/sdras/pen/MYdQor/’
  28. 28 ‘http://codepen.io/sdras’
  29. 29 ‘http://codepen.io’
  30. 30 https://dribbble.com/shots/2000039-Foam-Explosion
  31. 31 http://www.fieldmuseum.org/
  32. 32 http://www.smashingmagazine.com/wp-content/uploads/2015/05/02-storyboard-opt.jpg
  33. 33 http://www.smashingmagazine.com/wp-content/uploads/2015/05/02-storyboard-opt.jpg
  34. 34 http://rachelnabors.com/css-amv-talk/storyboard/index.html
  35. 35 https://medium.com/design-story/story-map-3cc64033128e
  36. 36 https://color.adobe.com/
  37. 37 ‘http://codepen.io/sdras/pen/dPqRmP/’
  38. 38 ‘http://codepen.io/sdras’
  39. 39 ‘http://codepen.io’
  40. 40 http://en.wikipedia.org/wiki/Arthur_Quiller-Couch
  41. 41 http://www.smashingmagazine.com/wp-content/uploads/2015/05/03-programming-humor-opt.jpg
  42. 42 http://www.smashingmagazine.com/wp-content/uploads/2015/05/03-programming-humor-opt.jpg
  43. 43 https://jakearchibald.github.io/svgomg/
  44. 44 http://greensock.com/timelinelite
  45. 45 ‘http://codepen.io/sdras/pen/ByEWON/’
  46. 46 ‘http://codepen.io/sdras’
  47. 47 ‘http://codepen.io’
  48. 48 http://www.amazon.com/The-Illusion-Life-Disney-Animation/dp/0786860707

The post Practical Techniques On Designing Animation appeared first on Smashing Magazine.

Categories: Others Tags: