Tag Archives: language

Universal Principles Of User Experience Design

(This is a sponsored article.) As designers working in an ever-changing field, it’s important that we develop an understanding of the timeless design principles that underpin everything we do. In the second article in my series for Adobe XD, I’ll explore the foundations that enable us to establish some universal principles of UX.
These principles, which should sit at the heart of everything we design and build, are critical and will stand the test of time:

Source article:  

Universal Principles Of User Experience Design

React Internationalization – How To

First of all, let’s define some vocabulary. “Internationalization” is a long word, and there are at least two widely used abbreviations: “intl,” “i18n”. “Localization” can be shortened to “l10n”.
Internationalization can be generally broken down into the following challenges:
detecting the user’s locale; translating UI elements, titles and hints; serving locale-specific content such as dates, currencies and numbers. Note: In this article, I am going to focus only on front-end part.

Read this article – 

React Internationalization – How To

Improving The UX Of Names With Vocalizer.js

We have all encountered names that are difficult to pronounce. Having a challenging name myself, I get different pronunciations of my first name, Atif, all the time. In order to solve my own naming problem, I built a Javascript plugin called Vocalizer. In this article, I will introduce what Vocalizer is and a few different ways to use it.

Improving The UX Of Names With Vocalizer.js

Earlier this year, I redesigned my portfolio website. During this process, I decided to add a feature that educated visitors on how to say my name. One day, I opened the “Voice Memos” app on my iPhone, tapped “Record”, and asked my wife to say my first name. Then, I embedded a small button onto the landing page after my first name. Clicking on that button would play the audio file of my name.

The post Improving The UX Of Names With Vocalizer.js appeared first on Smashing Magazine.

Link to article – 

Improving The UX Of Names With Vocalizer.js

How Creating A Design Language Can Streamline Your UX Design Process

Around a year ago, while working at a digital agency, I was given the objective of streamlining our UX design process. Twelve months later, this article shares my thoughts and experiences on how lean thinking helped to instill efficiencies within our UX design process.

How Creating A Design Language Can Streamline Your UX Design Process

When I arrived at the agency, wireframes were already being created and utilized across a variety of projects. Winning advocates for the production of wireframes was not the issue. All stakeholders (both internally and externally) understood the purpose of wireframes and appreciated their value in shaping and modeling digital experiences.

The post How Creating A Design Language Can Streamline Your UX Design Process appeared first on Smashing Magazine.

More here – 

How Creating A Design Language Can Streamline Your UX Design Process

Building Shaders With Babylon.js

Shaders are a key concept if you want to unleash the raw power of your GPU. I will help you understand how they work and even experiment with their inner power in an easy way, thanks to Babylon.js.

Building Shaders With Babylon.js

Before experimenting, we must see how things work internally. When dealing with hardware-accelerated 3D, you will have to deal with two CPUs: the main CPU and the GPU. The GPU is a kind of extremely specialized CPU.

The post Building Shaders With Babylon.js appeared first on Smashing Magazine.

Original link: 

Building Shaders With Babylon.js

What You Need to Know About Google Maps’ Promoted Pins

promoted-pins-featured-image-650
Image via Shutterstock.

According to the most recent numbers, about one billion people around the world have downloaded Google Maps and use it to reach 1.5 billion destinations each year.

That’s a lot of searches and web traffic. But of equal interest to Google and its customers is foot traffic. Shopping online is great, but forecasts indicate 90 percent of retail sales will happen in physical stores rather than online, and half of smartphone users who search for something locally will end up visiting a retail location within 24 hours.

The latest update to Google Maps is called promoted pins. Google hopes it will help bridge the gap between online traffic and foot traffic. It will give local businesses an opportunity to have their voices heard in a new way and take advantage of our glorious, mobile-first future.

So what are promoted pins and why should you care?

If you’re a Google Maps user, and you probably are, you’re likely already intimately familiar with the ordinary red “pins.” These indicate nearby landmarks, businesses or other places of interest.

Promoted pins will provide a handy contrast, as they now come in royal purple — allowing your business to very visibly stand out from the rest of the locations in your area.

But drawing the eye with fresh new colors is just the start of it.

When you perform a search for, say, children’s bicycles, you might see promoted pins from Toys ‘R Us or other local toy stores populating the top of your search results.

These will also be accompanied by promotions and coupons tailored precisely to your search history. Maybe it’ll be a $5 off coupon for that bike, or, in a different search, $1 off your Grande Mocha Whatever from Starbucks.

promoted-pins-phone

Sounds exciting, yes?

What do you need to get started?

Naturally, you’ll need to do a little bit of work before you can get your own promoted pins off the ground.

First and foremost, if you haven’t already, you’ll need to have your business officially verified by Google. This can take a week or two, and involves receiving a postcard at your physical location to verify the address you’ve provided actually exists, and matches up with existing USPS records.

But to enable promoted pins specifically, you’ll also need to meet Google’s advertiser eligibility requirements and enable “location extensions” in AdWords. This involves linking your Google My Business account to your Adwords account. You can do this by following these steps:

  1. Sign into your AdWords account and go to the “Ad Extensions” tab.
    ad-extensions
  2. Select the “View: Location Extensions” option from this dropdown menu:
    location-extensions
  3. Click “+ Extension” and you’ll be asked to link your Google My Business account.
    screen-shot-2016-09-20-at-2-43-50-pm

Want to learn about using landing pages for PPC?

Download this ebook and become an expert at designing high-converting landing pages for your PPC campaigns.
By entering your email you’ll receive weekly Unbounce Blog updates and other resources to help you become a marketing genius.

Planning your promoted pins strategy

Local businesses will be charged per click for their participation in promoted pins. But just what constitutes a “click”? Here’s the rundown:

  • “Click-to-call” actions on your smartphone
  • “Get directions” interactions
  • “Get location” clicks

Knowing this, how much of your PPC spend should be directed at promoted pins?

Like many other aspects of online marketing and digital advertising, some strategies are simply going to be more effective for certain industries than others. For example, I could see promoted pins working really well for drugstores, gas stations or restaurants – places that people tend to frequent often, even when traveling.

However, I don’t see promoted pins being overly beneficial for places like colleges or event venues. People do extensive research and planning when spending money with these organizations, and buying decisions are influenced by many, many other factors outside of location or even pricing.

To put it simply, there’s not going to be a magic percentage of PPC spend you can put towards promoted pins to get your ideal results.

You’ll need to play around with this new feature and gradually adjust how much money you want to allocate to it after a few months of testing. I will say that I don’t think a promoted pins budget should be a majority part of any organization’s PPC spend, but you can pick a starting budget based on your past successes with PPC and adjust said budget up or down as you start to see results.

In other words, budgeting for your local search campaign in Google Maps shouldn’t feel at all out of step with other forms of digital advertising that charge according to the traffic you generate.

Tracking your promoted pins campaign

All of this is pretty academic if you don’t have access to real-time data about your promoted pins, along with the traffic they’re generating and some key information about who’s interacting with them.

Here’s how to access the traffic data for your promoted pins campaign:

  1. Sign into your AdWords account and go to “Campaigns”:
    adwords-promoted-pins-campaigns
  2. Click “Segment,” then “Click type”:
    adwords-promoted-pins-segments-ad-types

That should bring you to the all-important data about the types of traffic your promoted pins are bringing in. This traffic might show up in a breakdown similar to your normal “Local” PPC ad analytics, with data for click-to-call, driving directions and location detail actions taken:

mobile-clicks-to-call-promotedpins

What you find there will be the key to tailoring your hyperlocal marketing approach in the months and years ahead.

Sales funnelling from Google Maps

How can you turn your promoted pins into real sales? How do prospective customers become, you know, customers?

The key is hyperlocal marketing, which is marketing tailored to a very small geographic area, such as a single zip code, neighborhood or city.

People are already shopping locally. Your job is merely to make sure they visit your establishment and not somebody else’s. Promoted pins should make this easier than ever, by letting you cater directly to the people who are most likely to visit your business in the first place.

Promoted pins also encourage — even require — you to stay up-to-date with what people in your area are actually searching for.

You’ll be able to optimize your business’ page within Google Maps to reflect the language people are using to find you. Just like you would do keyword analysis and competitor research for your main website, you can take the information you learn about how people find you on Google Maps and apply it to your Google My Business page or promoted pins ads.

This whole process is like a snowball that just needs one gentle push to get started.

One national brand that figured this out early is PetSmart. It learned how to tie together data from its search ads with data from Google’s Store Visits. It found that between 10 and 18 percent of folks who clicked on its ads ended up inside a PetSmart store within a month. PetSmart used this information to make more informed budgeting decisions for their online marketing strategies moving forward, and was able to provide data driven proof of the value in search ads for their merchandising partners.

It’s this ability to truly understand the customer “journey” that really speaks to the usefulness of promoted pins.

Quick bonus tip: Be transparent about inventory

Here’s one more key action you’ll need to take, if you haven’t already: Become super transparent about the products you have in stock. One in four mobile users avoids visiting brick-and-mortar stores because they fret over the product, or products, they’re searching for not being in stock.

Fortunately, Google’s already developed a way for companies to do this: local product inventory feeds. This is a list of all the products you sell in each of your stores, and you can choose to update your full product inventory or only the products whose inventories have changed that day. Inventory feeds help consumers feel more confident that they can find what they’re looking for at your store, and that they won’t arrive to find said item out of stock.

When done in conjunction with promoted pins, inventory feeds assure potential customers that a product is actually in stock and that it can be found at a location in their immediate area.

How promoted pins can help you

If you’ve read this far, you’re probably one of two types of people:

  1. You’re excited to dig into the nitty gritty of a new type of ad platform, and you’re ready to see what kind of return on investment this can bring to your local business
  2. You’re fretting over yet another skill set you need to learn to keep your business viable in an increasingly digital-minded world.

Though, the perfectly sane businessperson probably falls somewhere in between.

It’s true. There are a couple little tricks you’ll have to pick up before you have your promoted pins strategy up and running and actually delivering real-world results.

But for the most part, we think you’ll find the process actually dovetails pretty nicely with what you’re already familiar with. AdWords is an established platform, and promoted pins is an offshoot of that. You were always going to have to become savvy with local marketing to survive and thrive. It was inevitable. And, thankfully, Google has made it pretty easy to get started.

View original: 

What You Need to Know About Google Maps’ Promoted Pins

Understanding REST And RPC For HTTP APIs

For the last few years, whenever somebody wants to start building an HTTP API, they pretty much exclusively use REST as the go-to architectural style, over alternative approaches such as XML-RPC, SOAP and JSON-RPC. REST is made out by many to be ultimately superior to the other “RPC-based” approaches, which is a bit misleading because they are just different.

Understanding REST And RPC For HTTP APIs

This article discusses these two approaches in the context of building HTTP APIs, because that is how they are most commonly used. REST and RPC can both be used via other transportation protocols, such as AMQP, but that is another topic entirely.

The post Understanding REST And RPC For HTTP APIs appeared first on Smashing Magazine.

Follow this link: 

Understanding REST And RPC For HTTP APIs

Tips and tactics for A/B testing on AngularJS apps

Reading Time: 8 minutes

Alright, folks, this week we’re getting technical.

This post is geared toward Web Developers who’re working in conversion optimization, specifically those who are testing on AngularJS (or who are trying to test on AngularJS).

Angular, while allowing for more dynamic web applications, presents a problem for optimization on the development side.

It basically throws a wrench in the whole “I’m trying to show you a variation instead of the original webpage without you knowing it’s a variation”-thing for reasons I’ll get into in a minute.

At WiderFunnel, our Dev team has to tackle technical obstacles daily: many different clients means many different frameworks and tools to master.

Recently, the topic of How the heck do you test on Angular came up and Tom Davis, WiderFunnel Front End Developer, was like, “I can help with that.”

So here we go. Here are the tips, tricks, and workarounds we use to test on AngularJS.

Let’s start with the basics:

What is AngularJS?

Angular acts as a Javascript extension to HTML, running in most cases on the client-side (through the browser). Because HTML isn’t a scripting language (it doesn’t run code), it’s limited. Angular allows for more functionality that HTML doesn’t have. It provides a framework to develop apps that are maintainable and extendable, while allowing for features such as single page navigation, rich content, and dynamic functionality.

Note: You can mimic Angular with plain Javascript, however, Angular provides a lot of functionality that a Developer would otherwise have to build themselves.

Why is AngularJS popular?

The real question here is why are JS front-end frameworks and libraries popular? Angular isn’t the only framework you can use, of course: there’s EmberJS, React.js, BackBone etc., and different Developers prefer different frameworks.

But frameworks, in general, are popular because they offer a means of providing a rich user experience that is both responsive and dynamic. Without Angular, a user clicks a button or submits a form on your site, the browser communicates with the server, and the server provides entirely new HTML content that then loads in the browser.

When you’re using Angular, however, a user clicks a button or submits a form and the browser is able to build that content itself, while simultaneously performing server tasks (like database submissions) in the background.

For example, let’s think about form validations.

No Angular:

A user submits a form to create an account on a site. The browser talks to the server and the server says, “There’s a problem. We can’t validate this form because this username already exists.” The server then has to serve up entirely new HTML content and the browser re-renders all of that new content.

This can lead to a laggy, cumbersome user experience, where changes only happen on full page reloads.

With Angular:

A user submits a form to create an account on a site. The browser talks to the server via JSON (a collection of data) and the server says, “There’s a problem. We can’t validate this form because this username already exists.” The browser has already loaded the necessary HTML (on the first load) and then simply fills in the blanks with the data it gets back from the server.

Disclaimer: If you don’t have a basic understanding of web development, the rest of this post may be tough to decipher. There is a Glossary at the end of this post, if you need a quick refresher on certain terms.

Why it can be tricky to test on Angular apps

As mentioned above, Angular acts as an HTML extension. This means that the normal behaviors of the DOM* are being manipulated.

Angular manipulates the DOM using two-way data binding. This means that the content in the DOM is bound to a model. Take a look at the example below:

Testing on Angular_2-way-data-binding

The class “ng-binding” indicates that the H1 element is bound to a model, in this case $scope.helloWorld. In Angular, model data is referred to in an object called $scope. Any changes to the input field value will change helloWorld in the $scope object. This value is then propagated down to the H1 text.

This means that, if you make any changes to the H1 element through jQuery or native JS, they will essentially be overridden by $scope. This is not good in a test environment: you cannot guarantee that your changes will show up when you intend them to, without breaking the original code.

Laymen’s terms: $scope.helloWorld is bound to the H1 tag, meaning if anything in the variable helloWorld changes, the H1 element will change and vice versa. That’s the power of Angular.

Typically, when you’re testing, you’re making changes to the DOM by injecting Javascript after all of the other content has already loaded.

A developer will wait until the page has loaded, hide the content, change elements in the background, and show everything to the user post-change. (Because the page is hidden while these changes are being made, the user is none-the-wiser.)

Tom-Davis

We’re trying to do this switcheroo without anyone seeing it.

– Thomas Davis, Front End Developer, WiderFunnel

In Angular apps, there’s no way to guarantee that all of the content has been rendered before that extra Javascript is injected. At this point, Angular has already initialized the app, meaning any code running after this is outside of Angular’s execution context. This makes it complicated to try to figure out when and how to run the changes that make up your test.

When you’re running a test, the changes that make up Variation A (or B or C) are loaded when the page loads. You can only manipulate what’s in the DOM already. If you can’t guarantee that the content is loaded, how do you ensure that your added Javascript runs at the right time and how do you do this without breaking the code and functionality?

Tom explained that, as a dev trying to do conversion optimization on an Angular application, you find yourself constantly trying to answer this question:

How can I make this change without directly affecting my (or my client’s) built-in functionality? In other words, how can I make sure I don’t break this app?

How to influence Angular through the DOM

Angular makes for a complicated testing environment, but there are ways to test on Angular. Here are a few that we use at WiderFunnel (straight from Tom’s mouth to your eyeballs).

Note: In the examples below, we are working in the Inspector. This is just to prove that the changes are happening outside the context of the app and, therefore, an external script would be able to render the same results.

1. Use CSS wherever possible

When you’re running a test on Angular, use CSS whenever possible to make styling changes.

CSS is simply a set of styling rules that the browser applies to matching elements. Styling will always be applied on repaints regardless of how the DOM is bound to Angular. Everytime something changes within the browser, the browser goes through its list of styling rules and reapplies them to the correct element.

Let’s say, in a variation, you want to hide a banner. You can find the element you want to hide and add a styling tag that has an attribute of display none. CSS will always apply this styling and that element will never be displayed.

Of course, you can’t rely on CSS all of the time. It isn’t a scripting language, so you can’t do logic. For instance, CSS can’t say “If [blank] is true, make the element color green. If [blank] is false, make the element color red.”

In other cases, you may want to try $apply.

2. Using $scope/$apply in the DOM

We’ve established that Angular’s two-way data binding makes it difficult to develop consistent page changes outside of the context of Angular. Difficult…but not impossible.

Say you want to change the value of $scope.helloWorld. You need a way to tell Angular, “Hey, a value has changed — you need to propagate this change throughout the app.”

Angular checks $scope variables for changes whenever an event happens. An event attribute like ng-click or ng-model will force Angular to run the Digest Loop*, where a process called dirty checking* is used to update the whole of the app with any new values.

If you want to change the value of $scope.helloWorld and have it propagated throughout the app, you need to trick Angular into thinking an event has occurred.

But, how?

First step: You’ll need to access the model in the $scope object. You can do this simply by querying it in the DOM.

Testing on Angular_$scope

In this example, you’re looking at the $scope object containing all models available to the H1 element. You’re looking at the helloWorld variable exposed.

Once you have access to helloWorld, you can reassign it. But wait! You’ve probably noticed that the text hasn’t changed in the window… That’s because your code is running outside the context of Angular — Angular doesn’t know that a change has actually been made. You need to tell Angular to run the digest loop, which will apply the change within it’s context.

Fortunately, Angular comes equipped with an $apply function, that can force a $digest, as shown below.

Testing on Angular_$apply

3. Watch for changes

This workaround is a little manual, but very important. If the source code changes a variable or calls a function bound to $scope, you’ll need to be able to detect this change in order to keep your test functional.

That’s where Angular’s $watch function comes in. You can use $watch to listen to $scope and provide a callback when changes happen.

In the example below, $watch is listening to $scope.helloWorld. If helloWorld changes, Angular will run a callback that provides the new value and the old value of helloWorld as parameters.

Testing on Angular_$watch

Custom directives and dependency injection

It’s important that you don’t default to writing jQuery when testing on Angular apps. Remember, you have access to all the functionality of Angular, so use it. For complex experiments, you can use custom directives to manage code structure and make it easy to debug.

To do this, you can implement an injector to apply components in the context of the app that you’re testing on. Here’s a simple example that will alert you if your helloWorld variable changes:

For more details on how to use an injector, click here.

—–

These are just a few of the tactics that the WiderFunnel Dev team uses to run successful conversion optimization on Angular apps. That said, we would love to hear from all of you about how you do CRO on Angular!

Do you use the same tactics described here? Do you know of other workarounds not mentioned here? How do you test successfully on Angular apps? Let us know in the comments!

Glossary

DOM: The Document Object Model (DOM) is a cross-platform and language-independent convention for representing and interacting with objects in HTML, XHTML, and XML documents

$scope: Scope is an object that refers to the application model. It is an execution context for expressions. Scopes are arranged in hierarchical structure which mimic the DOM structure of the application. Scopes can watch expressions and propagate events.

$apply: Apply is used to execute an expression in Angular from outside of the Angular framework. (For example from browser DOM events, setTimeout, XHR or third party libraries).

JSON: (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition – December 1999

Two-way data binding: Data-binding in Angular apps is the automatic synchronization of data between the model and view components. The way that Angular implements data-binding allows you to treat the model as the single source of truth in your application.

Digest Loop: There is an internal cycle called $digest that runs through the application and executes watch expressions and compares the value returned with the previous value and if the values do not match then a listener is fired. This $digest cycle keeps looping until no more listeners are fired.

Dirty Checking: Dirty checking is a simple process that boils down to a very basic concept: It checks whether a value has changed that hasn’t yet been synchronized across the app

The post Tips and tactics for A/B testing on AngularJS apps appeared first on WiderFunnel Conversion Optimization.

Visit source: 

Tips and tactics for A/B testing on AngularJS apps

5 Simple Steps To Test Your Varnish Cache Deployment Using Varnishtest

Varnish Cache is an open-source HTTP accelerator that is used to speed up content delivery on some of the world’s top content-heavy dynamic websites. However, the performance or speed that a newcomer to Varnish Cache can expect from its deployment can be quite nebulous.
This is true for users at both extremes of the spectrum: from those who play with its source code to create more complex features, to those who set up Varnish Cache using the default settings.

View this article:

5 Simple Steps To Test Your Varnish Cache Deployment Using Varnishtest

Finally, CSS In JavaScript! Meet CSSX


JavaScript is a wonderful language. It’s rich, it’s dynamic, and it’s so tightly coupled to the web nowadays. The concept of writing everything in JavaScript doesn’t sound so crazy anymore. First, we started writing our back end in JavaScript, and then Facebook introduced JSX, in which we mix HTML markup with JavaScript. Why not do the same for CSS?

Finally, CSS In JavaScript! Meet CSSX

Imagine a web componentdistributed as a single .js file and containing everything — markup, logic and styles. We would still have our basic style sheets, but the dynamic CSS would be a part of JavaScript. Now this is possible, and one way to achieve it is with CSSX. CSSX is a project that swallowed my spare time for a month. It was challenging and interesting, and it definitely pushed me to learn a lot of new stuff. The result is a set of tools that allows you to write vanilla CSS in JavaScript.

The post Finally, CSS In JavaScript! Meet CSSX appeared first on Smashing Magazine.

See the original article here – 

Finally, CSS In JavaScript! Meet CSSX