Monday, January 11, 2016

3 Facets of Great UX Design: Part 1

Design is a pretty subjective thing and you’ll hear differing opinions from one person to the next. There are the three essential elements for great UX design, as I see it. These elements can be used to guide every UX project you undertake, and they’re not hard to remember.

I’m talking about usefulness, usability, and delight.

In this series of 3 articles we’ll examine these facets, and how they are applied to real life products in case studies from Buffer, UXPin and Duolingo.

Let’s get started.

Usefulness

The first and most important requirement: your product must be useful. It doesn’t matter how usable or desirable it is if it doesn’t serve some purpose in your user’s life. Some studies suggest that usefulness is 1.5 times as important as usability.

Google+

The post 3 Facets of Great UX Design: Part 1 appeared first on UX Mastery.


by Jerry Cao via UX Mastery

5 Content Marketing Hacks That Will Not Anger Google Or Your Viewers


Want great marketing content at a reasonable price? Would you also like it for free? Would you also like your Google SEO (Search Engine Optimization) to flower and produce fruit? Here are some content marketing cheats you may use to get high quality content at a great price, and free content that is search engine friendly.

by Guest Author via Digital Information World

6 Bizarre but Amazing Native Campaigns (And Why They Worked)

Native advertising—or advertising that matches the appearance, content, and style of a publication’s organic media—can go horribly, horribly wrong.

And while there are many reasons for this, one of the most common is that the brand and publication don’t fit. When their audiences or focuses aren’t aligned, the resulting content can be confusing, awkward, or just be plain weird. For an example, read up on The Atlantic’s disastrous collaboration with The Church of Scientology.

Nonetheless, some platforms have managed to create some awesome campaigns with rather unexpected partners. Check out these six exceptions to the rule.

1. Refinery29 and Abercrombie & Fitch

Talk about strange bedfellows. Refinery29 is a darling of the media industry, while Abercrombie & Fitch has seen its stock go down… and down… and down.

To recapture some of its previous customers (and acquire new ones,) A&F paired up with R29 for “The Great Escape,” a campaign that included a $4,500 exotic getaway sweepstakes and destination-themed packing lists.

Not only did the prizes and cool lists attract women who might’ve been turned off by the Abercrombie brand, but the fun, smart copy also helps make the troubled clothing brand seem cool again.

For example:

Between rent, yoga classes, and some attempt at a social life (yes, you would like to split a bottle of wine with that), saving big bucks for an out-of-this-world vacation is more “yeah, right” than “you bet.”

2. Thrillist and American Greetings

Young, trendy, in-the-know “dudes” read Thrillist to discover the newest thing in food, drink, and clothing. They’re not exactly American Greetings’ core customer base.

To get millennial men to buy greeting cards (rather than just receive them from their grandmothers), Thrillist and American Greetings teamed up on “The World’s First Digital Taco Launches With a Real Taco Love-Fest.”

This short article highlights American Greetings’ latest venture, an Apple Watch app called justWink that lets people send cartoon tacos to their friends. The accompanying video showed the card company handing out free TexMex in Times Square to celebrate the launch.

The theme, faux-serious tone, and non-stop cultural references are highly effective in transforming American Greetings from a sappy cliché-generator to a cool, relevant company.

3. PureWow and Dick’s Sporting Goods

PureWow is a digital publication all about women. With verticals dedicated to beauty, style, fashion, home, health, food, and more, it’s managed to build a reader base of four million.

Meanwhile, Dick’s Sporting Goods has captured 10% of the national sporting goods industry. It’s widespread, but no one would call it “sexy” or female-oriented.

Peak Performance, the pair’s custom content series, highlighted all the trendy athletic gear Dick’s has for women while also providing workout tips, social media tie-in, and Spotify playlists. The campaign was sleek and sexy, generating lots of positive brand awareness for Dick’s s without damaging PureWow’s credibility.

Continue reading %6 Bizarre but Amazing Native Campaigns (And Why They Worked)%


by Aja Frost via SitePoint

Getting Started with Underscore.js

This article was peer reviewed by Agbonghama Collins and Ryan Chenkie. Thanks to all of SitePoint’s peer reviewers for making SitePoint content the best it can be!

Underscore.js is a JavaScript library, written by Jeremy Ashkenas, that provides functional utilities for a variety of use cases that we, as developers, may come across when facing a web project.

It makes for code which is easier to read:

_.isEmpty({});
// true

It makes for code which is easier to write:

_.flatten([[0, 1], [2, 3], [4, 5]]);
// [0, 1, 2, 3, 4, 5]

It offers features for which there isn’t a 1:1 native method:

_.range(5);
// [0, 1, 2, 3, 4]

It can even be used as a template engine in its own right:

_.template('<p><%= text %></p>', {text: 'SitePoint Rocks!'});
// <p>SitePoint Rocks!</p>

Underscore is a lightweight library (just 5.7kb, minified and Gzipped) and is used by a variety of big name projects, such as:

Now let’s get more specific and start diving into its main capabilities.

The Good Parts

In this tutorial, I’m going to highlight three of Underscore’s most common methods:

I’ll explain how they are used individually, then tie them together to build a demo application that you can find at the end of the tutorial. As ever, the code for this demo is available on Github.

If you wish to follow along with the examples, you’ll need to grab a copy of the library, for example from your favourite CDN:

<script src="http://ift.tt/1PK5SGd"></script>

And if you find yourself in need of help along the way, or you’re just curious to find out more, don’t forget that Underscore’s documentation is extensive. It also has a large and active community, meaning help is easy to find.

_.each: Write Readable Loops

There is not a single project that does not have something similar to this snippet at some point in the code:

var artists = ['Pharrel Williams', 'Led Zeppelin', 'Rolling Stones'];

for(var i = 0; i < artists.length; i++) {
  console.log('artist: ' + artists[i]);
}

Underscore enables you to write equivalent code, using a syntax that is more readable:

var artists = ['Pharrel Williams', 'Led Zeppelin', 'Rolling Stones'];

_.each(artists, function(artist, index, artists) {
  console.log('artist: ' + artist);
});

Neat, eh? _.each() takes two parameters:

  • The array (or object) to iterate over.
  • A callback function.

For each element in our array _.each() will invoke the callback function (referred to in the documentation as iteratee). Inside the callback we get access to a further three parameters:

  • The value of the array for the current iteration index (artist). For example, for the snippet above we’d get “Pharrel Williams” for the first iteration.
  • The number of the current iteration (index), which in our case will vary from 0 to 2.
  • The array that we are iterating through (artists).

As you can see the code is more readable and we can access the individual elements in the array without the need for artists[i], as we saw in the example that used a for loop.

See the Pen _.each by SitePoint (@SitePoint) on CodePen.

Next, we’ll see how the templating engine behaves.

_.template(): Intuitive and Straightforward

Since the rise of the Single Page Application, having a reliable frontend templating engine has become a fundamental need for our working stack.

Underscore provides a templating engine, which, for those familiar with languages such as PHP, or Ruby on Rails, will seem quite familiar.

Carrying on from our previous snippet, we’ll demonstrate how _.template() works. We’ll do this by adding a couple of lines to our code as shown below:

var artists = ['Led Zeppelin', 'ACDC', 'Rolling Stones'],
    artistTemplate = _.template('<li><%= artist %></li>'),
    content = '';

_.each(artists, function(artist, index, artists) {
  content += artistTemplate({
    artist: artist
  });
});

var container = document.createElement('ol');
container.innerHTML = content;
document.body.appendChild(container);

Here we are invoking the _.template() function with a string argument, which includes some data inside delimiters (<%= artist %>). When invoked in this way, _.template() returns a function which we can use again and again.

We can invoke our new function using artistTemplate(), passing it an object literal as an argument. This will return the string we originally passed to _.template(), substituting any object properties which correspond to the template’s free variables. In our case <%= artist %> will be substituted by the value in the artist attribute of the object.

Underscore’s templating engine, does not only allow for single values to be replaced, but also the execution of scripts inside the template itself. With a single modification, we can make our snippet even more powerful.

var artists = ['Led Zeppelin', 'ACDC', 'Rolling Stones'],
    artistTemplate = _.template(
      '<% _.each(artists, function(artist, index, artists) { %>' +
        '<li><%= artist %></li>' +
      '<% }); %>'
    ),
    content = artistTemplate({
      artists: artists
    });

var container = document.createElement('ol');
container.innerHTML = content;
document.body.appendChild(container);

We have incorporated our call to _.each() into the string that represents our template, which leads us to change the way the template is invoked. Since we are now iterating inside the _.template() function, we can pass the complete artists array to artistTemplate() (previously we were passing the individual artists). The output of this code will be the same as in the previous example.

When we want _.template() to evaluate JavaScript code, we just have to surround our code between <% %> instead of <%= %>.

Since invoking a template generated by _.template works just as invoking a function, we can take our snippet one step further and have one template called from inside another, by using the <% %> tags. This way, we can make reusable templates, since we can have a different wrapper template for our artists list and just invoke the template for each of the items it contains.

See the Pen _.template() by SitePoint (@SitePoint) on CodePen.

Finally, let’s take a look at the _.filter() function.

Continue reading %Getting Started with Underscore.js%


by Martín Martínez via SitePoint

How to Build Your Own AI Assistant Using Api.ai

The world of artificially intelligent assistants is growing — Siri, Cortana, Alexa, Ok Google, Facebook M — all the big players in technology have their own. However, many developers do not realise that it is quite easy to build your own AI assistant too! You can customise it to your own needs, your own IoT connected […]

Continue reading %How to Build Your Own AI Assistant Using Api.ai%


by Patrick Catanzariti via SitePoint

Altius

Altius

'Altius' is a multi-purpose HTML template that includes 2 slick One Page layout options for a restaurant and a photography portfolio. Both templates are designed with a fully responsive mixed-block interface. The restaurant template (featured below) features a modern design with a smart pricing menu layout, slideshow pop-up gallery, customer testimonials and a booking form. The photography portfolio template fills a big screen well and features a big image portfolio with filter, awards, client logos and a blog feed section that can link out. Good work this by Pixelosaur theme shop.

by Rob Hope via One Page Love

Material Photo Gallery

Material Photo Gallery is a javascript photo gallery plugin inspired by Google Photos.

There are three main processess that take place in this plugin. The first is detecting when the images are loaded, the second is the layout of the images, and the third is the animation of the images.


by via jQuery-Plugins.net RSS Feed