Google Announces Season of Docs Program to Match Technical Writers with Open Source Projects

Google is launching a new program called Season of Docs with the goal of fostering collaboration between technical writers and open source projects. The initiative is very similar to Google Summer of Code, except it is focused on documentation and technical writing contributions instead.

Prospective participants can apply during the month of April 2019. Google plans to publish a list of accepted organizations with their ideas for documentation projects. Technical writers can choose a project and submit a proposal to Season of Docs. The accepted proposals will be published July 30, 2019, and participants will then spend a month bonding with their open source communities and collaborating with mentors. The Season of Docs program officially runs from September 2 – November 29, and participants will receive a stipend of $2400 – $6,000 USD, calculated based on Purchasing Power Parity.

In 2017, Google’s Open Source Survey results showed that incomplete or missing documentation was one of the most common problems encountered in open source, observed by 93% of respondents. The Season of Docs program aims to give technical writers an opportunity to contribute to open source projects in a more structured way while learning about open source code. Participating organizations gain the chance to improve their processes for documenting their projects while working with a technical writer. Check out the FAQ section of the Season of Docs website for more detailed information.

Smooth Scrolling for Screencasts

Let's say you wanted to scroll a web page from top to bottom programmatically. For example, you're recording a screencast and want a nice full-page scroll. You probably can't scroll it yourself because it'll be all uneven and jerky. Native JavaScript can do smooth scrolling. Here's a tiny snippet that might do the trick for you:

window.scrollTo({
  top: document.body.getBoundingClientRect().height,
  behavior: 'smooth'
});

But there is no way to control the speed or easing of that! It's likely to be way too fast for a screencast. I found a little trick though, originally published by (I think) Jedidiah Hurt.

The trick is to use CSS transforms instead of actual scrolling. This way, both speed and easing can be controlled. Here's the code that I cleaned up a little:

const scrollElement = (element, scrollPosition, duration) => {
  
  // useful while testing to re-run it a bunch.
  // element.removeAttribute("style"); 
  
  const style = element.style;
  style.transition = duration + 's';
  style.transitionTimingFunction = 'ease-in-out';
  style.transform = 'translate3d(0, ' + -scrollPosition + 'px, 0)';
}

scrollElement(
  document.body, 
  (
    document.body.getBoundingClientRect().height
    -
    document.documentElement.clientHeight
    +
    25
  ),
  5
);

The idea is to transform a negative top position for the height of the entire document, but subtract the height of what you can see so it doesn't scroll too far. There is a little magic number in there you may need to adjust to get it just right for you.

Here's a movie I recorded that way:

It's still not perrrrrrfectly smooth. I partially blame the FPS of the video, but even with my eyeballs watching it record it wasn't total butter. If I needed even higher quality, I'd probably restart my computer and have this page open as the only tab and application open, lolz.

See a Demo

Another possibility is a little good ol' fashioned jQuery .animate(), which can be extended with some custom easing. Here's a demo of that.

See the Pen
jQuery Smooth Scrolling with Easing
by Chris Coyier (@chriscoyier)
on CodePen.

The post Smooth Scrolling for Screencasts appeared first on CSS-Tricks.

Application Holotypes

It's entirely too common to make broad-sweeping statements about all websites. Jason Miller:

We often make generalizations about applications we see in the wild, both anecdotal and statistical: "Single-Page Applications are slower than multipage" or "apps with low TTI loaded fast". However, the extent to which these generalizations hold for the performance and architectural characteristics we care about varies.

Just the other morning, at breakfast an An Event Apart, I sat with a fellow who worked on a university website with a massive amount of pages. Also at the table was someone who worked at a media company with a wide swath of brands, but all largely sites with blog-like content. There was also someone who worked on a developer tool that was heavy on dashboards. We can all care about accessibility, performance, maintainability, etc., but the appropriate technology stacks and delivery processes are quite different both in what we actually do and what we probably should do.

It's a common stab at solving for these different sites by making two buckets: web sites and web apps. Or dynamic sites and static sites. Or content sites and everything else. Jason builds us more buckets ("holotypes"): Continue reading "Application Holotypes"

Creating a structure in function gives gegmentation fault [C]

Hi, I'm writing in C my program and I have a problem with this pieces of code:

//lib.h
typedef struct Array {
    char **array;
    char *searchDirPath;
    char *searchFile;
    char *tmpFileName;
    int tmpFile;
    int arraySize;
    int currIndex;
} Array;

// lib.c

Array* createArray(int size) {
    Array* newArray = calloc(1,sizeof(Array));
    newArray->array = calloc((size_t)size,sizeof(char*));

    newArray->arraySize = size;
    newArray->currIndex = 0;
    char fileName[] = "tmpXXXXXX";
   newArray->tmpFile = mkstemp(fileName);
    newArray->tmpFileName = fileName;

   showYourself(newArray);
    return newArray;
}

void showYourself(Array* a) {
    printf("\n\n==========================================\n");
    printf("\nShowing myself:\n arraysize:  ");
    printf(sizeof(a->array));
    printf("\nSearch directory path:  ");
   printf(a->searchDirPath);
    printf("\nSearch file path:  ");
    printf(a->searchFile);
    printf("\nTmp file:  ");
   printf(a->tmpFileName);
    printf("\nArray size:  ");
    printf("%d",a->arraySize);
    printf("\nCurrent index:  ");
    printf("%d",a->currIndex);
    printf("\n==========================================\n\n");
}

// main.c
#include "stdio.h"
#include "lib.h"

int main() {
    printf("Hello world\n");
    sayHello();

    Array*a = createArray(8);
   showYourself(a);
    setDir(a, "/home/kamil/gsl-2.5");
    setSearchFile(a, "borosh13.c");    // /home/kamil/gsl-2.5/rng/borosh13.c
     showYourself(a);
    search(a);

    return 0;
}

This is only a sample, but I havent tested other part yet. In the short: it gives segmentation fault.
I think if comes from printf(sizeof(a->array)); (when I comment this line program works to the end), so I probably missed something in createArray function but can't see a problem. I would be very grateful if you could take a look and check if there is a bug.

Ultimate Guide to WooCommerce SEO for Your Products

Ultimate Guide to WooCommerce SEO for Your ProductsEvery business – small, medium, or large – needs SEO. That’s because Search Engine Optimization (or SEO) is an essential marketing channel. As per reports by Junto 93% of online experiences start with a search engine, and 75% of visitors don’t bother scrolling past the 1st page of search results. That means, if you want […]

The post Ultimate Guide to WooCommerce SEO for Your Products appeared first on WPExplorer.

How APIs Benefit the Commercial Auto Insurance Industry

The insurance industry has traditionally been very apprehensive of technological innovation. For centuries, insurance providers have been rooting their customer relationship stability and consistency in cultivating a sustained trust. The practice of curating long-term relationships has traditionally been the customer acquisition and retention model within the insurance industry. The time needed to grow a trusting customer base has always been the safety factor that allowed carriers to keep innovation in status quo.

WordCamp Nordic Hosts Successful Kids Workshop

WordCamp Nordic hosted a successful kids workshop over the weekend where participants learned how to start publishing with WordPress. The event was held during Contributor Day at the same venue, tucked into a comfortable corner with soft chairs and ample floor space for the kids to stretch out.

Petya Raykovska led the workshop and participants followed along with the help of a large screen for demonstrating basic publishing-related tasks. The kids learned how to use the editor, add text and images, create galleries, and customize their sites by selecting a theme. Each participant left the workshop with their own WordPress site hosted at WordPress.com.

“It’s like an exercise in creativity, showing them how to use a tool to express themselves on the web,” Raykovska said.

Teaching kids how to use WordPress is far easier than teaching adults how to use it for the first time, because they don’t have preconceived notions about how the editor should behave. Raykovska said the group at WordCamp Nordic had no issues using Gutenberg.

“It doesn’t matter for them what editor they use,” Raykovska said. “They are very intuitive; they go along with anything that comes their way.”

She also reported that many of the kids from past kids workshop events have kept their blogs going and maintain strong relationships with the volunteers who helped them get started.

Each kids workshop is a new opportunity for organizers to test and refine different methods for teaching kids how to use WordPress. As these workshops become more common at WordCamps around the globe, it would be exciting to see them grow to become large scale events where more experienced kids can present on what they are learning and doing with WordPress.

If you are interested in running a kids workshop at another WordCamp, Raykovska has created an organizer kit for training the next generation of WordPress users and developers. It includes all the tasks and requirements for organizing this type of event, sample content, and a workshop script that organizers can follow.

Checkout Process Design For High Conversion Rates

Ecommerce websites live and die by their conversions.

For those of you who have a high volume of traffic to your website, that’s great news. But traffic alone doesn’t generate sales.

It doesn’t matter how much traffic you are generating or how cool your site looks if you can’t make a sale. The number of sales you get will impact how well your business does.

Is your website traffic translating to conversions?

There are certain metrics you can use to measure this. Look at your bounce rates. Analyze your shopping cart abandonment rates.

If your website visitors aren’t converting, your ecommerce site won’t make money.

Don’t get me wrong: the products you’re selling might be amazing. That’s not necessarily the issue here.

The design of your website and the checkout process might be what’s hurting you.

For the most part, simple website designs have higher conversion rates. This same concept needs to be applied to your checkout process.

Here’s the thing though. People often neglect the checkout process.

Your customers make their final purchasing decisions before they get to checkout.

So why bother, right?

That’s being incredibly short-sighted.

Shopping cart abandonment is a real problem for ecommerce stores.

In fact a study found that a whopping 69.23% of ecommerce shopping carts are abandoned.

To put this into perspective, for every 100 customers who start the checkout process, 69 don’t finish.

Customers expect their shopping experience to be seamless, easy, and without friction.

If your checkout process does not meet these expectations, your conversion rates will dive, and your revenue will head south.

Is it a massive problem? Absolutely.

These numbers shouldn’t sit right with any business owner. That’s too many lost sales and potential lifelong customers.

If someone starts the checkout process, it stands to reason they have a strong purchase intent.

So, why do so many shoppers fail to complete their purchases?

Take a look at this chart:

Exit intent Popup Shopping Cart Abandonment Solutions

Out of all the reasons why shoppers abandon their carts, a majority are related to the checkout phase.

Does this apply to all businesses? Not necessarily.

Don’t get me wrong. All businesses—no matter how upscale—suffer from shopping cart abandonment.

You can’t do anything about a user who is just browsing. They may just want to save their favorite items in the cart for future reference.

With that said, there are varying reasons why shoppers do not complete a purchase and there are things that you can do to improve those numbers.

Here are 20 tips to improve your checkout process, reduce abandon rates, and boost your website checkout conversions.

1. Add multiple checkout buttons

For website visitors to make a purchase, they need to be able to navigate to your checkout page.

Once someone decides to buy, they’ll add the items they want to their shopping cart. In a perfect world, you want them to continue shopping so they spend more money.

But if the checkout buttons aren’t clearly labeled, the customer may ultimately leave the items in the cart without buying them.

This could be why your shopping cart abandonment rates are so high. Instead, include checkout buttons on both the top and bottom of the screen.

Check out this example from the Champs Sports website:

champs

Positioning the checkout buttons in two places ensures the visitor will see and have access to both buttons.

The word “checkout” will stay in their line of vision, regardless of where they’re looking on the screen.

I also want you to notice that the location of the shopping cart on the right side of the screen allows the customer to continue shopping on the left.

This increases the likelihood that the average order amount will be higher and conversion rates remain high as well.

You can implement the same strategy on your ecommerce page to drive sales.

2. Secure the checkout process

Security needs to be a top priority for your ecommerce site. If your pages appear untrustworthy, people won’t want to buy anything.

In the past five years alone, 46% of people in the United States have been affected by credit card fraud.

There’s a high probability that nearly half of your website visitors have experienced this. Even if they haven’t personally fallen victims to fraud, I’m sure they know at least one person who has.

This puts people on high alert.

If your checkout process isn’t secure, people won’t feel safe entering their credit card information, which is ultimately what you need to make money.

All pages of the checkout process must be secure. It’s also in your best interest to include security badges, such as Norton, McAfee, or whatever else you’re using to protect your customers.

3. Reduce the number of form fields

A website visitor is ready to buy something. They’ve already made up their mind.

Don’t give them a chance to change their mind and abandon the cart. If your checkout process is long and complicated, you won’t have high conversion rates.

But if you can simplify the process by eliminating unneeded steps, you’ll make more money.

Ask yourself what information you really need from the customer to complete the purchase. Do you need the customer’s name?

Yes, but you don’t have to ask for it several times.

If a name is required to process the payment method or shipping information, don’t make them type those details twice.

Research shows that websites with fewer form fields have a higher performance rate during checkout:

form fields

Only ask for information required to complete the transaction.

If the customer’s shipping and billing addresses are the same, they should be able to check off a box indicating that—instead of having to type their address twice, for shipping and billing.

That alone shaves an extra step off the process and significantly reduces the number of form fields.

The hoop theory article I wrote a while back also explains why getting your visitors to make small micro-commitments typically increases conversion rates…as in a two-step checkout process.

You can leverage this on your checkout page by requesting your customers’ name and email info on the first page and credit card details on the second page.

two step check out

This typically will boost your conversion rate by 10%. It’s worked well on Crazy Egg, and when I ran that test on Timothy Sykes, he saw a 12% increase in conversion rate.

The reason it works is because people feel that they have already given you their name and email address, so they might as well give you the rest of their details. Plus, if they don’t complete the checkout process, you can email them and try to get them back to your site. You can even entice them with coupons or just create a remarketing campaign to get their attention.

4. Offer a guest checkout option

I get it. You want to learn as much information about your customers as possible.

In a perfect world, everyone who visits your site will create a customer profile. This allows you to monitor their browsing behavior and suggest items to them based on this behavior and their purchase history.

Customer profiles allow you to segment your audience based on the customers’ locations and make it easier for you to add subscribers to your ecommerce email list.

When a customer is browsing from their customer profile, they can also place repeat orders with just a couple of clicks.

Customers can save their payment information to their accounts, which reduces the number of steps in the checkout process and makes it easier for them to convert.

If you’re encouraging customers to create a profile, I’m all for it.

But there is a big difference between encouraging and forcing. Does a website visitor need to have a customer profile to convert? Absolutely not.

Forcing people to create a profile could be hurting your conversions.

Need proof? This is the second most common reason for shopping cart abandonment:

Checkout best practice 101 guest checkout ClickZ

Over 48% of online retailers also said a guest checkout was the most important factor to increasing shopping cart conversion rates on their websites.

This was the second highest response on the list, trailing only behind free shipping.

image2 13

The lesson. People want to buy something. Let them give you their money.

Don’t prioritize your content marketing strategy over actual sales.

It’s always a good idea to follow the lead of the companies that have had major success in a particular space.

Here’s an example of how a global giant Walmart implemented this strategy:

walmart

Creating a customer profile is not necessary to complete a purchase, so don’t make it so. Otherwise it will turn some customers away.

However one way to encourage your customer is to provide incentives for them if they create an account.

Notice how Walmart requires you to create an account to use a promo code in the screenshot above.

You can reward them with a coupon code or credit towards their next purchase:

Cute Dresses Tops Shoes Jewelry Clothing for Women

Guess what? Most people will jump on that offer.

That’s a much more effective approach than forcing them to create an account.

5. Make it easy to shop from mobile devices

It’s no secret that we’re living in a mobile world. Ecommerce brands need to recognize this if they want to succeed.

In fact, 62% of people who own a smartphone used their devices to make purchases online within the last six months alone.

It’s estimated that in the next three years, mobile retail sales will control 54% of the ecommerce market share in the United States.

Why is this the case?

It’s because technology has made it more convenient to shop from mobile devices.

People aren’t walking around with laptops in their pockets all day. But phones are seemingly always within an arm’s reach, if they’re not already glued to the consumers’ hands.

If someone visits your ecommerce site from a mobile phone, they need to have a great experience.

If your site isn’t optimized for mobile devices, there’s a slim chance you’ll be able to generate conversions.

mobile

The design of your mobile site can be the difference between customers buying something or bouncing and buying from your competitors instead.

But 74% of mobile users are more likely to revisit websites that are mobile-friendly.

If your site is properly optimized, it will increase the chances of your website visitors not only converting but also coming back and buying again in the future.

You may be thinking this is obvious, but let me explain.

There are multiple elements to mobile-friendliness.

I’ve seen mobile storefronts that are vastly different from their desktop versions.

If there’s no alignment between the two interfaces, shoppers will think they’re in the wrong place.

The result? They bounce.

As we’ve seen before, most people first go to the desktop site to browse, get reviews, and make their decisions.

Ensure your mobile store is familiar to those who’ve gone through that process.

The other element of a mobile-friendly checkout is speed.

Shoppers of all kinds—mobile or not—want instant gratification.

They’re not as concerned with buying your product as much as they are with owning it.

If you take that away from them, whether by having a slow site or asking for much information, they’ll walk away.

The desire to own the product doesn’t go away. Your customers will simply go to your competitor. That’s bad for business.

Another important consideration is browsing behavior.

Mobile browsing is unique in many ways.

Here’s how you can optimize the mobile checkout process with user behavior in mind:

  • To navigate, users use their fingers, not a mouse: This means you should place all key elements on your page within reach of the thumb.
  • Typing and clicking are trickier on mobile: You need to have bigger and wider easy-to-click buttons. A larger font size also helps with improving accuracy of text input.
  • Fingers are less precise than a mouse, so the process is more error-prone: It’s crucial you make it easy to detect and correct errors.

Fashion Nova Checkout

Bonus Tip: To test the speed and mobile-friendliness of your website. You can use Google’s mobile friendly test. Make immediate adjustment if it’s not up to par.

Mobile Friendly Test Google Search Console

You could even consider creating a mobile app for a checkout process to minimize friction even further.

Touch of Modern is a great example of a successful retail mobile application:

image7 13

You can learn a lot about getting high conversions from their business model.

They get between 150,000 and 200,000 new downloads every month. More than half of their customers are repeat shoppers. Nearly two-thirds of their total sales come from their mobile application.

Those numbers are incredible.

The reason why this app is so successful is because they use daily flash sales and store all their customers’ data on the app, making the checkout process lightning fast.

Customers don’t have to re-input all of their credit card information and shipping addresses every time they want to buy something.

The reduced friction results in high conversions.

6. Focus on your top benefits

Besides the product, what else does the customer get when they buy something from your website? There are certain things you can do to add the perceived value of the purchase.

Here’s what I mean.

As I’ve mentioned, not everyone comes to your website with the intention of buying something. But while they are browsing, something might catch their attention.

They may want to buy it, but they want to make sure they aren’t stuck with it if they change their mind later. That’s why you should clearly state your return policy.

Take a look at this example from Lululemon:

image6 13

When you’re browsing on their website, you can clearly see at all times they offer free shipping and free returns. Their customers know they can get the item delivered free and send it back without any problems.

Obviously, you don’t want items to be returned. Don’t worry, they probably won’t be. In fact, according to the National Retail Federation, about 8% of all purchases get returned.

But just giving your customers the peace of mind can be enough to drive the sale.

In addition to your shipping and return policies, make sure you highlight any other features your company offers. Some things to consider:

  • warranty information
  • secure checkout
  • social proof of the product
  • any differentiating features.

One of these elements can turn a “window shopper” into a paying customer.

7. Learn how to use images

Believe it or not, pictures can help improve your conversion rates. Instead of just listing your products, show the customer what they’re buying.

While you may have an image or two of your products on your ecommerce shopping page, make sure that image shows up in the shopping cart.

Why?

This can help remind the consumer what they’re buying and reinforce their decision. Plus, it’s much more appealing than just reading some text on a page.

Here’s an example from the REI website:

image4 13

The consumer gets reminded of exactly what they added to their cart. This could also help avoid any confusion or mix-ups down the road if they selected the wrong color, size, etc.

When they see a visual confirmation of the product they want, psychologically they’ll feel more comfortable about completing the purchase.

Faces also help improve your conversion rates.

According to a recent case study, conversions jumped from 3.7% to 5.5% when an animated picture of a phone was replaced with the face of a customer service representative.

Include images of people on your website. They could be wearing your product, using your product, or be beside your product.

Check out this example from the Macy’s homepage:

image5 13

Notice it shows a person, and that person is looking at the promotional information and the CTA button.

We’ve already established consumers are drawn to faces. In this case, you’d look at the model’s face and then follow his gaze directly toward the text.

This is a great method for increasing conversions.

8. Allow customers to see what’s in their carts as they shop

The whole shopping cart concept is a bit strange.

Think about it.

You browse through products and funnel different items to a page you don’t actually see.

It’s not until the end of the browsing process that you go to your cart to view your items.

Most ecommerce stores do nothing to improve this aspect.

It’s not uncommon for people to forget what they placed in their carts and be surprised by the total price.

Incidentally, these are also common reasons for shopping cart abandonment:

13 Reasons for Shopping Cart Abandonment and How to Fix Them

Based on the responses in the graphic above, here are some suggestions for improving the shopping cart experience:

  • show customers what’s already in their carts every time they add new items;
  • communicate the total price of their items every step of the way;
  • have a “save to cart” feature for those who are not ready to check out;
  • have your own comparison charts against competitors within product pages;
  • list shipping costs as early as possible in the checkout process.

9. Give your customers lots of payment options

Ultimately, the most important aspect of a checkout procedure is the payment step.

Without the payment step, transactions can’t happen.

According to research, 54% of people feel having a variety of payment options is important when checking out online:

032 jpg 750 381 pixels

Some payment options may be more beneficial to your company than others.

I completely understand this.

One credit card company may charge higher transaction fees than others, but that doesn’t mean you shouldn’t accept that method of payment.

Recognize your customers have preferences. Certain payment options may give them better reward points or bonus miles over others.

If they want something but can’t buy it with their favorite card, they’ll just buy it from a different retailer instead.

You should accept newer and unconventional types of payment as well. In addition to accepting all major credit cards and debit cards, you need to accept as many payment methods as possible, including alternative forms of payment:

alternative payment

Let’s not get carried away here. In 2019, it’s probably not necessary to accept Bitcoin and other cryptocurrencies.

But in addition to all major credit cards, you need to accept alternatives such as Apple Pay and PayPal.

You don’t want your customers to leave your site without buying anything because you don’t accept the payment method they want to use.

Even if they have the options you accept, they still may go to one of your competitors instead so they can use their favorite method of payment.

The days of accepting only Visa and Mastercard are over. It’s time for you to adapt and add these other payment options to your checkout process.

I want to show you an example of this. Here’s a screenshot from the Nike website:

image8 12

If you look at the bottom right corner of the screenshot above, you’ll see they allow their customers to check out using PayPal.

This could appeal to people who have a high PayPal balance and who want to use it for purchases. Accepting PayPal can also help eliminate concerns from customers who may be worried about their credit card information getting stolen.

The reason why I used this example from Nike is because it also highlights another concept I mentioned earlier.

Although they encourage customers to create a profile, they allow them to continue the checkout as guests. Even under the guest checkout area, it shows all the benefits of becoming a member.

To join, all you need to do is check off a box and proceed.

Another quick point about your payment methods. I recommend asking for payment as the last step of the checkout procedure.

By now, the customer has already invested some time into providing other information, so they’ll be more likely to continue. Asking for their payment first could drive them away.

10. Include trust elements throughout your whole funnel

You probably already know that placing seals like TRUSTe or VeriSign Secured can help boost your conversion rate. But did you know that in most cases you won’t see a lift if you place those badges just on your checkout page?

security

If people don’t feel secure when they first visit your site, they’ll bounce right off it before clicking through to your checkout page.

You can combat this by placing security seals throughout your whole funnel. So, from your front end pages to your product pages to even your checkout page… you are more likely to boost your conversion rate if you use the secure seals on more than just your checkout page.

I myself haven’t seen a big boost from adding them to my checkout page only, but I have seen nice lifts when I added them to the whole site. Before you do this, however, there are a few things that you need to know:

  1. It’s rare that security seals boost conversion rates by more than 10%.
  2. If you can’t afford a TRUSTe or VeriSign seal, creating your own free generic version typically provides the same conversion boost.
  3. This tactic works better in spammy industries like finance or health.

11. Frequently asked questions

No matter what, a good percentage of your visitors will have doubts in their minds when they are on your checkout page. For this reason, you won’t be able to convert 100% of your visitors. But if you can address their doubts, you can increase your conversion rate.

By using Qualaroo on your checkout page, you can ask people questions like:

What else can we place on this page to convince you to buy?

You’ll get a lot of responses from people telling you why they are worried about completing the purchase. You can then take this data to create a list of frequently asked questions with corresponding answers and place it on your checkout page.

faq

When using this tactic on your checkout page, test placing the FAQ section towards the top of the page or below the page because placement can affect your conversion rate.

12. Help your visitors through live chat

When most companies test out using live chat, they aren’t seeing an increase in conversion rate because of two main reasons:

  1. They don’t have someone on the chat 24/7, so people are leaving with their questions unanswered.
  2. They are placing it on every page of their site, which can distract visitors.

If you want to test live chat, you need to make sure someone is there 24 hours a day. If you can’t put someone there, test a service like Chatter Lime as they provide you with someone who will respond to each chat request.

livechat

In addition to that, test having the chat only on your checkout page. That’s the page that typically brings up the most questions and uncertainty. Plus, if you add it to your homepage, people will focus their energy on typing in questions instead of reading your marketing copy, which could have persuaded them to buy.

13. Social proof

Adding corporate logos or testimonials from your current/past customers can help reassure your potential customers that you are offering a good product or service. This may not seem that important, but there is a lot of crap being sold on the web… and people are buying it.

This is leading to terrible online shopping experience for people and to buyer’s remorse. By placing social proof on your checkout page, you can increase the number of buyers going through your checkout page.

logos proof

If you are going to use logos of companies who are buying from you, make sure you use logos of companies of all sizes, from big to small… this way you won’t neglect any customer segment.

In addition, if you are using testimonials, make sure you follow the steps in this blog post. Placing weak testimonials that don’t contain a person’s full name, location or even picture can hurt your conversions. So, if you are going to use them, make sure you do it the right way.

14. Let shoppers know their shipping costs early in the checkout process.

You can do this by introducing a shipping calculator to provide an estimate of the additional costs to be covered.

Here’s an example:

Cards and Pockets Your Shopping Cart

15. Offer free shipping

Here’s a common mentality I see from ecommerce sites all the time. If it costs you money to ship your products, that means you should charge your customers for shipping, right?

Wrong.

While this may sound like a reasonable justification to you, your customers don’t see it that way.

In fact, shipping costs play a major role in why shopping carts are abandoned in the United States:

shipping

Do not charge your customers for shipping.

But you still need to make sure you’re turning a profit, even if you’re offering free shipping.

You’re better off raising the prices of your items so that the shipping costs are built into the base prices. Psychologically, this won’t impact your conversions.

That’s because customers won’t be surprised when they see additional charges when they check out. If your product is listed for $50 on the site, that’s what they expect to pay. But if the costs add up to $70 with taxes and shipping, it’ll hurt your conversions.

I’m not expecting you to be unrealistic here. Don’t ship your customers a piano overnight for free.

All I’m saying is you shouldn’t charge for standard ground shipping. If a customer wants the delivery to be expedited, you can let them pay an additional charge.

While this may not be feasible for everyone, it’s wise to find ways you can reduce costs for customers.

Many businesses offer free shipping once shoppers reach a certain price threshold.

Like this example from Fashion Nova:

Sneakers

As customers add new items to their carts, they’re reminded of how much more they need to spend to meet the threshold.

Classic High Waist Skinny Jeans Light Blue

Very clever.

16. Set up default billing/shipping address for returning customers

Most people hate filling out this information.

It’s time-consuming and repetitive, especially if you’re a returning customer.

This is necessary info, so people will do it anyway.

But there’s a lot of resistance.

What can you do?

In addition to eliminating unnecessary form fields, you can set up the form so that it auto-fills the information for returning customers.

Email address, name, billing address, and shipping address—all this information can be saved for future purchases.

Some stores use a tool that looks up addresses based on a postal code and auto-fills that info.

Here’s how it works.

You type in a zip code:

Fashion Nova Checkout 2

You’re prompted with a window like this:

Fashion Nova Checkout 1

You’re given address options based on your zip code so you don’t have to fill this yourself:

Fashion Nova Checkout 3

There’s also an address validation tool similar to this one.

When a shopper types in their address, they get asked if it’s the right one and are given other options.

This is useful for a few reasons.

First, it auto-fills with more accurate information.

Secondly, it reassures customers they have the right shipping info. This way, they’re not anxious about missing their shipment due to error.

There’s one thing you need to note.

Address validators aren’t always correct. It means customers should have the option to reject the suggestions and fill in their info themselves.

17. Satisfy your customers’ need for instant gratification.

Here’s what that means:

what is instant gratification Google Search

You want to give customers a sense that they’ll get what they want immediately.

This is an innate human need.

If you appeal to it, your customers will respond.

If you’re selling an information product, instant gratification is easy to provide. Your customers can have electronic access without delay.

But it’s trickier when you’re selling a product that has to be shipped.

My advice?

Take a page out of Amazon’s playbook.

They do this brilliantly.

Here’s what I mean:

Amazon com Checkout

If you know your items will be delivered to you in a couple of days, chances are you’ll be more likely to check out ASAP.

18. A/B test the elements of your checkout process

You can never truly be sure your checkout process is designed for the maximum number of conversions unless you put your theory to the test.

The best way to determine which elements are driving the highest conversions is through A/B testing.

If you’ve never run an A/B test before, the concept is very simple. You start by identifying one element of the page you want to test.

Then 50% of your site traffic will see version A, while the other 50% will see version B. Compare the conversion rates between the two variations to see which one yielded the best results.

When testing the checkout page, it makes sense to start with the “purchase/buy now” button, or whatever your final CTA button is that completes the transaction.

There are lots of potential tests you can run on this button:

  • size
  • color
  • placement
  • wording

Test only one element at a time.

For example, let’s say you test the conversion button at the bottom right side of the screen compared to the bottom left side of the screen.

Once you have conclusive results, you can implement that change and then move on to testing the wording of the button, e.g., “purchase” versus “buy.”

19. A data-driven approach to dealing with shopping cart abandonment

Want to find out the exact cause of your shopping cart abandonment?

Google Analytics is the tool to use.

It’s simple. I’ll give you a step-by-step play.

Step #1: Find the “Admin” tab so you can create a conversion goal:

Analytics 6

This is so you can track the actions your web visitors take.

Click on “Goals”:

Analytics 7

Step #2: Create a new goal and set it up to track a completed transaction.

Analytics 5

In the first step of the goal setup, select an appropriate template.

While you’re tracking cart abandonment, your ultimate goal is to get customers to make a completed online payment.

Select that option:

Analytics 9

It’s time to describe your goal.

Name your goal, and select “Destination” as the goal type.

The destination can be a thank-you page, which will help you track the number of completed purchases.

Analytics 3

Next, you want to set the URL of your Destination.

As I mentioned, this could be any page that customers are directed to after their purchases.

The only reason someone would be on this page is if they completed a transaction, right?

Analytics 4

Step #3: Map the path customers take leading up to complete a transaction.

This is what will help you determine where the pitfalls in your sales funnel are.

In the same “Goal details” section, switch the Funnel option to “ON.”

Analytics 8

List all the steps that customers take leading up to the purchase. Name each step, and add the corresponding URL.

Like this:

Analytics 2

If you have a one-page checkout, only include that page, of course.

Whatever steps customers take, include them all.

You may want to go through the process yourself to make sure.

Save your goal, and that’s it for the setup. Tracking will begin, and you’ll now have detailed data for each step of your funnel.

Step #4: Check your reports to analyze the data.

Here’s where to find them.

Under “Conversions,” click on “Goals.”

Top Conversion Paths Analytics

Pay special attention to “Funnel Visualization.”

Top Conversion Paths Analytics 1

You’ll see an illustration that looks something like this:

Goal Funnel Analytics

I just created this, so there’s no data. It will take some time for yours to show up as well.

This data will tell you where in your funnel customers are jumping ship. It will also tell you in how many sessions your goal was completed.

Useful, right?

You’ll have a complete view of the way customers move through your funnel. You can now make informed adjustments to decrease your shopping cart abandonment rate.

You should know this though: there’ll always be customers who drop out before completing a purchase.

That’s just the nature of the game.

You can optimize your process to reduce that percentage significantly.

But will the lost sales be lost forever?

Can they be salvaged?

They can, and I’ll tell you how.

20. The ultimate solution to recovering abandoned carts

I hate to bring up this depressing statistic again, but only 3 out of 10 shoppers complete their purchases.

There is, however, a simple follow-up step that can increase that number significantly.

Crazily enough, most businesses don’t take advantage of it.

I’m referring to cart abandonment emails.

This could be one email or a whole sequence. You decide.

The point of these emails is to recover lost sales. If a customer adds items to their cart and leaves without checking out, be sure to follow up via email.

Here’s a brilliant example from Vanity Planet:

70 off on orders over 60 nellianestclair gmail com Gmail 2

Many things are going right in this email. It:

  • offers a massive discount
  • includes a free shipping offer
  • uses personal and persuasive language
  • provides a simple solution for returning to cart
  • has a direct link to checkout

They made an irresistible offer.

Many people would go back to complete their purchases in a heartbeat.

When cart abandonment emails are done right, they’re hands down the most powerful solution to recapture lost sales.

I highly recommend you test this strategy and watch it make a difference.

Conclusion

Getting higher conversions for your ecommerce checkout process isn’t that difficult.

It just takes a little effort.

As you can see from everything I talked about in this guide, these methods aren’t really too extreme. They are also fairly easy to implement.

If you’re driving lots of traffic to your ecommerce site but those visitors aren’t converting, you need to analyze the design of your checkout process.

If you follow the tactics above, you should see a nice lift in your checkout page conversion rate. But just like with all forms of conversion optimization, you will have to A/B test everything.

Why? Because what works for one business won’t always work for another… even if they are in the same industry.

Website Usability Guide

Have you ever left a website because it was difficult to use?

Maybe you couldn’t find the page you were looking for. Or maybe their navigation menu didn’t have what you needed. Or perhaps there were way too many pop ups and advertisements.

Whatever the case, you didn’t put up with browsing a confusing website — even if it had something you know you wanted.

The same applies to your website. If your website isn’t user-friendly, it will never succeed. That’s why website usability needs to be a top priority in 2020.

A poor user experience impacts your site’s bounce rate, click-through rate, and (ultimately) your bottom line. If a user is unhappy with a website, they’ll just find a different website that does meet their needs.

Once they go, they’re gone: 88% of online users are unlikely to return to a website after a bad experience.

But following website usability best practices will also increase your conversion rates because visitors will be more likely to stick around and be open to your calls-to-action and other offers.

Most website owners don’t realize that their site isn’t user-friendly.

Obviously, nobody is going to intentionally make things difficult on their customers. But sometimes, we get so used to our websites that we don’t realize that there’s something wrong with it.

It can also happen when we don’t make intentional efforts to ensure our website is usable and accessible to large swaths of people.

That’s my inspiration for writing this guide. I want to show you the best practices you need to follow in 2020 to make your site user friendly. Follow along and make sure these principles are applied to your website.

How to Make Sure Your Website Is User-Friendly

Below are our eight best practices for making your website as user-friendly and accessible as possible:

Let’s dive in.

Optimize for mobile devices

This should go without saying but, surprisingly, I still find myself landing on websites that haven’t been optimized for mobile users.

It’s wild, because 92% of all Internet users access the Internet with a mobile device.

Those mobile users are doing more than just browsing from their devices; they’re buying as well.

In fact, mobile commerce is expected to increase by 22.3% or $3.56 trillion by 2021.

And it’s not enough to just focus on audiences in your own country. In fact, if you don’t look abroad, you could be leaving a lot of money on the table. For example, roughly 75% of ecommerce sales in China come from mobile devices.

So the first thing you need to do is make sure that your website is optimized for mobile devices. Even after that’s done, there are still improvements you can make to improve the website usability for mobile users.

And there are a ton of different ways you can make your website mobile-friendly. For example, perhaps the quickest way is to use a responsive theme for your website. These are themes that will adjust your content to match different screen sizes (see below).

When someone is browsing from a desktop computer, it’s easy for them to click nearly anywhere on the screen. On a desktop, there’s nothing wrong with putting your CTA or other clickable items in a corner.

That’s not the case for mobile devices where 75% of users navigate and click using their thumbs and 49% click with just one hand. Think about it. How often do you browse on your phone using just one hand, especially while you’re walking or doing something else?

As you can see from this graphic, there are better places on the screen to interact with one hand. If you have buttons in those red zones, it’s going to frustrate people on your mobile website.

It’s uncomfortable for them to try and reach the corners, and they might even click on something else by mistake. If they navigate to the wrong page, it’s going to be frustrating, since it adds steps to their process.

So even if your website passes a mobile-friendly test, it doesn’t necessarily mean that it’s been fully optimized for the user experience. Your layout still needs to be optimized and easy for people to navigate with one hand. Below is a good example of this from the NYT app.

Notice how all the most important elements are centered and well within reach of your thumb as you scroll down.

Follow WCAG standards

The web content accessibility guidelines (WCAG) were created so that websites can meet the needs of people with disabilities. The WCAG gets updated occasionally too so it’s important to check back often to see what changes have been made (the next update is due in 2021).

Roughly 1.2 billion people across the globe live with some form of a disability. You don’t want to discourage or discriminate against anyone visiting your website. Everyone is entitled to a good experience.

Here are some of the categories of disabilities that can affect how people experience webpages:

Auditory

Auditory disabilities encompass those who are hard of hearing to fully deaf. If your website relies on videos, music, and other sound-related media, you’ll want to make sure that your site design accommodates them.

For example, you should add captions to all video content. Make sure that captions are displayed long enough for people to read and process the information.

Cognitive

Those with cognitive disabilities might suffer from a wide range of issues including mental disabilities as well as neurological issues such as Alzehimer’s and dementia. As such, these folks might have a difficult time remembering things or focusing on a task for a prolonged period of time.

To accommodate them, you should simplify your website as much as possible. For example, don’t pack your navigation menu with a ton of different options. Web usability expert Steve Krug says that a cardinal rule should be “Don’t make me think!” That applies here.

Physical

Physical disabilities limit a person’s ability to move. This might include their ability to walk, use their limbs, or have full motor control over their body. It also includes people who have experienced amputation.

Users need to be able to explore your website with as limited movement as possible. For example, don’t make them scroll endlessly to access a page they need. Make sure navigation buttons are within easy reach too.

Speech

Speech disabilities might include everything from stuttering to muteness. As such, programs such as voice command will be very difficult or even impossible for these users.

Make sure that any software your website has that requires a speech function also accommodates those who cannot speak. You might add an option to type in what they need for example.

Visual

About 300 million people in the world are color blind. That doesn’t necessarily mean that they see in black and white. It just means they process certain colors differently. You need to make sure your website isn’t using conflicting colors that can’t be processed by people with visual impairments.

Avoid alternating color backgrounds and flashing lights on your website. These elements can trigger seizures from people who suffer from light sensitivity.

The WCAC has four main principles to meet their web accessibility standards.

If your website is perceivable, operable, understandable, and robust for as many people as possible, you’ll meet those standards.

Stick to common design elements

When you’re designing a website, it can be tempting to get creative. Maybe creativity is part of your brand’s image, or maybe you just want to experiment with something new. But creativity ultimately works better for elements like marketing than it does for overall design and functionality.

There’s a reason these best practices are tried-and-true. So save that innovation for your products and marketing campaigns. When it comes to usability, it’s in your best interest to follow common web design best practices.

People have a certain expectation when they land on a website. Let me give you an analogy to showcase my point.

What do you expect when you walk into a fast food chain, like McDonald’s? You wait in line, order at the register, then they call your number when your food is ready. That’s a pretty standard experience.

But what if you walked into a McDonald’s and an employee sat you at a table. They brought you some menus and asked you what you want to drink. Then they came back five minutes later to take your order, emulating a fine dining experience.

That’s not what you expect from a McDonald’s. You want fast food and fast service. Sure, this is a creative and unique approach, but it disrupts the customers’ flow by negatively subverting their expectations for that experience. In the process, it actually hinders their experience.

Now, apply this same concept to your website. If you try to reinvent the wheel, it won’t be a good experience for your visitors who are used to having things a certain way.

According to this study, these are the most standard elements people expect when they visit a website:

  • Logo in the top of screen
  • Contact information in top right of screen
  • Horizontal main menu navigation in the header at the top of each page
  • Search bar in the header
  • Social media follow icons in the footer

It’s in your best interest to follow these best practices. Don’t put the search bar in the footer and position your menu vertically on the right side of the screen. This will only confuse your visitors. That said, there are areas you can get a little more creative. This includes things like your logo, CTA designs, and header images.

Here’s a good example from our friends over at Crazy Egg.

This heat map was developed by tracking where visitors to QuickSprout clicked the most. Notice how this page follows the best practices for where to place navigational elements as well as the actual content. That’s because it adheres to a common visual hierarchy — which brings us to…

Create a visual hierarchy

It takes 2.6 seconds for a person’s eyes to land on an area of a website that will stimulate their first impression. This is something that happens involuntarily.

What does this mean in terms of your site’s usability? You need to make it easy for your visitors to understand what they’re looking at.

Imagine landing on a website that has 20 images on the homepage. Where do you look first? Here’s a good example of bad design from our friends in the Old Line State:

It’s messy, overwhelming, and draws your eye in so many directions, you don’t really know what to focus on. This is not a good user experience.

Instead, create a visual hierarchy that shows users the most important pieces of your website. This means placing the most important elements of a page (e.g. images, CTAs) in natural focal points.

Here’s an example. Look at these four circles and rank them on their order of importance.

Even though you don’t know anything about these circles and what they represent, you still know that the blue one is the most important, followed by the green one. That’s what a visual hierarchy looks like.

So if the most important piece of content on your homepage that will add value to the visitor is positioned as the yellow circle, that hurts the user experience.

Without a visual hierarchy, people might navigate to the wrong page or focus on unimportant components of your website. That’s not what you want to happen.

These are the factors that you need to keep in mind when you’re designing your visual hierarchy for website usability.

  • Size. Bigger is better.
  • Color. Bright colors will catch the visitor’s eye.
  • Contrast. Varied colors can emphasize (or de-emphasize) elements on your page.
  • Negative space. The spaces that you don’t use are just as important as those that you do.
  • Alignment. Visitors typically read from top to bottom and left to right when they get to a web page in an F pattern.

Keep these things in mind for simple, clean design. This will give your visitors a better user experience — while increasing their chances to accomplish goals like subscribing to a newsletter or purchasing a product.

Simplify the navigation

Ease of navigation is arguably the most important aspect of usability, especially for ecommerce businesses. Simplifying your navigational elements not only makes for clean design, but it also helps direct your visitors to landing pages in order to convert.

How does a user get from the homepage to checkout? How long does it take? How many clicks do they need to make?

These are all factors that need to be taken into consideration. Look at the top 10 reasons for shopping cart abandonment.

As you can see, two of the top three reasons for cart abandonment are related to navigation. Price was the only factor that ranked higher.

Though getting customers to sign up for an account might be crucial to your overall business strategy, you should find a simpler, more user-friendly way of doing so.

Simple navigation needs to be a priority for all websites, even if they aren’t selling products on an ecommerce platform.

Let’s say you run a simple blog. How do visitors get from your homepage to your blog? How are your blog posts organized? Can they search for a particular post?

All of these are related to navigation.

Clickable content also falls into this category. If the text on your homepage is clickable and brings people to another landing page, it needs to be clear. Make it obvious that certain images, text, and other assets are clickable. Change the color, underline it, or turn that text into a button. Otherwise, it will be challenging for people to know where to click.

Establish credibility

People won’t have a good user experience on your website if they think it’s untrustworthy. Credibility needs to be established right away. Otherwise, visitors will feel unsafe while they’re navigating.

Be transparent about your content, prices, and contact information. Don’t force people to hunt all of your website to find those things.

Here’s what people expect when they land on a homepage.

Keeping these numbers in mind, what do you think the perception of a website would be if the homepage doesn’t include product information, contact information, or an About Us page? It’s going to be negative.

Prices should be clearly displayed next to each product. If the user has to click or navigate to another page to view prices, it’s not optimal for their experience.

There are exceptions. For example, SaaS platforms and other service providers sometimes have prices elsewhere. In these cases, having a dedicated pricing page that’s clearly labeled will help. This is primarily a workaround for offering deep discounts that they can’t advertise because of a relationship with the manufacturer.

Making security elements clear and visible (HTTPS/SSL, badges, etc) goes a long way in establishing credibility too. Once you’ve established credibility on your website, your visitors will be at ease. They won’t be worried about getting scammed or clicking on a spam link. This will increase their chances of engaging with your content and converting.

Make sure your content is legible

Just because a font would look cool for your next tattoo, it doesn’t mean that it belongs on your website. If people can’t read the text on your site, they’re going to leave.

So, please, leave the Papyrus and Jokerman fonts for your fifth grader’s PowerPoint presentation. Instead, take a look at some of the best fonts that go together in 2020.

Even after you pick a font, it doesn’t necessarily mean that your content is legible. You also need to think about your color choices, paragraph length, kerning, and your spacing.

Let’s say you pick a standard font, like the one I’m using for this blog post right now. It’s clearly legible, but not if you make the text yellow and put it over an orange background.

People don’t read word for word. Think about it. When you’re going through a website, you’re likely just trying to find the information that’s most important to you. Your reader will do the same.

So your content needs to be highly scannable. You might be scanning this blog post right now. That’s why I write with short paragraphs and include lots of headers, images, and bullet points.

If each section was just one big block of text, it would be tough to read. But making it legible and scannable improves the user experience.

Be consistent

Your website needs to have consistency from page to page. If you’re always switching your themes and layouts, it’s going to be too confusing.

For example, let’s analyze this product page from Lululemon.

You’ll see all of these elements on product pages:

  • Product images on the left
  • Product name in on top right
  • Price below product name
  • Description on right
  • Color choices below description
  • Add to cart on bottom right

This is all very simple and straightforward. There’s absolutely nothing wrong with this layout.

Now, imagine that you’re browsing on this website and you land on this page. Maybe you add the item to your cart; maybe not. But either way, you decide to look at some more products.

If you navigate to another product page and it doesn’t look identical to this, you’re going to be very confused. All of these elements need to be consistent on each page.

Conclusion

Website usability can make or break the success of your site. If visitors don’t have a good experience, they aren’t going to come back.

That’s why you’ll want to keep in mind the best practices for website usability. These will help you create a website that’s not only accessible to more visitors, but will help accomplish sales goals and generate leads:

  • Mobile optimization. Keep your website elements where the thumb can reach.
  • Website accessibility. Ensure that your website can be read and accessed by more people.
  • Common design elements. Familiar design lets new visitors easily navigate your website.
  • Visual hierarchy. Helps keep your readers focused on what’s most important on your website.
  • Simple navigation. Make sure that all your navigation buttons are intentional and lead your readers down the right path.
  • Credibility. Meet your readers’ expectations for each of your pages.
  • Legible and scannable content. Don’t hit your reader with a bunch of text they won’t read.
  • Consistency from page to page. Keep a consistent theme, layout, and color throughout your entire website.

Use this guide as a reference to implement these components on your website. Once you’ve accomplished this, you’ll benefit from happy website visitors that will convert and keep coming back in the future.

Exploring The Latest Web Design Trends Together With Be Theme

Exploring The Latest Web Design Trends Together With Be Theme

Exploring The Latest Web Design Trends Together With Be Theme

Nick Babich

(This is a sponsored article.) Designers have a strange relationship with trends. On the one hand, when designers follow a crowd, they might feel that they aren’t able to express enough creativity. On the other hand, trends can tell designers a lot about user preferences — what people love, what they hate — and ultimately help designers to create products with better adoption rates.

People are visual creatures, and visual design has a significant impact on the way we understand products. In this article, I want to focus on the most crucial web design trends and illustrate each trend using Be Theme, a responsive multipurpose WordPress theme.

Let’s get started.

1. Digital Illustrations

Digital illustrations have become one of the most important trends in visual design. Relevant illustrations can make your design stand out from a crowd and establish a truly emotional connection with visitors. Illustrations are quite a versatile tool; product designers can use digital illustrations for various purposes: for hero sections, for feature descriptions, or even as a subtle icon in the navigation bar.

Two types of illustrations are popular among digital designers: hand-drawn flat illustrations and three-dimensional ones. Flat hand-drawn ones give an impression of fine craftsmanship, of a hand-made design; it’s relatively easy to see the personal style of the illustrator through their work. Slack, Intercom and Dropbox are just a few companies that use flat hand-drawn illustrations.

Hand-drawn illustrations look and feel personal for users
Hand-drawn illustrations look and feel personal for users. (Image source: themes.muffingroup) (Large preview)

Three-dimensional illustrations are quite a new trend. Designers started using them to add more realism, blurring the boundary between the digital and physical worlds.

3D illustrations give users the impression that they can almost reach out and touch objects in the scene
3D illustrations give users the impression that they can almost reach out and touch objects in the scene. (Image source: themes.muffingroup) (Large preview)

2. Vibrant Colors

There is a reason why so many digital product designers strive to use vibrant colors: Vibrant colors give visual interest to a layout. User attention is a precious resource, and one of the most effective ways to grab attention is by using colors that stand out. Bright colors used for the background can capture the visitor’s attention and contribute to a truly memorable experience.

Vivid colors are an excellent way to grab the visitor’s attention
Vivid colors are an excellent way to grab the visitor’s attention. (Image source: themes.muffingroup) (Large preview)

3. Hero Video Headers

“Show, don’t tell” is a foundational principle of good product design. Imagery plays a key role in visual design because it helps the designers to deliver the main idea quickly.

For a long time, web designers have had to use static imagery to convey their main idea. But the situation has changed. High-speed connections make it much easier for web designers to turn their home pages into immersive movie-style experiences. Video engages users, and users are more willing to spend time watching clips. Video clips used in a hero section can vary from a few seconds of looped video to full-length preview clips with audio.

Designers use video to tell stories
Designers use video to tell stories. (Image source: themes.muffingroup) (Large preview)

4. Split Screen

Split screen is a relatively simple design technique. All you need to do to create one is divide the screen into two parts (usually 50/50) and use each part to deliver a distinct message. This technique translates well on mobile; two horizontal panels of content can be collapsed into vertical content blocks on small screens. The technique works well when you need to deliver two separate messages, as shown below.

Split screen is an excellent choice for e-commerce websites that offer products for both women and men
Split screen is an excellent choice for e-commerce websites that offer products for both women and men. (Image source: themes.muffingroup) (Large preview)

It also works well when you have to pair a text message with relevant imagery:

Split screen can be used to connect a text message with relevant imagery
Split screen can be used to connect a text message with relevant imagery. (Image source: themes.muffingroup) (Large preview)

5. Geometric Patterns

Designers can use geometric shapes and patterns endlessly to create beautiful ornaments. This technique works equally well for digital products. Designers can use SVG images and high-resolution PNGs with geometric patterns as backgrounds. Such backgrounds scale well, so you won’t have to worry about how they will look on small and large displays.

With geometric patterns, you can let your creativity run wild
With geometric patterns, you can let your creativity run wild. (Image source: themes.muffingroup) (Large preview)

6. Gradients and Duotones

Gradients are the multipurpose tool that works in pretty much any type of design. Designers often use gradients to give their work a little more depth. Modern graphic design trends dictate the use of big, bold and colorful gradients, which help designers make a statement.

When it comes to gradients, designers have a lot of creative freedom. They can experiment with various colors and types, using radial gradient, linear gradients, etc. For example, this is what happens when you put a linear one-color gradient overlay on a photo:

One-color gradient overlay on a photo
One-color gradient overlay on a photo (Image source: themes.muffingroup) (Large preview)

And this is how a radial two-color gradient looks on a plain background:

Two-color gradient over a plain background
Two-color gradient over a plain background. (Image source: themes.muffingroup) (Large preview)

The duotone effect was made popular by Spotify, the online music-streaming service. The service was searching for a bold identity for its brand and decided to use duotones in its design.

In the simplest terms, duotones are filters that replace the whites and blacks in a photo with two colors. Duotones can make almost any image match your company’s branding; simply use your brand’s primary color as the duotone filter.

A duotone in the hero image
A duotone in the hero image (Image source: themes.muffingroup) (Large preview)

7. Bold Typography

Most designers know that content should always come first in the design process. A design should honor the message that the product’s creators want to deliver to their users. Bold typography helps designers to achieve that. Massive, screen-dominating text puts the written content center stage.

Bold fonts serve a functional purpose — they make it easy to read the text. Consider the following example. This template is an excellent example of how powerful a bold font can be:

Designers can use bold typography to make text the focal point in a graphic
Designers can use bold typography to make text the focal point in a graphic. (Image source: themes.muffingroup) (Large preview)

Conclusion

“Should I follow the trends?” As a designer, you have to answer that for yourself. But if you want to see how each trend works for your project, you can do it right now. All of the Be Theme examples listed above can serve as excellent starting points for your creative journey.

Smashing Editorial (ms, ra, yk, il)

Getting into GraphQL with AWS AppSync

GraphQL is becoming increasingly popular. The problem is that if you are a front-end developer, you are only half of the way there. GraphQL is not just a client technology. The server also has to be implemented according to the specification. This means that in order to implement GraphQL into your application, you need to learn not only GraphQL on the front end, but also GraphQL best practices, server-side development, and everything that goes along with it on the back end.

There will come a time when you will also have to deal with issues like scaling your server, complex authorization scenarios, malicious queries, and more issues that require more expertise and even deeper knowledge around what is traditionally categorized as back-end development.

Thankfully, we have an array of managed back-end service providers today that allow front-end developers to only worry about implementing features on the front end without having to deal with all of the traditional back-end work.

Services like Firebase (API) / AWS AppSync (database), Cloudinary (media), Algolia (search) and Auth0 (authentication) allow us to offload our complex infrastructure to a third-party provider and instead focus on delivering value to end users in the form of new features instead.

In this tutorial, we’ll learn how to take advantage of AWS AppSync, a managed GraphQL service, to build a full-stack application without writing a single line of back-end code.

While the framework we’re working in is React, the concepts and API calls we will be using are framework-agnostic and will work the same in Angular, Vue, React Native, Ionic or any other JavaScript framework or application.

We will be building a restaurant review app. In this app, we will be able to create a restaurant, view restaurants, create a review for a restaurant, and view reviews for a restaurant.

An image showing four different screenshots of the restaurant app in mobile view.

The tools and frameworks that we will be using are React, AWS Amplify, and AWS AppSync.

AWS Amplify is a framework that allows us to create and connect to cloud services, like authentication, GraphQL APIs, and Lambda functions, among other things. AWS AppSync is a managed GraphQL service.

We’ll use Amplify to create and connect to an AppSync API, then write the client side React code to interact with the API.

View Repo

Getting started

The first thing we’ll do is create a React project and move into the new directory:

npx create-react-app ReactRestaurants

cd ReactRestaurants

Next, we’ll install the dependencies we’ll be using for this project. AWS Amplify is the JavaScript library we’ll be using to connect to the API, and we’ll use Glamor for styling.

yarn add aws-amplify glamor

The next thing we need to do to is install and configure the Amplify CLI:

npm install -g @aws-amplify/cli

amplify configure

Amplify’s configure will walk you through the steps needed to begin creating AWS services in your account. For a walkthrough of how to do this, check out this video.

Now that the app has been created and Amplify is ready to go, we can initialize a new Amplify project.

amplify init

Amplify init will walk you through the steps to initialize a new Amplify project. It will prompt you for your desired project name, environment name, and text editor of choice. The CLI will auto-detect your React environment and select smart defaults for the rest of the options.

Creating the GraphQL API

One we’ve initialized a new Amplify project, we can now add the Restaurant Review GraphQL API. To add a new service, we can run the amplify add command.

amplify add api

This will walk us through the following steps to help us set up the API:

? Please select from one of the below mentioned services GraphQL
? Provide API name bigeats
? Choose an authorization type for the API API key
? Do you have an annotated GraphQL schema? N
? Do you want a guided schema creation? Y
? What best describes your project: Single object with fields
? Do you want to edit the schema now? Y

The CLI should now open a basic schema in the text editor. This is going to be the schema for our GraphQL API.

Paste the following schema and save it.

// amplify/backend/api/bigeats/schema.graphql

type Restaurant @model {
  id: ID!
  city: String!
  name: String!
  numRatings: Int
  photo: String!
  reviews: [Review] @connection(name: "RestaurantReview")
}
type Review @model {
  rating: Int!
  text: String!
  createdAt: String
  restaurant: Restaurant! @connection(name: "RestaurantReview")
}

In this schema, we’re creating two main types: Restaurant and Review. Notice that we have @model and @connection directives in our schema.

These directives are part of the GraphQL Transform tool built into the Amplify CLI. GraphQL Transform will take a base schema decorated with directives and transform our code into a fully functional API that implements the base data model.

If we were spinning up our own GraphQL API, then we’d have to do all of this manually:

  1. Define the schema
  2. Define the operations against the schema (queries, mutations, and subscriptions)
  3. Create the data sources
  4. Write resolvers that map between the schema operations and the data sources.

With the @model directive, the GraphQL Transform tool will scaffold out all schema operations, resolvers, and data sources so all we have to do is define the base schema (step 1). The @connection directive will let us model relationships between the models and scaffold out the appropriate resolvers for the relationships.

In our schema, we use @connection to define a relationship between Restaurant and Reviews. This will create a unique identifier for the restaurant ID for the review in the final generated schema.

Now that we’ve created our base schema, we can create the API in our account.

amplify push
? Are you sure you want to continue? Yes
? Do you want to generate code for your newly created GraphQL API Yes
? Choose the code generation language target javascript
? Enter the file name pattern of graphql queries, mutations and subscriptions src/graphql/**/*.js
? Do you want to generate/update all possible GraphQL operations - queries, mutations and subscriptions Yes

Because we’re creating a GraphQL application, we typically would need to write all of our local GraphQL queries, mutations and subscriptions from scratch. Instead, the CLI will be inspecting our GraphQL schema and then generating all of the definitions for us and saving them locally for us to use.

After this is complete, the back end has been created and we can begin accessing it from our React application.

If you’d like to view your AppSync API in the AWS dashboard, visit https://console.aws.amazon.com/appsync and click on your API. From the dashboard you can view the schema, data sources, and resolvers. You can also perform queries and mutations using the built-in GraphQL editor.

Building the React client

Now that the API is created and we can begin querying for and creating data in our API. There will be three operations we will be using to interact with our API:

  1. Creating a new restaurant
  2. Querying for restaurants and their reviews
  3. Creating a review for a restaurant

Before we start building the app, let’s take a look at how these operations will look and work.

Interacting with the AppSync GraphQL API

When working with a GraphQL API, there are many GraphQL clients available.

We can use any GraphQL client we’d would like to interact with an AppSync GraphQL API, but there are two that are configured specifically to work most easily. These are the Amplify client (what we will use) and the AWS AppSync JS SDK (similar API to Apollo client).

The Amplify client is similar to the fetch API in that it is promise-based and easy to reason about. The Amplify client does not support offline out of the box. The AppSync SDK is more complex but does support offline out of the box.

To call the AppSync API with Amplify, we use the API category. Here’s an example of how to call a query:

import { API, graphqlOperation } from 'aws-amplify'
import * as queries from './graphql/queries'

const data = await API.graphql(graphqlOperation(queries.listRestaurants))

For a mutation, it is very similar. The only difference is we need to pass in a a second argument for the data we are sending in the mutation:

import { API, graphqlOperation } from 'aws-amplify'
import * as mutations from './graphql/mutations'

const restaurant = { name: "Babalu", city: "Jackson" }
const data = await API.graphql(graphqlOperation(
  mutations.createRestaurant,
  { input: restaurant }
))

We use the graphql method from the API category to call the operation, wrapping it in graphqlOperation, which parses GraphQL query strings into the standard GraphQL AST.

We’ll be using this API category for all of our GraphQL operation in the app.

Here is the repo containing the final code for this project.

Configuring the React app with Amplify

The first thing we need to do in our app is configure it to recognize our Amplify credentials. When we created our API, the CLI created a new file called aws-exports.js in our src folder.

This file is created and updated for us by the CLI as we create, update and delete services. This file is what we’ll be using to configure the React application to know about our services.

To configure the app, open up src/index.js and add the following code:

import Amplify from 'aws-amplify'
import config from './aws-exports'
Amplify.configure(config)

Next, we will create the files we will need for our components. In the src directory, create the following files:

  • Header.js
  • Restaurant.js
  • Review.js
  • CreateRestaurant.js
  • CreateReview.js

Creating the components

While the styles are referenced in the code snippets below, the style definitions have been omitted to make the snippets less verbose. For style definitions, see the final project repo.

Next, we’ll create the Header component by updating src/Header.js.

// src/Header.js

import React from 'react'
import { css } from 'glamor'
const Header = ({ showCreateRestaurant }) => (
  <div {...css(styles.header)}>
    <p {...css(styles.title)}>BigEats</p>
    <div {...css(styles.iconContainer)}>
      <p {...css(styles.icon)} onClick={showCreateRestaurant}>+</p>
    </div>
  </div>
)

export default Header

Now that our Header is created, we’ll update src/App.js. This file will hold all of the interactions with the API, so it is pretty large. We’ll define the methods and pass them down as props to the components that will call them.

// src/App.js

import React, { Component } from 'react'
import { API, graphqlOperation } from 'aws-amplify'

import Header from './Header'
import Restaurants from './Restaurants'
import CreateRestaurant from './CreateRestaurant'
import CreateReview from './CreateReview'
import Reviews from './Reviews'
import * as queries from './graphql/queries'
import * as mutations from './graphql/mutations'

class App extends Component {
  state = {
    restaurants: [],
    selectedRestaurant: {},
    showCreateRestaurant: false,
    showCreateReview: false,
    showReviews: false
  }
  async componentDidMount() {
    try {
      const rdata = await API.graphql(graphqlOperation(queries.listRestaurants))
      const { data: { listRestaurants: { items }}} = rdata
      this.setState({ restaurants: items })
    } catch(err) {
      console.log('error: ', err)
    }
  }
  viewReviews = (r) => {
    this.setState({ showReviews: true, selectedRestaurant: r })
  }
  createRestaurant = async(restaurant) => {
    this.setState({
      restaurants: [...this.state.restaurants, restaurant]
    })
    try {
      await API.graphql(graphqlOperation(
        mutations.createRestaurant,
        {input: restaurant}
      ))
    } catch(err) {
      console.log('error creating restaurant: ', err)
    }
  }
  createReview = async(id, input) => {
    const restaurants = this.state.restaurants
    const index = restaurants.findIndex(r => r.id === id)
    restaurants[index].reviews.items.push(input)
    this.setState({ restaurants })
    await API.graphql(graphqlOperation(mutations.createReview, {input}))
  }
  closeModal = () => {
    this.setState({
      showCreateRestaurant: false,
      showCreateReview: false,
      showReviews: false,
      selectedRestaurant: {}
    })
  }
  showCreateRestaurant = () => {
    this.setState({ showCreateRestaurant: true })
  }
  showCreateReview = r => {
    this.setState({ selectedRestaurant: r, showCreateReview: true })
  }
  render() {
    return (
      <div>
        <Header showCreateRestaurant={this.showCreateRestaurant} />
        <Restaurants
          restaurants={this.state.restaurants}
          showCreateReview={this.showCreateReview}
          viewReviews={this.viewReviews}
        />
        {
          this.state.showCreateRestaurant && (
            <CreateRestaurant
              createRestaurant={this.createRestaurant}
              closeModal={this.closeModal}   
            />
          )
        }
        {
          this.state.showCreateReview && (
            <CreateReview
              createReview={this.createReview}
              closeModal={this.closeModal}   
              restaurant={this.state.selectedRestaurant}
            />
          )
        }
        {
          this.state.showReviews && (
            <Reviews
              selectedRestaurant={this.state.selectedRestaurant}
              closeModal={this.closeModal}
              restaurant={this.state.selectedRestaurant}
            />
          )
        }
      </div>
    );
  }
}
export default App

We first create some initial state to hold the restaurants array that we will be fetching from our API. We also create Booleans to control our UI and a selectedRestaurant object.

In componentDidMount, we query for the restaurants and update the state to hold the restaurants retrieved from the API.

In createRestaurant and createReview, we send mutations to the API. Also notice that we provide an optimistic update by updating the state immediately so that the UI gets updated before the response comes back in order to make our UI snappy.

Next, we’ll create the Restaurants component (src/Restaurants.js).

// src/Restaurants.js

import React, { Component } from 'react';
import { css } from 'glamor'

class Restaurants extends Component {
  render() {
    const { restaurants, viewReviews } = this.props
    return (
      <div {...css(styles.container)}>
        {
          restaurants.length === Number(0) && (
            <h1
              {...css(styles.h1)}
            >Create your first restaurant by clicking +</h1>
          )
        }
        {
          restaurants.map((r, i) => (
            <div key={i}>
              <img
                src={r.photo}
                {...css(styles.image)}
              />
              <p {...css(styles.title)}>{r.name}</p>
              <p {...css(styles.subtitle)}>{r.city}</p>
              <p
                onClick={() => viewReviews(r)}
                {...css(styles.viewReviews)}
              >View Reviews</p>
              <p
                onClick={() => this.props.showCreateReview(r)}
                {...css(styles.createReview)}
              >Create Review</p>
            </div>
          ))
        }
      </div>
    );
  }
}

export default Restaurants

This component is the main view of the app. We map over the list of restaurants and show the restaurant image, its name and location, and links that will open overlays to show reviews and create a new review.

Next, we’ll look at the Reviews component (src/Reviews.js). In this component, we map over the list of reviews for the chosen restaurant.

// src/Reviews.js

import React from 'react'
import { css } from 'glamor'

class Reviews extends React.Component {
  render() {
    const { closeModal, restaurant } = this.props
    return (
      <div {...css(styles.overlay)}>
        <div {...css(styles.container)}>
          <h1>{restaurant.name}</h1>
          {
            restaurant.reviews.items.map((r, i) => (
              <div {...css(styles.review)} key={i}>
                <p {...css(styles.text)}>{r.text}</p>
                <p {...css(styles.rating)}>Stars: {r.rating}</p>
              </div>
            ))
          }
          <p onClick={closeModal}>Close</p>
        </div>
      </div>
    )
  }
}

export default Reviews

Next, we’ll take a look at the CreateRestaurant component (src/CreateRestaurant.js). This component holds a form that keeps up with the form state. The createRestaurant class method will call this.props.createRestaurant, passing in the form state.

// src/CreateRestaurant.js

import React from 'react'
import { css } from 'glamor';

class CreateRestaurant extends React.Component {
  state = {
    name: '', city: '', photo: ''
  }
  createRestaurant = () => {
    if (
      this.state.city === '' || this.state.name === '' || this.state.photo === ''
    ) return
    this.props.createRestaurant(this.state)
    this.props.closeModal()
  }
  onChange = ({ target }) => {
    this.setState({ [target.name]: target.value })
  }
  render() {
    const { closeModal } = this.props
    return (
      <div {...css(styles.overlay)}>
        <div {...css(styles.form)}>
          <input
            placeholder='Restaurant name'
            {...css(styles.input)}
            name='name'
            onChange={this.onChange}
          />
          <input
            placeholder='City'
            {...css(styles.input)}
            name='city'
            onChange={this.onChange}
          />
          <input
            placeholder='Photo'
            {...css(styles.input)}
            name='photo'
            onChange={this.onChange}
          />
          <div
            onClick={this.createRestaurant}
            {...css(styles.button)}
          >
            <p
              {...css(styles.buttonText)}
            >Submit</p>
          </div>
          <div
            {...css([styles.button, { backgroundColor: '#555'}])}
            onClick={closeModal}
          >
            <p
              {...css(styles.buttonText)}
            >Cancel</p>
          </div>
        </div>
      </div>
    )
  }
}

export default CreateRestaurant

Next, we’ll take a look at the CreateReview component (src/CreateReview.js). This component holds a form that keeps up with the form state. The createReview class method will call this.props.createReview, passing in the restaurant ID and the form state.

// src/CreateReview.js

import React from 'react'
import { css } from 'glamor';
const stars = [1, 2, 3, 4, 5]
class CreateReview extends React.Component {
  state = {
    review: '', selectedIndex: null
  }
  onChange = ({ target }) => {
    this.setState({ [target.name]: target.value })
  }
  createReview = async() => {
    const { restaurant } = this.props
    const input = {
      text: this.state.review,
      rating: this.state.selectedIndex + 1,
      reviewRestaurantId: restaurant.id
    }
    try {
      this.props.createReview(restaurant.id, input)
      this.props.closeModal()
    } catch(err) {
      console.log('error creating restaurant: ', err)
    }
  }
  render() {
    const { selectedIndex } = this.state
    const { closeModal } = this.props
    return (
      <div {...css(styles.overlay)}>
        <div {...css(styles.form)}>
          <div {...css(styles.stars)}>
            {
              stars.map((s, i) => (
                <p
                  key={i}
                  onClick={() => this.setState({ selectedIndex: i })}
                  {...css([styles.star, selectedIndex === i && { backgroundColor: 'gold' }])}
                >{s} star</p>
              ))
            }
          </div>
          <input
            placeholder='Review'
            {...css(styles.input)}
            name='review'
            onChange={this.onChange}
          />
          <div
            onClick={this.createReview}
            {...css(styles.button)}
          >
            <p
              {...css(styles.buttonText)}
            >Submit</p>
          </div>
          <div
            {...css([styles.button, { backgroundColor: '#555'}])}
            onClick={closeModal}
          >
            <p
              {...css(styles.buttonText)}
            >Cancel</p>
          </div>
        </div>
      </div>
    )
  }
}

export default CreateReview

Running the app

Now that we have built our back-end, configured the app and created our components, we’re ready to test it out:

npm start

Now, navigate to http://localhost:3000. Congratulations, you’ve just built a full-stack serverless GraphQL application!

Conclusion

The next logical step for many applications is to apply additional security features, like authentication, authorization and fine-grained access control. All of these things are baked into the service. To learn more about AWS AppSync security, check out the documentation.

If you’d like to add hosting and a Continuous Integration/Continuous Deployment pipeline for your app, check out the Amplify Console.

I also maintain a couple of repositories with additional resources around Amplify and AppSync: Awesome AWS Amplify and Awesome AWS AppSync.

If you’d like to learn more about this philosophy of building apps using managed services, check out my post titled "Full-stack Development in the Era of Serverless Computing."

The post Getting into GraphQL with AWS AppSync appeared first on CSS-Tricks.

Stackbit

This is not a sponsored post. I requested a beta access for this site called Stackbit a while back, got my invite the other day, and thought it was a darn fine idea that's relevant to us web nerds — particularly those of us who spin up a lot of JAMstack sites.

I'm a big fan of the whole idea of JAMstack sites. Take our new front-end development conferences website as one little example. That site is a custom theme built with 11ty, version controlled on GitHub, hosted on Netlify, and content-managed with Netlify CMS.

Each JAMstack site is a little selection of services (⬅ I'm rebuilding that site to be even more JAMstacky!). I think it's clever that Stackbit helps make those choices quickly.

Pick a theme, a site generator, a CMS, a repository platform, and a deployment service... and go! Like this:

Clever!

Direct Link to ArticlePermalink

The post Stackbit appeared first on CSS-Tricks.

React.js Context Tutorial: A Better Way to Store State?

While creating a component in a typical React app, we end up creating layers of functional components and class components. Much of the time, we end up following a pattern where we pass props to a functional or class component from Grand Parents to Great Grand Children (referring to the hierarchy shown below). There are cases when props are not required at a certain level but are there just to be passed to another component.

We can use React's context pattern to solve this problem. It's based on the Consumer Provider pattern, i.e. a producer stores the state and methods to manipulate the state and the consumer can access them whenever necessary. 

Keeping it quick: Chatbots in the age of convenience

Meeting growing consumer information needs

Last year, Google fielded 3.8 million search requests per minute. If even just a tiny fraction of this search traffic is driving to your website, it might still be difficult to offer practical solutions to consumer issues on a human level. Difficulty aside, it takes time, and that is something precious we all have little of in the increasingly connected internet age.

The desire for instant gratification has, over time, made chatbots more and more appealing to businesses looking to streamline their customer service experience. This instant gratification economy has become so widespread, in fact, that many online retailers have done away with an “Add to cart” button and have replaced it with a “Buy it now” option.

We exist in a state of constant interaction and feedback with the world around us, mostly through the use of social media and entertainment apps that provide a seemingly endless flow of information. With so much available at our fingertips and with our increasing need for immediate response, chatbots have never been a more attractive option for the average business. As millennials continue to drive trends in customer service through the way they interact online, you can expect to see more and more chatbots popping up on your most frequented sites.

Humanity in chatbots

The mere mention of chatbots might elicit a groan from consumers who interacted with less-developed bots in the early days of online retail and customer service. In the past, these bots were perceived as more hassle than they were worth. In many cases, consumers are more interested in talking to a human representative who can provide more direct answers. Although most of our interactions are streamlined through the web, human connection is still important and the use of chatbots partially removes this from the customer service process.

Despite the apparent absence of human customer service, chatbots can often do things that human service representatives can’t, including solving complex equations in a matter of seconds and using keyword recognition to direct the customer to the exact solution to a specific query. Bots are also constantly learning ways to improve service—every time a person has a conversation with a chatbot, the bot learns from the interaction to inform future communication. These bots have a response rate of 100 percent, and can make large strides toward improving customer communications by replying to messages that may otherwise slip through the cracks. Plus, when a human touch is really needed, almost all bots can redirect customers to human representatives.

The way of the future

With the explosive growth of online commerce, it’s clear that chatbots aren’t going anywhere. Artificial intelligence continues to gain popularity, and, as the technology expands, the bots themselves are getting smarter and smarter. Not only are they becoming better at talking to consumers, they are also increasing overall efficiency. For example, in 2017, Facebook acquired the bot start-up, Ozlo, for this very reason—to create an easier and more specific customer service experience.

In 2018, VentureBeat reported that the value of the global chatbot market is projected to surpass $1.34 billion by 2024. This figure not only suggests that chatbots are here to stay but that they are more popular than we might think. In fact, have used them and 70 percent reported positive results and indicated a willingness to use them again in the future.

Chatbots provide an opportunity for consumers to engage with new technology. We are always looking to try the next big thing—the next model of iPhone, the new social media platform, or the latest video game that is exploding in popularity. By nature of the way that they are built, chatbots learn as you talk to them, meaning that users are like developers themselves. Bots are the ultimate way to engage with technology, offering users the chance to be part of the technology’s evolution.

For those who are especially interested in the progress of chatbots, it has never been easier to learn more about bots or even to build your own. Amazon recently launched a bot information portal specifically designed to help consumers and businesses learn more about chatbots and the steps to take to achieve maximum efficiency through the use of artificial intelligence.

With instant gratification driving the way that users interact online, it is likely that we will see the popularity of chatbots continue to rise over the next five years. Convenience and instant response rates make bots an attractive option, especially as businesses look to better serve a younger demographic of consumers who have grown up on the internet and who are accustomed to having information quickly accessible at their fingertips. Whether you’re a chatbot user, build your own chatbots, or simply enjoy learning more about them, you’re part of an exciting wave of the future of technology driven by convenience.

This is a guest article by John Van Duyn.

Finding More Hidden Gems in Holt-Winters

Welcome back to this three-part blog post series on Holt-Winters and why it's still highly relevant today. To understand Part Two, I suggest reading Part One, in which we covered:

  1. When to use Holt-Winters.
  2. How Single Exponential Smoothing works.
  3. A conceptual overview of optimization for Single Exponential Smoothing.
  4. Extra: The proof for optimization of the Residual Sum of Squares (RSS) for Linear Regression.

In this piece, Part Two, we'll explore:

Record and Play Load Testing in 5 Steps

While Apache JMeter allows you to create a load test from scratch, it also gives you the opportunity to record and playback load test scenarios for your web or mobile applications. Recording performance test scenarios are very useful when it comes to web or mobile testing. Websites and mobile applications make many requests varying from the initial server to third-party applications, like analytics sites, etc. Therefore implementing those requests from scratch may not be the best idea. In those cases, we recommend you to use the recording module of JMeter.

JMeter has a special module for that purpose. It’s called HTTP Test Script Recorder. This module works as a proxy on the host and port that you provide and listen to the HTTP requests. Then, it creates HTTP Sampler for recorded requests.