Monday, October 31, 2016

3 Suggestions for Identifying and Catering to Your Blog Audience

3 Suggestions for Identifying and Catering to Your Blog Audience

Sure, a blog can boost your search engine rankings and raise the credibility of your site, but if the content doesn’t reach the right people, you’ll have a very difficult time generating conversions from your hard work. That’s why it’s very important to understand who your blog audience is and what content they like to read.

You might have already defined your target audience and have been catering content to them for some time, but that doesn’t mean you should stop thinking about who your readers are. You can’t continue using the same target market profile you created three years ago and expect to get the same results. You want growth, and that requires tweaking your strategy.

Take some time this month to really evaluate your current target market. Is your blog reaching everyone who can benefit from your words? Does your content solve the problems your readers currently have? If you can’t truthfully give positive answers to each of these questions, then it’s time to refine your audience. As you think about your target readers, here are some things to consider.

by Larry Alton via Digital Information World

Web Design Weekly #257

Headlines

Giving Back to the Design Community

A look into why a small team of Facebook designers build resources for designers. (medium.com)

The difference between CSS variables and preprocessor variables (css-tricks.com)

Sponsor Web Design Weekly and reach over 22,000 passionate designers and developers

Articles

Thoughtful CSS Architecture

Nathan Rambeck provides an introduction to CSS architecture that will help you design a structure for your code so your projects and teams can grow without becoming an unmanageable mess. (seesparkbox.com)

Async functions – making promises friendly

Async functions allow you to write promise-based code as if it were synchronous, but without blocking the main thread. They make your asynchronous code less “clever” and more readable. Jake Archibald explains. (developers.google.com)

How To Brutalize The Web

This article examines the characteristics of Web Brutalism, why it can be effective and what it takes to design a Brutalist website. (medium.com)

CSS Flexbox Explained by Road Tripping Across the Country

Can’t say I have ever read an explanation about a technology quite like this but it seems to work and is entertaining. (freecodecamp.com)

On Style Maintenance

Sarah Drasner looks at two different programming paradigms (functional and object-oriented) and considers how they apply to CSS and the concept of authoring versus maintenance. (css-tricks.com)

Tools / Resources

JavaScript Stack from Scratch

Step-by-step tutorial to build a modern JavaScript stack from scratch. (github.com)

CSS Icon

An icon set made with pure css code that has no dependencies. (cssicon.space)

Pure CSS Content Filter (csswizardry.com)

React Router 3.0 is out (github.com)

New In Chrome 54 (developers.google.com)

Inspiration

Etsy Design

The talented Etsy Design team has started blogging and sharing their experiences. With only a few articles so far I’m sure it will become a great source of inspiration in the not too distant future. (medium.com)

How we deploy at npm (blog.npmjs.org)

Angry Birds in Pure CSS (codepen.io)

Jobs

Senior JavaScript Engineer at Marvel

We’re looking for a Senior JavaScript Developer to join our team building the next generation of design and prototyping software. (marvelapp.com)

Interactive Designer at Radish Lab

We’re looking for a dynamite interactive designer to join our growing team. The ideal candidate is efficient, has an eye for detail and user experience, excellent references, and some noteworthy portfolio examples to share with us. (radishlab.com)

Need to find passionate developers or designers? Why not advertise in the next newsletter

Last but not least…

Skyrocket your Sketch workflow (blog.quadro.me)

The post Web Design Weekly #257 appeared first on Web Design Weekly.


by Jake Bresnehan via Web Design Weekly

2FA in Laravel with Google Authenticator – Get Secure!

vector image with lock and digital symbols, indicating security

There are many ways an attacker can get a user's password. It could happen through social engineering, key logging, or by some other nefarious means. Passwords alone are not enough to protect users from their accounts being compromised, specially if an attacker somehow has their credentials.

To get around this serious shortcoming, the concept of two-factor authentication (2FA) was created. A password, which is one factor, is not enough to authenticate a user. The notion is that a user must use something they have (first factor) and something they know (second factor) to authenticate. A password is something the user knows. For the "something they have" part, many things can be used. Some solutions use biometrics, like a fingerprint, voice pattern recognition, or iris scan. These are relatively expensive solutions. Other second factor authentication methods include one-time passwords (OTP). These are passwords that are generated on a device and good for use once. Typically there are two types of OTPs; counter based, and time based. Using 2FA is better than just username and password alone because it is very difficult for an attacker to procure both the password and the second factor.

In this tutorial, we will use Laravel and Google Authenticator to demonstrate how to implement 2FA in a webapp. Google Authenticator is just one implementation of the Time-Based One-Time Password (TOTP) algorithm, RFC 6238. This industry standard is used in a lot of various 2FA solutions. There are some advantages of Google Authenticator over some other 2FA solutions on the market. After you download the app to your smartphone, you can use it offline. Many other 2FA solutions need to be connected somehow; they send an SMS message, or a push notification, or even call the smartphone with a recorded message. This is not good for users that might be in a location where their phone is cut off from the outside world, like in an office located in the basement of a building.

How the TOTP works is that the server generates a secret key. This secret key is then passed to the user. The secret key is used in combination with the current Unix timestamp to generate a six digit number, using a keyed-hash message authentication code (HMAC) based algorithm. This six digit number is the OTP. It changes every 30 seconds.

Continue reading %2FA in Laravel with Google Authenticator – Get Secure!%


by Christopher Thomas via SitePoint

Ask the UXperts: Dark Patterns and Persuasive Design — with Ben Tollady

Design is often about balancing the needs of the user and the business.  A big part of what we want to do is help people to achieve what they want or need – usually avoiding pain or seeking reward. There are many ways of doing this, some of which walk fairly close to (or cross) the moral and ethical line. We call those ‘dark patterns’.

Persuasive design is generally recognised as a more ethical alternative — it involves using elements of cognitive psychology in order to change user behaviour through techniques like persuasion, social influence and the formation of habits.

Next up in our Slack channel, Ben Tollady of Thirst Studios will share advice around designing ethically and where the boundaries of ethical and responsible design lie.

The Details

Meet Ben Tollady

 

Ben TolladyBen Tollady is an accomplished designer, having worked in the field of user experience and interaction design for over a decade in both the UK and Australia.

His background in industrial design translates directly to his work in interaction design for the web and he firmly believes that successful interaction design revolves around simplicity and relevance.

Ben has taught UX at organisations such as Education Services Australia and currently resides upon the faculty for Tractor Design School as an industry mentor for its UX program.

How to Ask Your Questions

If you can’t make the live session but have questions, we’d love to collect them ahead of time and we’ll ask Ben on your behalf. You can submit your questions here. We’ll publish the responses (along with the full transcript) in the days following the session.

Here are a few questions to get you thinking:

  1. Can you give us some real life examples of dark patterns or unethical design in action?
  2. What are some of the cognitive biases that we can take advantage of as designers to be more persuasive in our work?
  3. Do you think it is our job as designers to call our other people if we believe they are designing irresponsibly?

How does Ask the UXperts work?

These sessions run for approximately an hour and best of all, they don’t cost a cent. We use a dedicated public Slack channel. That means that there is no audio or video, but a full transcript will be posted up on here in the days following the session.

The post Ask the UXperts: Dark Patterns and Persuasive Design — with Ben Tollady appeared first on UX Mastery.


by Sarah Hawk via UX Mastery

Adventures in Aurelia: Creating a Custom PDF Viewer

Handling PDF files within a web application has always been painful to deal with. If you're lucky, your users only need to download the file. Sometimes, though, your users need more. In the past, I've been lucky, but this time, our users needed our application to display a PDF document so they could save metadata related to each individual page. Previously, one might have accomplished this with an expensive PDF plugin, such as Adobe Reader, running inside the browser. However, with some time and experimentation, I found a better way to integrate PDF viewers in a web application. Today, we'll take a look at how we can simplify PDF handling, using Aurelia and PDF.js.

Overview: The Goal

Our goal, today, is to build a PDF viewer component in Aurelia that allows two-way data flow between the viewer and our application. We have three main requirements.

  1. We want the user to be able to load the document, scroll, and zoom in and out, with decent performance.
  2. We want to be able to two-way-bind viewer properties (such as the current page, and the current zoom level) to properties in our application.
  3. We want this viewer to be a reusable component; we want to be able to drop multiple viewers into our application simultaneously with no conflicts and little effort.

You can find the code for this tutorial on our GitHub repo, as well as a demo of the finished code here.

Introducing PDF.js

PDF.js is a JavaScript library, written by the Mozilla Foundation. It loads PDF documents, parses the file and associated metadata, and renders page output to a DOM node (typically a <canvas> element). The default viewer included with the project powers the embedded PDF viewer in Chrome and Firefox, and can be used as a standalone page or as a resource (embedded within an iframe).

This is, admittedly, pretty cool. The problem here is that the default viewer, while it has a lot of functionality, is designed to work as a standalone web page. This means that while it can be integrated within a web application, it essentially would have to operate inside an iframe sandbox. The default viewer is designed to take configuration input through its query string, but we can't change configuration easily after the initial load, and we can't easily get info and events from the viewer. In order to integrate this with an Aurelia web application — complete with event handling and two-way binding — we need to create an Aurelia custom component.

Note: if you need a refresher on PDF.js, check out our tutorial: Custom PDF Rendering in JavaScript with Mozilla’s PDF.js

The Implementation

To accomplish our goals, we're going to create an Aurelia custom element. However, we're not going to drop the default viewer into our component. Instead, we're going to create our own viewer that hooks into the PDF.js core and viewer libraries, so that we can have maximum control over our bindable properties and our rendering. For our initial proof-of-concept, we'll start with the skeleton Aurelia application.

The boilerplate

As you can see if you follow the link above, the skeleton app has a lot of files in it, many of which we're not going to need. To make life simpler, we have prepared a stripped down version of the skeleton, to which we have added a couple of things:

  • A Gulp task to copy our PDF files to the dist folder (which Aurelia uses for bundling).
  • The PDF.js dependency has been added to package.json.
  • In the root of the app, index.html and index.css have received some initial styling.
  • Empty copies of the files we're going to be working in have been added.
  • The file src/resources/elements/pdf-document.css contains some CSS styling for the custom element.

So let's get the app up and running.

First off, ensure that gulp and jspm are installed globally:

npm install -g gulp jspm

Then clone the skeleton and cd into it.

git clone git@github.com:sitepoint-editors/aurelia-pdfjs.git -b skeleton
cd aurelia-pdfjs

Then install the necessary dependencies:

npm install
jspm install -y

Finally run gulp watch and navigate to http://localhost:9000. If everything worked as planned, you should see a welcome message.

Some more set-up

The next thing to do is to find a couple of PDFs and place them in src/documents. Name them one.pdf and two.pdf. To test our custom component to the max, it would be good if one of the PDFs were really long, for example War and Peace which can be found on the Gutenberg Project.

With the PDFs in place, open up src/app.html and src/app.js (by convention the App component is the root or the Aurelia app) and replace the code that is there with the contents of these two files: src/app.html and src/app.js. We'll not touch on these files in this tutorial, but the code is well commented.

Gulp will detect these changes automatically and you should see the UI of our app render. That's it for the setup. Now it's on with the show ...

Creating an Aurelia custom element

We want to create a drop-in component that can be used in any Aurelia view. Since an Aurelia view is just a fragment of HTML wrapped inside of an HTML5 template tag, an example might look like this:

<template>
  <require from="resources/elements/pdf-document"></require>
  <pdf-document url.bind="document.url"
                page.bind="document.pageNumber"
                lastpage.bind="document.lastpage"
                scale.bind="document.scale">
  </pdf-document>
</template>

The <pdf-document> tag is an example of a custom element. It, and its attributes (like scale and page) aren't native to HTML, but we can create this using Aurelia custom elements. Custom elements are straightforward to create, using the basic building blocks of Aurelia: Views and ViewModels. As such, we'll first scaffold our ViewModel, named pdf-document.js, like so:

// src/resources/elements/pdf-document.js

import {customElement, bindable, bindingMode} from 'aurelia-framework';

@customElement('pdf-document')

@bindable({ name: 'url' })
@bindable({ name: 'page', defaultValue: 1, defaultBindingMode: bindingMode.twoWay })
@bindable({ name: 'scale', defaultValue: 1, defaultBindingMode: bindingMode.twoWay })
@bindable({ name: 'lastpage', defaultValue: 1, defaultBindingMode: bindingMode.twoWay })

export class PdfDocument {
  constructor () {
    // Instantiate our custom element.
  }

  detached () {
    // Aurelia lifecycle method. Clean up when element is removed from the DOM.
  }

  urlChanged () {
    // React to changes to the URL attribute value.
  }

  pageChanged () {
    // React to changes to the page attribute value.
  }

  scaleChanged () {
    // React to changes to the scale attribute value.
  }

  pageHandler () {
    // Change the current page number as we scroll
  }

  renderHandler () {
    // Batch changes to the DOM and keep track of rendered pages
  }
}

The main thing to notice here is the @bindable decorator; by creating bindable properties with the configuration defaultBindingMode: bindingMode.twoWay, and by creating handler methods in our ViewModel (urlChanged, pageChanged, etc) we can monitor and react to changes to the associated attributes that we place on our custom element. This will allow us to control our PDF viewer simply by changing properties on the element.

Then, we'll create the initial view to pair with our ViewModel.

// src/resources/elements/pdf-document.html

<template>
  <require from="./pdf-document.css"></require>

  <div ref="container" class="pdf-container">
    My awesome PDF viewer.
  </div>
</template>

Integrating PDF.js

PDF.js is split into three parts. There's the core library, which handles parsing and interpreting a PDF document; the display library, which builds a usable API on top of the core layer; and finally, the web viewer plugin, which is the prebuilt web page we mentioned before. For our purposes, we'll be using the core library through the display API; we'll be building our own viewer.

Continue reading %Adventures in Aurelia: Creating a Custom PDF Viewer%


by Jedd Ahyoung via SitePoint

PrognRoll – Tiny jQuery Plugin to Show Scroll Progress Bar on Page

PrognRoll is a tiny jQuery plugin that creates scroll progress bar on the page. You can also customize the progress bar.


by via jQuery-Plugins.net RSS Feed

Editorial: Is JavaScript Always the Best Solution?

Lately, there has been a lot of discussion surrounding the role of JavaScript in modern web pages and web apps. It all seems to have kicked off with an amusing (but not entirely untrue) article entitled How it feels to learn JavaScript in 2016 in which the author expresses his concern at the fragmented state of the JavaScript ecosystem and the amount of tooling necessary to start a JavaScript project today.

In the debate that followed, there was an interesting Twitter poll that caught my eye. It asked if in 2016, it's OK to build a website that doesn't work without JavaScript. Of the 4,157 people that replied, 42% (so 1,746 people) declared that it was. Woah!

As editor of SitePoint's JavaScript channel you might expect me to be among those 42%. Well, sorry to disappoint, but I'm afraid I'm not. As my colleague Patrick recently pointed out, it all depends upon the context. Keeping an open mind as to the most accessible and most reliable method of solving a problem, will inevitably lead to the best solution. Here's a small example to illustrate the point:

Continue reading %Editorial: Is JavaScript Always the Best Solution?%


by James Hibbard via SitePoint

There Are More Virtual Reality Headsets Than You Realize!

A collage of VR headsets

Virtual reality (VR) is a bit of a hot topic at the moment! I spend a lot of time putting together a weekly newsletter all about emerging tech news like virtual reality, talking about VR at events, showing people the possibilities of VR, teaching people to build VR experiences and more. There are a lot of VR thoughts flooding this brain of mine! Throughout all that, I've come across plenty of virtual reality headsets and thought I'd share something that not a lot of people out there realize — there are many more VR headsets out there than you think... and even more on the way! Here's a look at my favorites, starting with the more commonly known ones!

Oculus Rift

[caption id="attachment_142263" align="aligncenter" width="800"]Rift Consumer Edition The Oculus Rift Consumer Edition headset[/caption]

The Oculus Rift is the VR headset that started the whole VR trend once again! Even this headset has been around for longer than a lot of people realize. It has had several developer iterations, including the Oculus Rift Development Kit 1 (DK1) released in 2013 for their Kickstarter backers and the higher resolution Oculus Rift Development Kit 2 (DK2) released in 2014, before finally releasing the Oculus Rift Consumer Edition in 2016 to many eager VR adopters around the world. There were other unreleased prototypes of the Rift in between as well, but to keep things simple, we'll stick with the ones released to developers!

The Rift itself works by being connected to a PC. It currently no longer supports Mac OS. To be honest, I don't think any of the VR headsets that will be mentioned in this article work with Mac OS. VR apps can be installed via the Oculus Store.

What's the Rift capable of in comparison to other headsets? Here's a simplified list of features which I'll use across all currently available headsets I mention in this piece:

Resolution: 1080×1200 for each eye.
Field of view: 110°
Display tech: One OLED screen for each eye.
Refresh rate: 90 Hz
Headphones: Integrated into the headset.
Seated/standing or room-scale: Most experiences are seated or standing. Extra sensors can be purchased soon (announced in October 2016) that will allow for the ability to walk around a space, however I'm not sure how many Rift games have been built for that. Largely, Oculus have been focused on VR experiences you can have standing/sitting in one place.
Controllers: Oculus Touch handheld controllers available to order since October 2016.

HTC Vive

[caption id="attachment_142265" align="aligncenter" width="800"]The HTC Vive headset with its Lighthouse sensors and controllers The HTC Vive headset with its Lighthouse sensors and controllers[/caption]

The HTC Vive isn't quite as well known outside of the tech and gaming community but it's growing in momentum that is well deserved! The Vive is a partnership between HTC and Valve, which was officially revealed in March 2015. My favorite thing about the Vive is that it comes with "Lighthouse sensors" to allow you to walk around an area of a maximum of 15x15 feet. This ability to walk around is known as "room-scale". It also comes with two handheld controllers. Because of this, a large amount of the Vive VR apps and games out there work wonderfully with full immersion — you can walk around an experience, look at it from different angles and interact with it using both hand controllers. One of my favorite VR applications, Tilt Brush, lets you draw in 3D space. You can literally draw an environment around you, look at it from all angles and (with one of the latest updates) have it react to music! It is fantastic.

Just like the Rift, the Vive works by being connected to a PC. HTC Vive games and VR experiences can be purchased from Steam or the Vive's own store called Viveport. Steam's VR experiences can also be played on other VR headsets, depending on the app's requirements (if it requires Vive controllers, for example, then the app won't likely be compatible).

Resolution: 1080×1200 for each eye.
Field of view: 110°
Display tech: One OLED screen for each eye.
Refresh rate: 90 Hz
Headphones: Requires external headphones to be plugged in.
Seated/standing or room-scale: The Vive is known especially for its room-scale capabilities!
Controllers: The Vive comes with two handheld controllers.

Sony PlayStation VR

[caption id="attachment_142268" align="aligncenter" width="800"]The PlayStation VR headset with Move Controllers and the PlayStation Camera The PlayStation VR headset with Move Controllers and the PlayStation Camera[/caption]

Many people out there don't know this is coming, but by Christmas, virtual reality is going to be in a lot of homes around the world. It works by connecting up to the PlayStation 4 and has its own slightly less advanced controllers. It is priced cheaper than the above two headsets but isn't quite as fully featured. From the sounds of it though, the games on their way for this platform just might make up for its slightly less impressive specs. Sony has a lot of partners in the game development industry. Upcoming titles like Batman: Arkham VR and Resident Evil 7 in VR sound like they'll be a lot of fun! Each game will have a different level of VR compatibility, different controller requirements... etc, which will be listed on each game box.

Resolution: 960x1080 for each eye.
Field of view: 100°
Display tech: One OLED screen split in two for each eye.
Refresh rate: Can switch between 120Hz and 90 Hz.
Headphones: Requires external headphones to be plugged in.
Seated/standing or room-scale: Sony recommends people sit for the majority of their VR experience. There is no capability for walking around like the room-scale of the Vive.
Controllers: Games may use the typical PlayStation controllers, or you can purchase one or two PlayStation Move controllers separately. They also come in a bundle with the headset. A "PS Aim Controller" is also on the way for first-person shooting games.

Google Cardboard

[caption id="attachment_142264" align="aligncenter" width="800"]A Google Cardboard headset The latest Google Cardboard headset[/caption]

The Google Cardboard headset is a portable headset that originally was indeed made of cardboard! Of all the VR headsets, this is the one most people who I've come across have tried. Rather than the headset itself doing very much, it is a container for a smartphone that runs the applications. Each VR application displays two images, one for each eye, in a splitscreen view. Those views are looked at through lenses in the Cardboard headset. These are the cheapest and easiest way to try out VR as they originally cost around $20 and can now be even cheaper! There are plenty of stores out there who have been selling relatively inexpensive Google Cardboard-compatible headsets including Aldi, Lincraft, Tesco, Walmart and Costco. This list alone could have been three times as long if I included every Google Cardboard-style headset out there today! Google Cardboard apps can be found in the Google Play store, and WebVR experiences (VR running in the smartphone browser) also are quite easy to try out on the Google Cardboard.

Continue reading %There Are More Virtual Reality Headsets Than You Realize!%


by Patrick Catanzariti via SitePoint

A Crash Course of Changes to Exception Handling in PHP 7

Exception handling saves your code in the most unusual circumstances. PHP 7 has introduced two new classes that assist a developer in handling errors with ease, and that's what we'll look at in this post. Before the introduction of these classes in PHP 7, exception error classes were written to handle the different types of errors.

Illustration of female leg stepping on rake with the word Oops in big letters, indicating pending accident

Throwable Class

Throwable is the interface from which, Exception and Error classes branch out. This particular class helps you catch any throwable errors, irrespective of whether they are an exception or an error. For example:

<?php
try {
    throw new Exception("This is an exception");
}
catch (Throwable $e) {
    echo $e->getMessage();
}

Or the newly defined ParseError:

<?php
try {
    $result = eval("2*'7'");
}
catch (Throwable $e) {
    echo $e->getMessage();
}

After executing this code, you will get a ParseError because ";" is missing inside eval().

User defined classes cannot implement Throwable directly, and must instead extend Exception which implements Throwable.

Error Class

The Error class in PHP 7 is a new type of class that handles the different errors - they are either fatal errors or type errors, and this class is only for internal PHP errors. Error is divided into four subclasses:

Continue reading %A Crash Course of Changes to Exception Handling in PHP 7%


by Ahmed Khan via SitePoint

Why people participate in UX research (and why the reasons matter)

Finding and scheduling suitable research participants is one of the biggest logistical challenges of UX research. Not to mention then getting those participants to fully engage in research activities. 

There have been many articles written about finding UX participants and ensuring they are at least representative of your users. But I’m yet to find much good discussion about the motivations for participants to take part in our research, and how that affects their participation and the research results. 

Understanding the underlying contexts, motivations, and biases when people enter a study helps plan and interpret results in the most neutral way possible.

There are many exceptions, but the most common ways to find UX research participants are to reach out to existing customers or leads, or use panels of UX tools like usertesting.com or recruiting companies. Even if you write a screener and recruit for a well-defined persona, each source results in different motivations, and can lead to varied responses to research activities.

Let’s look at each main recruiting source and some of the pros, cons, and things to be aware of while crafting your research plans.

Existing Users

People who already have a relationship with your brand can’t help but bring their preexisting impression of the company – whether positive or negative – to research sessions. Their overarching perception of your brand will sway their impressions of the product you’re investigating.

This is called the halo effect. If you generally like a brand, you’ll be primed to like everything about it. If you dislike the brand, you’ll be primed to think more negatively about every aspect you see.

Let’s say, for example, that you’ve always wanted a BMW, and hold the company in high regard. You get brought in to test a new navigation system and have trouble entering your address.

If you've always wanted to drive one of these, you might have trouble giving unibiased feedback. Photo by adel ben http://ift.tt/2dK41Jh

If you’ve always wanted to drive one of these, you might have trouble giving unbiased feedback. Image source

Your first thought may not be that the system has a usability problem. Without even realising it, you might blame yourself, thinking you made a mistake, or write it off as part of being just a prototype.

The information in front of you doesn’t match your previous expectations (a phenomenon known as cognitive dissonance). So you assign the trouble elsewhere, downplay the importance of the issue, or focus your attention on the aspects of the experience that you like (what’s called confirmation bias). That means as a UX research participant, you’ve failed to give a lot of really important information without even knowing it.

A user’s experience with an overall brand also plays into their motivation to participate in a test. If a person frequently uses a product, they may have a vested interest in seeing the service improve and/or vouching for specific changes or improvements. If they like the product or have a good relationship with someone who works there, they may participate because they want to help out. On the other hand, if they’ve had negative experiences, they may look at a research session as a chance to vent or find an inside connection to get things changed.

Special note: If you work on enterprise tools and/or your users are internal, you’re likely to experience exaggerated effects of both the halo effect and confirmation bias, as well as battling politics and ulterior motives. You can’t avoid this, but it’s good to have a heads up.

Panel members

Participants who actively sign up for a research panel know they’ll be compensated for their time when they participate, and are more likely to view responding as a job.

The downside of panels is you don't know as much about them - including if they're just in it for the money. Photo by http://ift.tt/2eekUdc

The downside of panels is you don’t know as much about them – including if they’re just in it for the money. Image source

Many panels allow researchers to “rate” participants, so respondents know that if they give poor quality feedback, they could lose opportunities. The upside of this is that they are the most likely group to show up to sessions as scheduled and respond appropriately and consistently in longitudinal studies. Several studies have shown that monetary incentives increase participation rates.

The downside is that they may view their participation as only a job. They may not be invested in your product or may want to fudge their way into being seen as a representative user.

We’ve all heard of the professional user research participant, who will “ frequently supplement their income by participating in user research… and say and do whatever it takes to get into a study.” Writing effective screeners can help prevent some of those participants from partaking, but even the most qualified panel respondent is more likely to be motivated by money over altruism or intrinsic interest in the product.

So how can you make the most of your user research?

Now that we’ve looked at some of the issues, let’s take a look at the steps you can take to get the best possible engagement and data from research sessions. We have tools at our disposal, regardless of the source of our users.

Offer compensation (in a way that participants want to receive it)

Remember that participating in a study is essentially a social exchangePeople need to feel they at least come out even. Money, of course, is one of the easiest benefits to provide. 

Studies show that monetary incentives, including receiving a fixed amount of cash, being entered into a lottery for a prize, and charitable donations on a participant’s behalf, can make respondents more likely to participate in research. Besides the obvious benefit of getting paid, compensating participants shows you value their time and input.

Furthermore, giving participants an incentive of any kind can help spark the social construct around the reciprocity principle. Essentially, if you give something (anything) to someone, they will feel compelled to do something in return. This can be especially powerful, especially for longitudinal studies. Anecdotally, I’ve found I get the best response rates when I give about a third of an incentive after successful setup of a longitudinal study and the rest of the incentive upon completion.

Get creative with cash incentives - try a lottery or donation to a charity.

Get creative with cash incentives – try a lottery or donation to a charity.

When choosing compensation, be aware that different types of monetary incentives will be most effective for different types of studies and different types of people. People who have strong inclinations toward self-direction, learning new things, or risk-taking respond better to lottery-type incentives than fixed amounts. People who value close social relations and betterment of the group over oneself prefer money given to a charity in their honour.

So think about the type of characteristics your target persona has and consider whether you can shift (or at least experiment with shifting!) the type of incentive you offer. Think carefully about offering a discount to your service as motivation. This can sway people too far and they might feel uncomfortable saying anything negative.

Also be mindful of the amount of incentive you provide. You want to provide an amount that demonstrates you appropriately value their time without breaking the budget. For instance, I’ve paid doctors much more to participate in a study than general e-commerce shoppers and typically pay participants of in-person or ethnographic studies much more than respondents to remote sessions.

Help participants see the importance of their feedback

To tip the social exchange cost/benefit ratio even more, give people context about why their help is useful and what you’ll do with the information. People like to know the feedback they give isn’t just going into a corporate vacuum, never to be seen again.

You can do this simply by introducing the topic at the beginning of a session – something as simple as, “we’re talking about x today because we’ve noticed some issues and would like to make improvements.” Though be careful, because there are times that it makes sense not to give too much away at the beginning of a session.

I’ve also found that people love hearing about changes we’ve made based on their feedback, especially with long term customers or internal users. It’s not always possible to share, but if you can, highlight specific study periods and lessons learned in release notes or even press releases. Participants appreciate it, and are more likely to take part again, or encourage others to do the same.

Create expectations through group labels

This last one is a bit tricky, but several studies show that people are more likely to adopt behaviours based on external labels if they are relatively positive. One study showed that when researchers labelled a random group of people as politically active, they were 15% more likely to vote, and several studies have shown that people tend to like to belong to groups or follow social norms.

My educated guess is that labelling people sets an expectation they’ll behave a certain way. If they don’t follow through, they start to experience the same kind of cognitive dissonance as when you find an issue with a product you love. You can subtly shift language to let people know you expect them to follow through – for example, tell them they’re in the group most likely to respond.

Switch it up when you can

When you know how people can be swayed based on the way you recruit, you can take steps to minimise bias in your results. As you can see, different sources of users and incentives vary the amount and quality of participation. When possible, try to use different types of recruiting methods and experiment with compensation to maximise your results.

What are some of the ways you reduce bias from people taking part in UX research? Let us know in the comments!

The post Why people participate in UX research (and why the reasons matter) appeared first on UX Mastery.


by Amanda Stockwell via UX Mastery

Build a Messaging System with Rails and ActionCable

In the past few months, I've received many questions about Mailboxer and therefore decided to explain how to create a custom messaging system for Rails. Of course, this system will not provide all of the features Mailboxer has, but it will be more than enough for many application. When you fully understanding how this system works, it'll be much easier to further enhance it.

This article is going to be divided into two parts:

  • The first part will cover preparations, associations setup, and the creation of controllers and views. We will also add support for Emoji. By the end of this part, you will have a working messaging system.
  • The second part will explain how to utilize ActionCable to implement a real-time messaging and notification system. ActionCable is probably the most anticipated feature of Rails 5 and I already covered it some time ago. On top of that, we will also implement "user is online" functionality.

Continue reading %Build a Messaging System with Rails and ActionCable%


by Ilya Bodrov-Krukowski via SitePoint

AtoZ CSS Screencast: Vertical-Alignment in CSS

Vertical centering is a firm favorite of designers - for both print and digital media.

But aligning things vertically with CSS is not the easiest thing to do.

This issue is made worse in a world of multiple devices and responsive design as we need our elements to be flexible in height - which can make calculating their vertical center quick tricky.

In this episode we’ll learn all about:

  • The vertical-align property and how and when it works
  • A method for vertical aligning an element with a known height
  • And finally one approach for vertically centering elements with variable height.

vertical-align

The vertical-align property only affects elements with their display set to inline, inline-block or table-cell.

It takes a length, percentage or keyword value.

Lengths and percentages align the baseline of the element at that given distance above the baseline of its parent.

Continue reading %AtoZ CSS Screencast: Vertical-Alignment in CSS%


by Guy Routledge via SitePoint

CAMPER FW16

For FW16's gender-morphing campaign, Convoy built an interactive website that immerse the users through the campaign's universe!
by via Awwwards - Sites of the day

How to Reach More Local Customers With Facebook

ag-facebook-local-customer-reach-600

Wondering how to grow local connections on Facebook? Looking for ways to boost the visibility of your local business? With a few organic tactics, you can reach more local customers on Facebook without spending money on ads. In this article, you’ll discover four ways to reach a local audience on Facebook. #1: Deliver Targeted Messaging [...]

This post How to Reach More Local Customers With Facebook first appeared on .
- Your Guide to the Social Media Jungle


by Ana Gotter via

How to Get Started With an Android App Template

8 Social Media Content Ideas for Marketers

df-social-content-ideas-600

Do you have trouble coming up with original social media posts each day? Looking for quick and easy content prompts to help? When you have a lot of things on your plate, it’s easy to feel uninspired or struggle to come up with fresh content ideas. In this article, you’ll discover eight content ideas to [...]

This post 8 Social Media Content Ideas for Marketers first appeared on .
- Your Guide to the Social Media Jungle


by Danielle McFadden via

Sunday, October 30, 2016

The First Step In Blogging Is To Figure This Out

The First Step In Blogging Is To Figure This Out

The first step in blogging is to figure out what you are going to blog about. This is a topic that I have covered many times before on this very blog but today I am going to try and break it down into action steps that you can follow quickly and easily.

by Guest Author via Digital Information World

Fuse.js – Lightweight Fuzzy-Search in JavaScript

Fuse.js is a lightweight fuzzy-search in JavaScript with zero dependencies.


by via jQuery-Plugins.net RSS Feed

Florian Monfrini

Born in 1986 in South France. Lives and works in Paris.
by via Awwwards - Sites of the day

Saturday, October 29, 2016

Simple jQuery Accordion with Unlimited Nesting

A tutorial about creating a simple jQuery Accordion with unlimited nesting.


by via jQuery-Plugins.net RSS Feed

Best Friends Forever

opl-small

Gorgeous big imagery in this parallax scrolling One Pager for Melbourne-based design studio, Best Friends Forever. The awesome SVG illustrations and animations (by Sean Morris) bring so much character to the portfolio. Also a great references to a quality team section - especially the additional founder section further down that animates. We forget how important building trust is for when potential clients browse our portfolios.

by Rob Hope via One Page Love

YouTube Rolls Out Mobile End Screens: This Week in Social Media

gd-twism-10-29-16-600

Welcome to our weekly edition of what’s hot in social media news. To help you stay up to date with social media, here are some of the news items that caught our attention. What’s New This Week YouTube Rolls Out End Screens Feature for All Creators: YouTube launched End Screens, “a new mobile-friendly tool that lets you [...]

This post YouTube Rolls Out Mobile End Screens: This Week in Social Media first appeared on .
- Your Guide to the Social Media Jungle


by Grace Duffy via

Mt. Cuba Center

This site translates the experience of being in the gardens to a digital setting with a video tour that allows users to “walk” garden paths and inspires them to plan their visit.
by via Awwwards - Sites of the day

Friday, October 28, 2016

10 Online Advertising Platforms to Drive More Traffic

10 Online Advertising Platforms to Drive More Traffic

Getting customers is a priority task for every business owner. Smaller businesses are usually in a continuous search for potential resources that could bring in extra income.

We live in a digital world, so online advertising is becoming extremely popular. And the main reason for that is its profitability. Nowadays, TV and Radio Ads, are starting to lose their effects.

Compared to the traditional advertising methods, online advertising brings huge benefits such as a better audience targeting, and higher amounts of traffic and potential customers.

If you want to start using paid advertising, you should first choose the platforms you’ll be working with. In this article we will write about the most popular online advertising platforms, so you can choose the one which would be the best for your business.

by Guest Author via Digital Information World

How’d They Do It? PHPSnake: Detecting Keypresses

Vector image of an old school joystick

At a recent conference in Bulgaria, there was a hackathon for which Andrew Carter created a PHP console version of the popular "snake" game.

I thought it was a really interesting concept, and since Andrew has a history of using PHP for weird things, I figured I'd demystify and explain how it was done.

The original repository is here, but we'll build a version of it from scratch in this series so no need to clone it.

Screenshot of the game

Prerequisites and Rules

As usual, I'll be using my Homestead Improved box to get up and running instantly. You can use your own environment, just make sure it has a decent version of PHP runnable from the command line.

The snake game we're replicating has the following features:

  • a snake starts as a single on-screen character, and gets longer by one character every time it eats a piece of food.
  • food is spawned randomly anywhere on the map.
  • in single player mode, the snake is controlled by the arrow keys.
  • in two player mode, one snake is controlled with the WSAD keys, while the other is controlled with the arrow keys.
  • in single player mode, the walls are obstacles and cause a collision. Running into a wall or into yourself ends the game.
  • in multi player mode, only your own snake or the enemy's snake is an obstacle - the walls wrap around the world. Colliding will reset your snake's length to 0. The player with the longest snake after 100 seconds have elapsed is the winner.
  • it's CLI, so does not run in the browser - it runs in the terminal window

Note that the game doesn't work in native Windows - to run it on a Windows platform, use a good VM like Homestead Improved.

Bootstrapping

To launch a CLI (console) game, we need something similar to an index.php file in traditional websites - a "front controller" which reads our command line input, parses it, and then launches the required classes, just like in a traditional web app. We'll call this file play.php.

Continue reading %How’d They Do It? PHPSnake: Detecting Keypresses%


by Bruno Skvorc via SitePoint

How I Made $2,000 in 1.5 Months Starting with a Google Form-Based MVP

10 years ago, I taught myself Ruby on Rails and spent six months developing a local job board. I seeded the site with jobs from Craigslist and paid my local news station $3,000 to run a month-long ad. Unfortunately, all that time and money only brought in 50 visitors a day. I ended up selling just one job post, becoming discouraged, and shutting the site down after a few months.

Needless to say, I didn’t know what I was doing, but you’d be surprised how many well-capitalized startups proceed along those same lines today and do even worse than I did back then. It’s because the answer isn’t in spending large sums of time and money. It’s in running cheap and measurable tests that provide the market feedback you need to keep cranking on your ideas. Here’s how my latest project Old Geek Jobs made $2,000 in a month and a half by running cheap experiments.

Old Geek Job’s Stripe dashboard

Age Discrimination Led Me to My First MVP

On September 15th, I read Tim Bray’s "Old Geek" post about ageism in tech. It struck a chord because I experienced what I felt was age discrimination interviewing with a startup run by 20 year olds. I registered the domain name OldGeekJobs.com for $9, fired up a $10 Digital Ocean instance, and uploaded a Google form embedded in a static site.

Old Geek Jobs before

Getting Eyeballs After Launch

My site was posted to HackerNews and collected over 500 upvotes. The next day, Quartz wrote a piece followed with another from Evil HR Lady. Employers started submitting jobs, and I copied and pasted them from the Google form to the static site. I wasn’t making any money because the job posts were free, but in less than a few days, I had the feedback I needed to move forward on my idea.

Over the next few weeks, I began developing a more robust version of the site using jQuery, Python, Flask, and Postgresql. I broke out jobs by city and state, added real-time keyword search, and added an innovative quick preview feature. Here’s what the site looks like now with that quick preview feature activated:

Old Geek jobs now

The Elephant in the Room — Will It Make Money?

I also made it $50 to post a job. In exchange for the $50, jobs are posted for 45 days, highlighted in green, and display above other jobs aggregated from StackOverflow. I bring in jobs from them so there’s enough good jobs on the site to keep bringing visitors back. I also put a notice on the site that explains how it all works:

Continue reading %How I Made $2,000 in 1.5 Months Starting with a Google Form-Based MVP%


by John Wheeler via SitePoint

AtoZ CSS Quick Tip: How to Use Unicode Characters

U is for Unicode Characters

Unicode characters can be really handy for adding little symbols and icons to your HTML or in your CSS via pseudo elements' content property. Here are a handful of tips for using unicode characters.

[author_more]

Set the character set in your CSS

If you want to use unicode characters in your CSS file, ensure to set the character set for your CSS in addition to setting the charset meta tag in your HTML document.

[code language="html"]
<!-- in your HTML <head> -->
<meta charset="utf-8"/>
[/code]

[code language="css"]
/* in your CSS at the top of the file*/
@charset 'utf-8';
[/code]

Use the Trigram for Heaven symbol as a simple hamburger icon

When needing to knock together a quick demo site or a video screencast for a responsive tutorial, I often use the love-it-or-hate-it hamburger icon for a mobile menu. There are lots of icon solutions out there and there are many non-raster approaches to the hamburger icon but often the quickest and easiest for me is to use the unicode character called "The Trigram for Heaven" which looks like this: .

.

Continue reading %AtoZ CSS Quick Tip: How to Use Unicode Characters%


by Guy Routledge via SitePoint

AlphaPod

AlphaPod

Visually rich, interactive One Pager by Julian Damy previewing his latest drawing and illustration project, AlphaPod. Awesome to see the hype for the upcoming children's book start with a Single Page website - showcasing the first 4 letters. The illustrations are truly stunning - all the best Julian!

by Rob Hope via One Page Love