Back to Top

Guide To Google Ads Performance Planner

The Performance Planner helps advertisers optimize campaigns by suggesting an “ideal plan” by “spreading spend in the most effective way among campaigns in the plan.” Performance Planner is easy to use and certainly helpful, but it should be used with caution.

Read more at PPCHero.com

Reblogged 2 days ago from feedproxy.google.com

Your First Google Ads Campaign: Everything You Should Know

This article goes over the very basics of getting started advertising with Google Ads for someone with little to no experience.

Read more at PPCHero.com

Reblogged 2 days ago from feedproxy.google.com

Be smart, advertisers. Here’s how to approach rising Google brand CPC

While we are at the mercy of Google’s auction systems in determining CPC, we can install safeguards to ensure increases are controlled.

Please visit Search Engine Land for the full article.

Reblogged 2 days ago from feeds.searchengineland.com

SEMrush expands to Amazon with Sellerly for product page testing

The product detail page optimization testing tool is free for Amazon sellers.

Please visit Search Engine Land for the full article.

Reblogged 2 days ago from feeds.searchengineland.com

Seven reasons why your rankings dropped and how to fix them

Do you know the triumph when your content finally hits the first page of Google and attracts significant traffic? Unfortunately, nobody is safe from a sudden drop in rankings. The thing is that the reasons for it may be different and not obvious at all.

In this post, you’ll discover what could cause a sudden drop in traffic and how to fix the issue.

The tip of an iceberg

Unfortunately, there’s no one size fits all decision, when it comes to SEO. When you face the drop in your rankings or traffic, it’s just the tip of an iceberg. So, get ready to check lots of issues, before you identify the problem.

Note: Percentages assigned in the above graph are derived from personal observation.

I’ve illustrated the most common reasons for a plummet. Start from checking these parameters to find out how you can recover your rankings and drive traffic to your website.

Algorithms test

First of all, check the SERP. What if it’s not only your website that changed its positions in search results? These sharp shifts may happen when Google tests its algorithms. In this case, you don’t even have to take any further steps, as the rankings will be restored soon.

If you track your rankings with Serpstat, you can analyze your competitors’ positions as well. It’ll help you understand whether the SERP was changing a lot lately. From the moment you create a new project, the tool starts tracking the history of top-100 search rankings’ changes for the selected keywords. The “Storm” graph illustrates the effect of the changes that have occurred in the search results.

The "Storm" graph that illustrates the factors causing the ranking drop

On this chart, you see that for the “cakes for dads” keyword the storm score was pretty high on 21st March. Now, let’s look at how the top-10 positions that were changing on this date.

Graph showing a phrase-wise rise and drop in the SERP

The graph shows a sharp drop and rise that occurred in most of the positions. In a few days, all the rankings were back to normal again.

This example tells us that whenever you witness a significant drop in your search rankings, you should start with analyzing the whole SERP. If there’s a high storm score, all you need to do is to wait a bit.

In case you checked your competitors’ positions and didn’t see any movements, here’s the next step for you.

Technical issues

Technical SEO affects how search robots crawl and index your site’s content. Even though you have optimized your website technically, every time you add or remove some files or pages, the troubles may occur. So, make sure you’re aware of technical SEO issues on your site. With Google’s URL Inspection tool, you can check the way search engines see your website.

These are the main factors crucial for your rankings:

1. Server overload

If your server isn’t prepared for traffic surges, it can take your site down any minute. To fix this problem, you can add a CDN on your website or cache your content, set up a load balancer, or set up a cloud hosting,

2. Page speed

The more the images, files, and pop-ups you add to your content, the more time it takes for your pages to get loaded. Mind that page speed isn’t only a ranking factor, but it also influences user experience. To quickly check the issue, you can go with Google’s PageSpeed Insights. And to speed up your website, you can:

  • Minimize HTTP requests or minify and combine files
  • Use asynchronous loading for CSS and JavaScript files
  • Defer JavaScript loading
  • Minimize time to first byte
  • Reduce server response time
  • Enable browser caching
  • Reduce image sizes
  • Use CDN again
  • Optimize CSS delivery
  • Prioritize above-the-fold content (lazy loading)
  • Reduce the number of plugins you use on your site
  • Reduce redirects and external scripts
  • Monitor mobile page speed

3. Redirections

It’s the most common cause of lost rankings. When you migrate to a new server or change the structure of your site, never forget to set up 301 redirects. Otherwise, search engines will either fail to index your new pages or even penalize your site for duplicate content.

Detecting site errors can be quite difficult especially if it’s located solely on one page. Inspecting every page would be time-consuming. Also, it’d be very costly if you’re running a business. To speed up the process of identifying such errors you can use different SEO tools and site audit tools, like Serpstat, OnCrawl, and other such ones.

 

Wrong keywords

Are you using the right keywords? If you hadn’t considered user intent when collecting the keywords, it might have caused some problems. Even if your site was ranking high for these queries for some time, Google could have changed the way it understands your site’s intent.

I’ll provide two examples to illustrate the issue.

Case one

There’s a website of an Oxford Summer School named “oxford-royale.co.uk”. The site didn’t contain any long-form descriptions but services pages. Once Google began to rank the website for queries with informational intent, SEO experts noticed the traffic dropped. After they added more texts to the service pages, they succeeded in fixing the problem.

Case two

This case occurred to a flower delivery agency. While the website was ranking for transactional queries, everything was alright. Then Google decided the site better suits informational intent. To restore the site’s rankings, SEOs had to add keywords with high transactional intent, such as “order”, “buy”, and many such keywords.

To collect the keywords that are right for your business goals, you can use KWFinder. With the tool, you can identify relevant keywords that you can easily rank for.

Screenshot of a suitable keywords' list in KWFinder

Outdated content

This paragraph doesn’t require long introductions. If your content isn’t fresh and up-to-date anymore, people won’t stay long on your site. Moreover, outdated content doesn’t attract shares and links. All these aspects may become good reasons for search engines to reduce your positions.

There’s an easy way to fix it. Update your content regularly and promote it not to lose traffic. The trends keep changing, and if you provided a comprehensive guide on the specific topic, you don’t want it to become outdated. Instead of creating a new guide every time, update the old one with new data.

Lost links

Everybody knows your link profile is a crucial part of your site’s SEO. Website owners take efforts to build quality links to the new pieces of content. However, when you managed to earn a large number of backlinks, you shouldn’t stop monitoring your link profile.

To discover whether your link profile has undergone any changes for the last weeks, go with Moz or Majestic. The tools will provide you with data on your lost and discovered links for the selected period.

Screenshot of discovered and lost linking domains in Moz

If you find out you’ve lost the links from trustworthy sources, try to identify the reasons why these links were removed. In case they’re broken, you can always fix them. If website owners removed your links by chance (for example, when updating their websites), then ask them to restore links. If they did it intentionally, no one can stop you from building new ones.

Poor user experience

User experience is one more thing crucial for your site’s rankings. If it had started ranking your page high on search results and then noticed it didn’t meet users’ expectations, your rankings could have suffered a lot.

Search engines usually rely on metrics such as the click-through rate, time spent on your page, bounce rate, the number of visits, and more. That’s why you should remember the following rules when optimizing your site:

1. Provide relevant metadata

As metadata is used to form snippets, it should contain relevant descriptions of your content. First of all, if they aren’t engaging enough, users won’t click-through them and land on your site. On the other hand, if your snippets provide false promises, the bounce rate will increase.

2. Create an effective content structure

It should be easy for users to extract the necessary information. Most of your visitors pay attention to your content structure when deciding whether they’ll read the post.

Break the texts into paragraphs and denote the main ideas in the subheadings. This step will help you engage visitors looking for the answer to their very specific questions.

3. Avoid complicated design and pop-ups

The content isn’t the only thing your audience looks at. People may also decide to leave your website because of irritating colors, fonts, or pop-up ads. Provide simple design and minimize the number of annoying windows.

Competition from other websites

What if none of the steps worked? It might mean that your rankings dropped because your competitors were performing better. Monitor changes in their positions and identify the SERP leaders.

You can analyze your competitors’ strategies with Serpstat or Moz. With these tools, you can discover their backlink sources, keywords they rank for, top content, and more. This step will help you come up with ideas of how you could improve your own strategy.

Never stop tracking

You can’t predict whether your rankings will drop one day. It’s much better to notice the problem before you’ve already lost traffic and conversions. So, always keep tracking your positions and be ready to react to any changes quickly.

Inna Yatsyna is a Brand and Community Development Specialist at Serpstat. She can be found on Twitter @erin_yat.

The post Seven reasons why your rankings dropped and how to fix them appeared first on Search Engine Watch.

Reblogged 2 days ago from searchenginewatch.com

The Ultimate Guide to Community Management

In today’s highly digital and connected society, it’s funny to think people can still feel disconnected from others. With so many people who communicate online, behind screens, this connected world can actually feel rather lonely at times. This goes for personal relationships as well as business relationships — specifically between brands and their customers as well as brands and their employees.

So, what is it that has people feeling a disconnect to others and the companies they do business with?

A lack of community.

A community provides people with a feeling of belonging and a network of other people they can connect with based on their shared interests and/ or characteristics. And that’s why so many brands today are beginning to invest in the creation of communities for their customers, employees, and fans — as part of a process called community management.

Businesses build communities — or implement community management tactics at their companies — to build authentic relationships among their external audience (their customers, fans, and followers) and their internal audience (employees, vendors, partners, and team members). When businesses invest in community management, they transition from an everyday brand to a human brand — one that cares deeply about the people who support them, work for them, and interact with them.

 

What is the purpose of community management?

Community management has become increasingly popular and recognized by all types of businesses — however, it’s still largely undefined. So, what makes it so special? Why should your business adopt it? To answer those questions, let’s cover some of the main reasons why community management is critical to your success as a brand today.

“Brands need to hire community managers because they’re the tone, voice, and human element behind your brand.” -Krystal Wu, Social Media Community Manager, HubSpot

Community management allows your business to:

  • Obtain feedback and gather ideas from your customers and audience members through real conversations.
  • Provide support for audience members, fans, and customers when they need it.
  • Increase brand and product awareness among your target audience.
  • Learn about your customers and what they want, expect, and need in terms of content, products, services, and support.
  • Build one-on-one and one-to-many relationships between audience members and your brand.
  • Boost customer interactions, conversions, and sales.
  • Provide value to your customers beyond a product or service.

It’s important to note community management is a broad industry — these are just some of the things community management allows your business to do.

Additionally, community management is an umbrella term, meaning there are many forms of community management that live beneath it. Let’s review those types of community management to help you determine which one(s) you’d like to focus on at your company.

Types of Community Management

There are six main types of community management — some of these happen behind a screen and require no face-to-face interaction, and some involve members of your community to interact with you and your team in person. The easiest way to review these types of community management is through the SPACE Model.

Community Management SPACE Model

The SPACE Model represents different types of community management — this way, you can get a better understanding of which options will work for your needs. Let’s take a look.

Important note: This section is an overview of just six of the many types of community management. We’ve also provided a couple examples of each.

S: Customer Support/ Success

The first type of community management is customer support and success. There are a few simple ways to think about customer support and success in terms of community management — a forum, FAQ document, and community website.

A forum is a question and answer, community-based discussion board focused on customer service and support. It’s a great way to connect your community. With a forum, your customers can chat with each other, ask each other questions, provide you with feedback, or strike up a discussion regarding a new product or service.

On the forum, you might provide your community members with access to your FAQ document so they can self-help and get quick answers to commonly-asked questions. You’ll also be able to see who’s writing what so you can intervene and provide assistance if needed. This keeps things straightforward for your community members and also prevents your team from having to take the time to answer the same questions over and over again.

With a customer success platform or software, you can create a branded website or landing page for your community members that’s focused on supporting your customers. Here, your customers can help themselves (and each other), communicate with members of your team, locate any resources they need (such as your knowledge base), and review your FAQ document.

A great way to create and manage your company’s community forum, your FAQ document, site, or page is with the help of software like Vanilla Forms. You can customize the entire site to match your branding, write and manage your forum and FAQ documents, and even ask for your customers to provide you with ideas and ways to innovate your products and services to better meet their needs.

This type of community management is ideal for companies that have an in-depth product line — like a software company — so users can communicate with each other about tips, tricks, and issues they may run into during use.

One of HubSpot’s customer support communities is our Developer Forum for those looking to build on the software. This keeps developers connected to the company, others in the same position, and resources they can use while working on the platform.

P: Product Ideation, Innovation, and Feedback

Product ideation, innovation, and feedback is both a proactive and reactive type of community management. It requires you to create a safe space where your customers and target audience can share their feedback and thoughts about the ways you can innovate and improve your products and services.

You can ask your community members to complete surveys or participate in in-person feedback discussions you lead. There are also many other types of user testing that your audience and customers can take part in if you choose to organize them. For example, you might host a focus group with ten real customers at your office to learn about the ways they believe you can enhance your product or service after they use and/ or experience it.

This type of community management is ideal for most companies — asking for feedback from real customers and members of their target audience on how they can innovate their products  is a critical part of the success of virtually every business.

A: Acquisition and Advocacy

Acquisition and advocacy is another type of community management. This form of community management allows you to directly with the people who are most excited about your business including your leads, customers, brand ambassadors, and brand advocates.

These community members help you build brand awareness and promote your business, products, and services through various methods such as word-of-mouth, affiliate programs, and social media. A common way to create a community for these (very important) people is through an acquisition and advocacy program such as a brand ambassador initiative. Let’s look at an example.

The Skimm has a brand ambassador program for any user who gets ten people to sign up for the media company’s content. Once they’ve done so, they become a “Skimm’bassador.” These brand ambassadors and advocates help The Skimm acquire new consumers and readers. They also become members of the Skimm’bassador community in which they receive swag and gain access to internal events, company headquarters, and parties. Additionally, they’re able to connect and communicate with the community of Skimm employees and other Skimm’bassadors and provide The Skimm with feedback on how they can continue to grow and improve.

This type of community management is great if you want to delight your best customers by keeping them at the center of your flywheel, promote brand loyalty, increase brand awareness, and build long-lasting relationships with your biggest supporters.

C: Content and Programming

Another type of community management involves the creation of content and programming for your members — such as your customers, fans, followers, or employees. Your content and programming might include marketplaces, crowdfunding, user groups, and user-generated content.

This is a great option for companies with contributed content at the core of their products, business model, and other assets. For example, for companies like GoFundMe and Airbnb, their value is created by the people who join their sites and use their platforms to share fundraisers or rental properties.

These types of companies typically have community teams who work to ensure all community-generated content is appropriate, follows company guidelines, and meets the requirements of the site.

E: External Engagement

External engagement is a type of community management that provides your customers and supporters with a sense of belonging that leads to a stronger connection to your brand through a space that exists outside of your business. One of the most common types of external engagement community management is social media management.

For example, look at HubSpot’s Instagram page — it’s a highly interactive and engaging space that promotes brand awareness all while creating a community of followers with a similar interest (HubSpot). HubSpot’s social media community managers ensure every single person who interacts with a post is noticed and treated like a human — not just a number. Followers are able to engage with HubSpot, the branded content that’s shared on the page, and their fellow followers.

This type of external engagement is great for companies looking to improve brand awareness while creating one-on-one and one-to-many relationships with fans, customers, and followers of all kinds. Virtually any company has the ability to create an external engagement community management with the help of social media.

(I): Internal Engagement

Lastly, there’s internal engagement community management. Companies today are learning the value of creating strong communities internally — among their employees, partners, vendors, and suppliers. Strengthening these internal relationships creates a sense of belonging and allows people to find others to identify with, which, in turn, boosts company morale and overall happiness.

For example, many companies, including HubSpot, use platforms like Slack, which has features, like channels, to improve internal engagement and communication. This feature also helps build a sense of community through groups of employees (remote and in office) with common interests and positions at the company.

This type of community management brings your internal contributors together, connects them with like-minded individuals, and creates a sense of belonging, support, camaraderie, and inclusion in the workplace. This helps them better serve your company by boosting their knowledge of your products and services and improves their happiness and retention rates.

Almost every business can take part in this type of community management as it only requires community building within the office space and may include software you already have (like Slack) or the formation of interest groups among your fellow employees.

So, you’ve reviewed the main types of community management and how they can add value to your business. Now, let’s cover the ways you can actually get started building a community management strategy so you can start reaping its benefits.

How to Build a Community Management Strategy

As you can see, there are several types of community management and ways to go about implementing them at your company. For the sake of this piece, we’re going to review how to create just one community management strategy — an external engagement strategy (which we defined earlier), specifically through social media.

1.  Choose a social media channel.

The first thing you’ll want to do is choose the social media channel on which you’ll manage your community. Think about your target audience’s demographics to determine the best option for your company — for example, you might choose to focus your efforts on Snapchat if you have a young target audience, Instagram if you’re going for a broad target audience, or LinkedIn if you’re targeting a more professional crowd.

Other examples of platforms you might consider building and managing your community on include Facebook, Youtube, and Pinterest.

Learn everything you need to maximize engagement with a social media checklist.

2. Identify your audience.

Once you’ve chosen a social media channel, identify your audience on that platform. By doing this, you’ll be able to see the type of content your target audience interacts with on the specific platform, what they like and expect from the brands similar to yours they already follow, and who they currently engage with.

This research and information will allow you to begin thinking about how you’re going to tailor the content your business creates to your target audience and your chosen platform.

3. Ask your audience what type of content they want to see.

In addition to identifying your audience, you should also ask your audience what they want to see to ensure you’re creating and pushing out content that’s relevant to them.

This will ensure you’re going to be able to reach your audience with social media content they want and are interested in. Asking for this feedback and being open to suggestions also shows your audience you care deeply about their opinions and what they have to say — this will help you enhance your brand loyalty and advocacy, and create valuable interaction within your community (versus a one-way platform).

4. Determine how you’ll identify your success.

Now it’s time to determine how you’ll identify your success. There’s no right or wrong answer here — this is completely based on what matters to you and your company. Ask yourself, “what’s ideal for my brand?”

Here are some examples of success identifiers you might choose to focus on:

  • Boost in audience members/ increase in followers
  • Number of conversation participants in a live chat or discussion
  • Amount of content shared or liked by your followers
  • Overall engagement (likes, shares, mentions, hashtags, messages, comments)
  • Increase in brand awareness
  • Increase in customer satisfaction and retention
  • Traffic that’s directed to your website
  • Boost in your sales and conversions

(We’ll review how you can measure your community management success identifiers and metrics shortly.)

5. Set goals.

Like most things in business, setting attainable goals, as well as stretch goals, is crucial when working to achieve your various objectives and measure your success. However, if you’re developing a completely new strategy or if you’ve never set goals like the ones you need to make for your social media community management strategy, this task might seem like a difficult one. To get started, try running an experiment or two after you’ve determined how you plan on measuring your success.

For example, if you’ve decided that you’re going to measure your success through your overall engagement on the social media platform, you can run an engagement experiment. Try keeping track of all engagement related to the content you produce and share on the social platform for a specific amount of time you’ve chosen (maybe 4-8 weeks to start).

When the experiment has come to an end, average out your overall engagement (likes, shares, comments, mentions, hashtags, messages, etc.) and then use that number to create an attainable goal — and stretch goal if you choose — for your engagement over the next 4-8 weeks, and so on. You can always update these numbers as time goes on and as you begin collecting more data.

(Throughout your experiment, you can also A/B test different content to see what your followers like the best and choose to interact with most.)

6. Post regularly and engage with your audience.

Success on social media requires consistency in terms of your frequency of posts and engagement. You should determine how often you’re going to post on social media and stick to that plan so your audience members know you’re reliable and start to expect to see your content — you’ll train them to look for your latest posts.

Social media is a great way to develop close bonds and relationships among your brand and audience. Show your customers and followers they aren’t just a number and they’re heard by your company and employees. “Like” their comments and respond to all questions, comments or concerns (even the positive comments that warrant a “Thank you!” or “Yay! We’re so happy you’re enjoying our free CRM!”).

You can even follow back your biggest brand advocates — if you deem it as appropriate — or interact with the content your followers share (whether or not it has a direct tie to your company) to show your support.

No matter how you choose to interact and engage with your followers, remember to be authentic and address each person as an individual. Social media isn’t a forum, so there shouldn’t be any canned responses you use for your social followers. By maintaining an authentic voice and presence on social media, your brand will have a unique, human element behind it that feels trustworthy and personal to customers and community members.  

7. Measure your results.

Now it’s time to measure your results. Remember, when it comes to measuring your success on social, you shouldn’t always get hung up on the quantitative data — numbers don’t always reflect all of your efforts accurately, or the sense of belonging you’re creating for your community members. Additionally, you rarely see immediate results when it comes to your social media efforts — identifying your target audience, building a following, and learning how to reach your customers on a specific platform takes time.

To measure your results, decide on the method that works best for your needs, goals, and company. Here are a few ways to do this.

Social listening: Social listening is the process of monitoring your social media accounts to look for and keep track of all mentions, customer feedback, keywords, and discussions related to your brand, products, services, and customers (even your competitors, too). You then take a deeper look at all of these things to analyze them and gain insight into what’s working for your customers and followers, and what should be modified.

Platform analytics: Depending on the social platform you chose for your community management strategy, there might be a built-in analytics tool for you to measure your success in terms of variables specific to that platform. Examples include Twitter Analytics, Instagram Insights, and Facebook Analytics.

Analytics tools: If your platform of choice doesn’t have an analytics tool included, or if you’re looking for deeper analysis, you might choose to incorporate another tool or platform to help you measure your success. Examples include Google Analytics, Sprout Social, and HubSpot.

We’ve covered how to develop your community management strategy, so now, let’s review seven best practices you can incorporate as well.

1. Set community rules and guidelines.

When it comes to anything related to your business, it’s probably fair to assume you want it to represent you well and serve as an accurate portrayal of your brand. Your community is no exception. Therefore, you’re going to want to set community rules and guidelines for all members and contributors (including your team members who are managing the community).

Depending on your type of community, how you go about setting your community rules and guidelines may differ. However, here are some examples of ways to create these guidelines to help you get started.

  • Create a written document with your expectations for the way all members are expected to communicate, behave, and contribute. Then, share that document with your team and community members when they join.
    • If you have a forum, FAQ document, or community website, you can also make this document available at all times to members there. If your community meets in person, review these details face-to-face and consider handing out a printed copy to set expectations.
  • Have a method for your team members to escalate any major issue within your community to the right person at your company so they can manage it appropriately.
  • Be sure to update your rules and guidelines as necessary (as your community grows, changes, etc.).

2. Check on your community regularly.

No matter what type of community you manage, check on its members, the content being shared by your customers as well as your team. Whether it’s related to your brand ambassador program, forum, Facebook account, or community website, it’s your job to ensure everything is running smoothly —  that people are receiving the support they need, their questions are being answered, and they feel a sense of community.

3. Be authentic.

You need to be authentic while managing any type of community. When your customers, fans, followers, and leads come to your community, they should immediately know it’s yours based off of different factors like your branding and voice. And no matter the type of interaction, being genuine and human is crucial whether or not you’re behind a screen or face-to-face. After all, one of the main reasons you’re creating a community is to make sure your members feel valued.

4. Listen.

Since community management requires so much thoughtful interaction with members, listening is crucial. Whether it’s social listening, reviewing your forum and FAQ pages regularly, or responding to in-person and online feedback, listening is how you’ll improve your community to the best of your ability. It also shows your audience and members you value their opinions, hear what they have to say, and care about their experiences within your community.

5. Show appreciation.

A large part of managing a successful community is showing appreciation for your members. This will help you build brand loyalty and trust between you and your members. It also shows your members how much you value their time and commitment to your brand — remember, some of your community members are most likely also some of your most invested, supportive, and loyal fans, followers, and customers already.

To ensure you’re showing appreciation when necessary, you can try the following tactics depending on the type of community you have.

  • Interact with all new community members as soon as they join — say, “Thank you and welcome!” and ask them what you can do to make their experience a great one.
  • Pay attention to who your biggest community contributors are (keep a document with their names, emails, etc.). This way you can send them swag or give them a shout out for simply being awesome.
  • Invite your ambassadors and brand advocates to your office to meet your team and give them a behind the scenes look at your operation.
  • Keep an eye out for mentions, keywords, and hashtags, on your forum, social media platforms, community website, and more so you’re able to engage with those people to show your appreciation and the human element behind your community.

6. Maintain your brand voice at all times.

Similar to what we reviewed about the importance of authenticity, maintaining your brand’s voice at all times is critical when it comes to community management. This is a large part of what makes your community unique as well as ensures your community is identifiable to your members and audience.

No matter how many people are working on your community, make sure they understand your brand voice so they can help you maintain it throughout all interactions, engagement, and content. One way to make this a simpler process is by tying your community back to your company’s marketing goals and/ or collaborate with your marketing department. It’ll keep your messaging and interactions focused as well as push you to maintain your brand voice.

7. Explore new ways to engage your community.

You always want to be engaging your community — but what happens if there are changes in your industry, your company’s products or services are drastically updated, or your members request new types of content?

To keep your community up to date, always explore new ways to engage your members, whether that’s online or in person (depending on your type of community). You can also engage members as soon as they join to continue learning about your audience, what they want from you, and what made them join your community — this will also help you learn about new ways to interact with them.

At this point, you may be wondering how to get all of this work started — where to begin with your community management strategy efforts at your company if you haven’t done any work related to the field before.

A common first step businesses take when spearheading their community management plan and strategy is to determine whether or not they want to hire a community manager.

Community Managers: How They Can Help Your Business Grow

If your business has the resources, you might want to consider hiring a community manager (or even a team of managers) to help you kickstart your efforts and community.

What is a community manager?

Community managers run your community management efforts. Depending on the type of community management you chose to incorporate at your company, you might require the assistance of several community managers with entirely different focuses.

However, there are some universal traits shared by almost every community manager, no matter their role in the field. Generally speaking, a community manager:

  • Has the ability to lead your community development and growth efforts.
  • Is highly customer-focused.
  • Can empathize with their members on forums, during in-person meetings, on social channels, on community platforms, and more.
  • Knows how and when to show empathy.
  • Is an authentic and detail-oriented person.
  • Can analyze and measure community management efforts and results.
  • Understands who you are as a brand and carries that image and voice — along with your marketing efforts — over to your community management strategy.

To bring us back to our previous example of external engagement community strategy, let’s review the specific in-depth tasks of a social media manager.

A social media community manager:

  • Maintains the voice of the brand in all posts and interactions.
  • Ensures all content being shared has a purpose and meets the expectations and needs of followers and the target audience.
  • Schedules, posts, and engages on all social content.
  • Creates, manages, and follows up with all contests, giveaways, and promotions on social.
  • Ensures community rules and guidelines are being followed by all community members.
  • Measures results of all content and work on social (and makes modifications when necessary).
  • Keeps up with industry trends and updates made to the platform at hand.
  • Knows what audience members want and need out of the shared social content.
  • Is authentic and knows when to say, “Thank you”, “We’re sorry”, and “We support you”.
  • Creates a safe space for followers and members to ask questions, get help, feel supported, share ideas, provide feedback, and solve problems.

Whew! That was a lot of information — but, you should now have a better understanding of why community management is so important, how it can help your business grow, and how you can get started on your business’s strategy.

Start Building Your Community

Community management is a new, yet powerful, industry. By implementing a community management strategy at your company, you’ll be able to create a safe place for your customers, fans, employees, and followers to collaborate, provide you with feedback, bond, and learn.

This will help you build brand loyalty, increase conversions and sales, and show the people who matter most to your success a human side to your brand that they can relate to. So, get started by reviewing your options for types of community management to incorporate at your company, developing a strategy, and determining whether a community manager is the next hire you need to make.

New Call-to-action

Reblogged 3 days ago from blog.hubspot.com

SVG Web Page Components For IoT And Makers (Part 2)

SVG Web Page Components For IoT And Makers (Part 2)

SVG Web Page Components For IoT And Makers (Part 2)

Richard Leddy

2019-05-15T13:30:16+02:00
2019-05-20T01:34:55+00:00

So, we already have ways of dynamically loading a menu of SVG icons made to react by loading panels if we so desire, but the icons were not actual components. We were able to use a simple trick of bringing in the SVG for each icon and passing it into the Vue application. It was simple enough to generate a list of icons, and each icon reacted in a similar way except for small data differences. The data difference made it possible to bind the name of a panel to each icon in such a way that the handler for the icon’s button click could pass it on.

When a panel is loaded in the form of Vue component, everything about the panel and its components has to be loaded, templates, JavaScript, and more. So, the job of just managing loading the panel is bigger than what we have encountered so far in this discussion.

Let’s look at Vue’s way of providing a hook for async loading. The following snippet is from the Vue guide.

Vue.component('async-example', function (resolve, reject) {
  setTimeout(function () {
    // Pass the component definition to the resolve callback
    resolve({
      template: '<div>I am async!</div>'
    })
  }, 1000)
})

The guide tells us that the setTimeout function is an example of how to use the synchronicity with Vue components. Notice that where before there had been an object as the second parameter to Vue.component, there is now a function, which is referred to as a factory function. Within the resolve callback is a component definition, that would have been the second parameter to Vue.component before.

So, I had to stare at this example a while before it made sense to me. Here is another example, which suits me better:

Vue.component('async-example', function (resolve, reject) {
  // Vue will call this function and promise itself to handle
  // it when it gets back with data.

  // this function can then call a promising object loader
  // here the 'loader' function is some abstract function.
  // Most likely the application will use 'fetch'
  // but it could be something else.
  loader('/my/resource/on/server.json').
    then(function (JSON_data) {
         var object = transformJSONToJSObject(JSON_data);
          resolve(object)
    }).catch( (error) => { handle it } );

It seems like the right thing to do to make a more general function to go around this form.

function componentLoader(c_name,resource_url) {
  Vue.component(c_name, function (resolve, reject) {
    loader(resource_url).
      then(function (JSON_data) {
           var object = transformJSONToJSObject(JSON_data);
            resolve(object)
      }).catch( (error) => { handle it } );
}

So, in general, to load a component, we would just need a line like the following:

componentLoader('ThermoPanel','./JSON/thermo-panel.json');

So now, just what is the JSON that is being loaded? It can include everything about the component. In this case, as a panel component, it can include thermometers, machine switches, sliders, gauges, and more. While it seemed nicer to keep the components parts on the web page, it may actually work better to use the subcomponent field that is in the longer example for ‘thermo-panel’ that we made before and also for the other similarly constructed panels. The JSON will contain a complete panel structure.

However, if the reader will notice the inclusion of the function call to transformJSONToJSObject, he will understand that JSON might be coded in some way to make transport easier and to make it easier for a server to handle the definition. After all, the definition will include complete SVG templates, function definitions, and other JavaScript expressions. Also, the JSON object may contain more than just the panel definition because some information may simply aid in bookkeeping or validation. So, one can expect that there will be some treatment of the object upon receipt.

As for the encoding, the data coming in from the server may be encoded in a number of ways. Perhaps it will be simply URL encoded. Or more securely, it might be enciphered. For this discussion, we can just use URL encoding.

Some of the tools that are available for creating Vue applications no doubt take care of the JSON transformation. But, this discussion has so far avoided the use of command line tools. This omission is not that bad as we have also used Vue with the minimum of resources, using only one script tag for the referring to the CDN. However, I certainly do recommend looking into the command line tools especially for organizing projects.

When the JSON arrives at the page, given the component is completely assembled with subcomponents, no more work has to be done to fetch the parts. We can make the assumption that all components will come in fully defined for the rest of this discussion. But, assembling complete component hierarchies will require command line tools at some point.

The SVG editing process will also require some work. The SVG editing processes allow a designer to draw a panel and all the components on it. But, each subcomponent has to be identified, called out in a group, or given a place holder. Any approach to using the drawing requires some treatment of the SVG so that Vue component tags can replace the groups or graphic elements. In this way, any artist rendering can become a template. And, the drawn subcomponents will have to be disassembled into templates for Vue subcomponents.

This sort of parsimony is contrary to the workflow of most of the JavaScript frameworks. The frameworks are about assembling pages. But, editing or drawing, results in something already assembled by an artist. In practice, the result of editing does not provide a text file that corresponds directly to a framework component definition.

More about the editing process may be considered in some other discussion. There is a lot to it. But, for now, we have the tools we need in order to load hierarchal components and make them come alive.

The Lazy Application

For our IoT panel construction, we already have a selection bar that responds to searches. And, we have a way of loading components when we need them. We just need to connect up these parts. And, at last, we have to make sure that the panels appear and that they start working when they do.

The lazy loading of panels done by the async code above provides a sketch of an idea. But, thankfully, some people have experimented to find ways of making sure that all kinds of components can be loaded. There is one codepen entry that shows how to update Vue apps with new components of varying types. That is the mechanism that is needed for updating a designated part of the page with different types of panel.

With the ability to add in different kinds of panels and with a simple mechanism to load their definitions, we can, at last, have our panel searching page.

Here is the HTML that we need in our page so that the Vue app can place components in dynamically:

<template v-for="(panel, index) in panelList">
  <component :is="panel" :key="panel.name"></component>
</template>

The component tag is a Vue meta tag. See the reference for dynamic components. The properties, special attributes, used for the component tag in this case are is and key. The is attribute exists for dynamic components. And, the key ensures that the new children will have different identities from each other and helps Vue to decide what to draw.

“Children of the same common parent must have unique keys. Duplicate keys will cause rendering errors.”

The template tag will loop through components that are provided in the panelList data field of the application.

So, starting with the application level Vue definition for the icon app, we can make changes to include the panelList in the data elements. (Let’s now call it the panelApp).

var panelApp = new Vue({
        el: '#PanelApp',
        data: {
        iconList: [  // Where is the data? Still on the server.
        ],
        panelList: [
        ],
        queryToken : "Thermo Batches"  // picked a name for demo
        },
        methods : {
          goGetPanel: function (pname) {
            //
              var url = panelURL(pname);  // this is custom to the site.
              fetch(url).then((response) => {  // this is now browser native
                response.text().then((text) => {
                      var newData = decodeURIComponent(text);
                       eval(pHat);  // widgdef = object def, must be assignment
                       pHat = widgdef;
                     var pnameHat = pname + pcount++;
                     pHat.name = pnameHat; // this is needed for the key
                     this.panelList.push(pHat);  // now it’s there.
                  }).catch( error => { /* handle it */ });
          }
        }
    });

Besides adding in the panel, goGetPanel is now in a form required for getting a component definition from a database or other store. The server side must be careful about delivering JavaScript code in the correct format. As for what the object looks like coming from the server, we have already seen it. It is the kind of object used as a parameter to Vue.component.

Here is the complete body of the Vue app that provides a menu as a search result and a place to put panels fetched from the server when the user clicks an icon.

<div id="PanelApp">  <!-- Recognize the name from the Vue doc -->
  <div>
  <h2 itemprop="name">Request MCU Groups</h2>
  <p itemprop="description">These are groups satistfying this query: {{queryToken}}.</p>
  <button onclick="GetIcons(11)">Find All</button>
  <button onclick="GetIcons(5)">Find 5 Point</button>
  <button onclick="GetIcons(6)">Find 6 Point</button>
  </div>

  <!-- Here is a Vue loop for generating a lit -->
  <div class="entryart" style="padding:4px">
  <button v-for="iconEntry in iconList" @click="goGetPanel(iconEntry.name)" >
    <div v-html="iconEntry.icon">
    </div>
  </button>
  </div>

  <div class="entryart" style="padding:4px" >
    <template v-for="(panel, index) in panelList">
      <component :is="panel" :key="panel.name" :ref="panel.name" ></component>
    </template>
  </div>

</div>

In the last div, the component tag now has a ref parameter bound to the panel name. The ref parameter allows Vue app to identify which component to update with data and keeps components separate. The ref parameters also allow our application access to the new dynamically loaded components.

In one test version of the panel app, I have the following interval handler:

setInterval(() => {
  var refall = panelApp.$refs;   // all named children that panels
  for ( var pname in refall ) {  // in an object
    var pdata = refall[pname][0];  // off Vue translation, but it’s there.
    pdata.temp1 = Math.round(Math.random()*100);  // make thermos jump around.
    pdata.temp2 = Math.round(Math.random()*100);
  }
},2000)

The code provides a little animation, changing thermometers randomly. Each panel has two thermometers, and the app allows the user to keep adding panels. (In the final version, some panels must be thrown away.) The refs are being accessed using panelApp.$refs, a field that Vue creates given the refs information in the component tag.

So, this is what the randomly jumping thermometers look like in one snapshot:

A collection of animated panels for one type of panel (or component). (Large preview)

Connecting The Panel To The IoT Device

So, the last piece of code is a setInterval test updating thermometers with random values every two seconds. But, what we want to do is read in real data from real machines. In order to do that, we will need some form of communication.

There are a variety of ways. But, let’s use MQTT which is a pub/sub message system. Our SPWA can subscribe to messages from devices at any time. When it gets those messages the SPWA can direct each message to the appropriate data handler for the panel mapped to the device identified in the message.

So, basically what we need to do is replace the setInterval with a response handler. And, that will be for one panel. We probably want to map panels to handlers as they are loaded. And, it is up to the web server to see that the correct mapping is delivered.

Once the web server and the SPWA have the page ready for operation, the web server no longer needs to take care of messaging between the page and the device. the MQTT protocol specifies a routing server to handle pub/sub. A number of MQTT servers have been made. Some of them are open source. One very popular one is Mosquito, and there are a few developed on top of Node.js.

The process for the page is simple. The SPWA subscribes to a topic. One good version of a topic is an identifier for an MCU such as a MAC address or a serial number. Or, the SPWA could subscribe to all temperature readings. But, then the page would have to do the work of filtering the messages from all devices. Publication in MQTT is essentially a broadcast or multicast.

Let’s take a look at how the SPWA will interface with MQTT.

Initializing MQTT On The SPWA

There are several client libraries to choose from. One, for instance, is a MQTT.js. Another is eclipse paho. There are more of course. Let’s use Eclipse Paho since it has a CDN stored version. We just need to add the following line to our page:

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>

The MQTT client has to connect to a server before it can send and receive messages. So, lines setting up the connection also need to be included in the JavaScript. We can add in a function MQTTinitialize which sets up the client and the responses for connection management and message receipt.

var messagesReady = false;
var mqttClient = null;

function MQTTinitialize() {
  mqttClient = new Paho.MQTT.Client(MQTTHostname, Number(MQTTPort), "clientId");
  mqttClient.onMessageArrived = onMessageArrived;
  // connect the client
  mqttClient.connect({
           onSuccess: () => {
             messagesReady = true;
           }
        });
  // set callback handlers
  mqttClient.onConnectionLost = (response) => {
    //
    messagesReady = false;
    //
    if (response.errorCode !== 0) {
      console.log("onConnectionLost:"+response.errorMessage);
    }
    setTimeout(() => {
            MQTTinitialize()
           },1000); // try again in a second
  };
}

Setting up Subscription

With the connection ready, the client can subscribe to message channels, send messages on them, etc. Just a few routines can do most of the work necessary to connect panels with the MQTT pathways.

For the panel SPWA, the moment of subscription can be used to establish the association between the panel and the topic, the MCU identifier.

function panelSubcription(topic,panel) {
    gTopicToPanel[topic] = panel;
    gPanelToTopic[panel] = topic;
    mqttClient.subscribe(topic);
}

Given that an MCU is publishing on its topic, the SPWA will receive a message. Here, the Paho message is unpacked. And, then the message is passed on into the application mechanics.

function onMessageArrived(pmessage) {
  //
  var topic = pmessage.destinationName;
  var message = pmessage.payloadString;
  //
  var panel = gTopicToPanel[topic];
  deliverToPanel(panel,message);
}

So, now all we need to do is create deliverToPanel which should be somewhat like the interval handler that we had before. However, the panel is clearly identified, and only the keyed data sent in the particular message may be updated.

function deliverToPanel(panel,message) {
  var refall = panelApp.$refs;   // all named children that panels
  var pdata = refall[panel][0];  // off Vue translation, but it’s there.
  var MCU_updates = JSON.parse(message);
  for ( var ky in MCU_updates ) {
    pdata[ky] = MCU_updates[ky]
  }
}

This deliverToPanel function is abstract enough to allow any panel definition with any number of data points for animation.

Sending Messages

To complete the application loop between the MCU and the SPWA, we define a function to send a message.

function sendPanelMessage(panel,message) {
    var topic = gPanelToTopic[panel];
    var pmessage = new Paho.MQTT.Message(message);
    pmessage.destinationName = topic;
    mqttClient.send(pmessage);
}

The sendPanelMessage function does no more than sending the message out on the same topic pathway that the SPWA subscribes to.

As we plan to make the icon buttons responsible for bringing in some number of panels for a single cluster of MCU’s, there will be more than one panel to take care of. But, we keep in mind that each panel corresponds to a single MCU, so we have a one-one mapping, for which we may use two JavaScript maps for the map and the inverse.

So, when do we send messages? Usually, the panel application will send a message when it wants to change the state of the MCU.

Keeping The View (Vue) State In Sync With Devices

One of the great things about Vue is that it is very easy to keep the data model synchronized with the activity of the user, who may edit fields, click on buttons, use sliders, etc. One can be sure that button and field changes will be reflected immediately in the components’ data fields.

But, we want changes to fire off messages to the MCU as soon as the changes occur. So, we seek to make use of the interface events that Vue may govern. We seek to respond to such an event, but only after the Vue data model is ready with the current value.

I created another kind of panel, this one with a fairly artistic looking button (perhaps inspired by Jackson Pollock). And, I went about turning it into something whose click reports the state back to the panel that contains it. That was not so simple a process.

One thing that threw me off is that I had forgotten some of the oddities in managing SVG. I first tried to change the style string so that the display field of the CSS style would either be “None” or “something”. But, the browser never rewrote the styles string. But, as that was cumbersome, I tried changing the CSS class. That also had no effect. But, there the visibility attribute, which most of us recall from old HTML (version 1.0 perhaps), but that is very up to date in SVG. And, that works well. All, I had to do was to get the button click event to propagate.

Vue has designed properties to propagate in one direction, parent to child. So, to change data in the application, or in the panel, you have to send a change event to the parent. Then, you can change the data. The change of the data element controlling the button causes Vue to update the property affecting the visibility of the SVG element we have chosen to indicate state.
Here is an example:

More than one type of panel and more than one animation instance per type.

Finally, a collection of different types of panels each with instances assigned to separate MCU’s. (Large preview)

Each instance of the squiggly button panel is independent. So, some are ON and some are OFF.

This snippet of SVG contains the odd-looking yellow indicator:

<path
     :visibility="stateView"
     style="opacity:0.98000004;fill:#faea4a;fill-opacity:1;stroke:#eecd5c;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="sunthing"
       d="m -36.544616,12.266886 c 19.953088,17.062165 5.07961,-19.8251069 5.317463,8.531597 0.237853,28.356704 13.440044,-8.847959 -3.230451,10.779678 -16.670496,19.627638 14.254699,-2.017715 -11.652451,3.586456 -25.90715,5.60417 10.847826,19.889979 -8.095928,-1.546575 -18.943754,-21.436555 -1.177383,14.210702 -4.176821,-12.416207 -2.999438,-26.6269084 -17.110198,8.030902 2.14399,-8.927709 19.254188,-16.9586105 -19.075538,-8.0837048 9.448721,-5.4384245 28.52426,2.6452804 -9.707612,-11.6309807 10.245477,5.4311845 z"
       transform="translate(78.340803,6.1372042)" />

The visibility is populated by stateView, a computed variable that maps the state boolean to a string for SVG.

Here is the panel component definition template:

<script type="text/x-template" id="mcu-control-panel-template">
  <div>
    <control-switch :state="bstate" v-on:changed="saveChanges" ></control-switch>
    <gauge :level="fluidLevel" ></gauge>
  </div>
</script>

And, this is the JavaScript definition of the Vue panel with its children as subcomponents:

var widgdef = {
  data: function () {
    var currentPanel = {  // at the top level, values controlling children
      bstate : true,
      fluidLevel : Math.round(Math.random()*100)
    }
    //
    return currentPanel
  },
  template: '#mcu-control-panel-template',
  methods: {
    saveChanges: function() {  // in real life, there is more specificity
      this.bstate = !this.bstate
      relayToMCU(this.name,"button",this.bstate) // to be defined
    }
  },
  components: {
    'control-switch' : {  // the odd looking button
      props: [’state'],
      template: '#control-switch-template',  // for demo it is in the page.
      computed: {
        // you saw this in the SVG above.
        stateView : function() {
          return ( this.state ) ?  "visible" : "hidden"
        }
      },
      methods : {
        // the button handler is in the SVG template at the top.
        stateChange : function () {  // can send
          this.$emit('changed');  // tell the parent. See on the template instance
        }
      }
    },
    'gauge' : { // some other nice bit of SVG
      props: ['level'],
      template: '#gauge-template'
    }
  }
}

So, now the mechanism for a single button embedded in a panel has been laid out. And, there has to be a hook for telling the MCU that something has taken place. It must be called immediately after the data state of the panel component has been updated. Let’s define it here:

function relayToMCU(panel,switchName,bstate) {
  var message = switchName + ':' + bstate  // a on element parameter string.
  sendPanelMessage(panel,message)
}

There is the state change on it’s way to hardware in just two lines of code.

But, this is a fairly simple case. Any switch can be viewed as a function call to a piece of hardware out in the world. So, the string might contain the switch name and several other data elements. So, the component method that registers change will have to have some custom handling in it in order that it might gather together all the pieces of data set on the panel and send them along in one command string. Even the command string is a little simple. If the MCU is quite small, the command string might have to be translated into a code. If the MCU has a great deal of capability, the command string might actually be a JSON structure or perhaps all the data that the panel hosts.

In this discussion, the buttons on the icon panel contain the name of the panel to fetch. That may also be fairly simplified as well. It seems to make sense that that parameter can stand for any panel that might be stored in an enterprises databases. But, perhaps it is some formula. Perhaps, information about the panel should be wrapped around the panel definition that we receive from the server. In any case, the basics can be easily expanded upon once certain headaches are out of the way, like making the SVG respond to clicks properly.

Conclusion

This discussion has laid out some basic steps and decisions that lead to the realization of a Single Page Web App (SPWA) that can interface with IoT devices. We now know how to get panels from a web server and turn them into MCU interface.

There is much more to this discussion with quite a few other discussions that may follow. Starting with Vue is one thing to think about. But, then there is the whole MCU story, which we have only briefly touched upon.

In particular, by selecting MQTT as a communication substrate, we assume that IoT devices on the other end can somehow be ruled by MQTT. But, that may not always be the case. Sometimes gateways are needed if MQTT is to gain access to a device with serial links or Bluetooth. Or, perhaps all one ever needs from on the web page is WebSockets. Nevertheless, we used MQTT as an example to show how Vue could both receive and send data while keeping its data state in sync with devices.

Once again we only have part of the story. This time it is for synchronization because the page should be able to deal with alerts and bother the user if something critical is happening. Sometimes messages can get lost. So, we have to have a mechanism for acknowledgments.

Finally, it is my opinion that Vue makes updating data upon receipt quite elegant. But, sending the state changes is not so straight forward. It does not seem to make the job much simpler than can be done with vanilla JavaScript. But, there is a way and it makes sense.

Perhaps a clean library can be built to make a universal set of components for all panels. The elements for making such libraries and having them stored in a database have been briefly mentioned. Tools that go beyond just making SVG pictures may have to be developed. In any case, there are likely many things that can be done for the next steps.

Smashing Editorial
(dm, yk, il)
Reblogged 3 days ago from www.smashingmagazine.com

Monthly Web Development Update 5/2019: Over-Complication And Performative Workaholism

Monthly Web Development Update 5/2019: Over-Complication And Performative Workaholism

Monthly Web Development Update 5/2019: Over-Complication And Performative Workaholism

Anselm Hannemann

2019-05-17T14:24:00+02:00
2019-05-20T01:34:55+00:00

This week, I was at the amazing beyondtellerrand conference once again, and every single time I come home from such an event, I try to understand our industry and our society better. There’s so much input and inspiration around, I meet a lot of friends and people I see only once a year, I listen to great talks. People tell me how frustrated they are with their jobs, we hear amazing stories of people who seem to have an amazing life, we hear people moaning about bad players on the web, but rarely do we hear real insights or solutions.

Presentations highlighting the good parts and uncommon paths in life are quite rare, but one of the exceptions is Rob Draper’s beyondtellerand talk in which he shares his story and how an unexpected series of events created the role he is in today. And, well, I’m glad that there are amazing people who believe in humans and share how we all as individuals can do something to have a better job and life: It might be as Stephen Hay suggests to trust your own ideas, building your own website and social system, or, as my good friend Andy is doing it, building a non-profit initiative to build schools in Africa, a project into which he invests not only a lot of time but money as well.

It’s great to see these visions of a better world, and it feels like a good community to be in. The web is so much more than just a space to build technical solutions and write code; it’s a place to create helpful, meaningful, and beautiful individual things.

News

  • Let’s make things official: Safari 12.1 now supports Dark Mode. Check the full article for how to apply it to your pages or take a look at one of the sites like Twitter or Colloq that already support it. Safari’s Developer Tools feature a debug mode for Dark Mode now as well.
  • Chrome 74 is public. The new version lets us detect if a user requested reduced motion and the Feature Policy API got updates, too, so now we can request document.featurePolicy.allowedFeatures() for all allowed features, allowsFeature() for single features, or document.featurePolicy.getAllowlistForFeature() for a domain list that gets the allowed features.
  • Googlebot is evergreen now. This means that Google’s search crawler gets the newest Chromium version automatically. From now on, it supports ES6, ECMAScript Modules and newer functionality and understands lazy-loaded content via IntersectionObserver and the WebComponents v1 APIs. It might be time to drop our ES6 transpilers soon.
  • The Web Share API is a nice addition to make more use of websites. And while it has been available on Chrome for Android for quite some time now, Safari is bringing the feature to macOS and iOS in its latest version.

General

  • Stefan Judis shares a roundup article on how to keep the web a safe place, making it affordable and fast and tailoring the response to the user — all with HTTP headers. A good read for everybody as we all tend to forget about these things in our daily work.
  • The annual Mozilla 2019 Internet Health Report examines how humanity and the internet intersect. Here’s the report itself with some short answers for those who don’t want to read it completely.
  • On-call rotation is a common thing in tech, and I know that a lot of teams struggle with it. That’s why I found this guide on “On-call at any size” quite informative and useful. It explains how to prepare and what to do — no matter if you’re a small team or part of a big corporation.
  • Emily Shaffer shares how to annotate regular expressions to make them comprehensible for others as well.

If there were only 100 people in the world, who would be online? That’s only one of the questions which Mozilla’s Internet Health Report 2019 answers. (Image credit)

UI/UX

Paths to simplification illustrated with circles and arrows. Subtract, Consolidate, Redistribute, Prioritize, Clarify.

How do you fix the UX of a product that has become overly complicated? Patrick Faller shows paths to simplification. (Image credit)

Tooling

  • GitHub is completing the experience by integrating their own npm registry (but also ruby, Docker, Maven, NuGet) into the platform. This is a huge step as it makes publishing custom and private packages a lot easier.

Privacy

Security

  • The Google AMP project announced that they’re going to “simplify” AMP domains in Google Chrome. This means that users would see the original URL in the browser bar while really being on a Google AMP server. An interesting approach, given the fact that this is something that browser vendors usually don’t allow in order to prevent URL spoofing.

Accessibility

  • stylelint-a11y is a plugin for stylelint that enforces accessibility best practices via the CSS linter.

JavaScript

CSS

Work & Life

  • How do productivity and promises correlate? In times of constant demands, too much work to do, and blurry information about priorities and different senses of urgency, you can hardly blame people for breaking with their promises anymore. If we’re constantly confronted with other people’s expectations like “please get back to me by 1 PM today”, how can we stick to our original schedule for the day and be productive? Should we ignore such external demands and say “we had better things to do” than replying to the non-urgent but urgency-creating email “in time”? It definitely takes some courage to do so, but in the end, this is what productivity is about: sticking to a schedule and dedicating focus time to one single task.
  • When did performative workaholism become a lifestyle? The New York Times takes a closer at the culture of business, hustling, and the weird love we develop for working faster and more. But what about our lives when we work for 12 or 18 hours a day? And what about that promise that automation will take off the work from us?
  • Do you do standup calls? Here’s why this is a costly thing that even hurts your teammates’ efficiency.
  • Stop being so busy and just do nothing. Trust us.” This claim in the New York Times has its reasons: In a world of stress and an environment where we embrace working all day, we need to remember to stop and take time for ourselves.
  • We love to tend to make judgments about other people’s work. That’s why we tend to declare something as “low-hanging fruit,” assuming that the task is easy to do and doesn’t take much time or effort. But we forget that we might miss a couple of circumstances and it might become a bigger task than anticipated. Jason Fried says that we should be careful when we use the word “easy” to describe other people’s jobs.
  • The founder of ConvertKit, Nathan Barry, shares a couple of insights into how they run the business in an unconventional way: They pay standardized salaries, make their revenue public, and distribute 60% of company profits to the team.

Screenshot from the New York Times article ‘Why are young people pretending to love work’. Under the heading, there’s a propaganda-poster style illustration of three young people holding laptops, phones, and tablets, making a fist with their right hand. The background of the poster says ‘Hustle’.

When did performative workaholism become a lifestyle? The New York Times dedicated an article to the topic. (Image credit)

Going Beyond…

  • “If anything about this age is rare, perhaps it is the possibility that our fraught networked systems have finally reached such a unique point, with their environmental and social consequences so visibly intertwined, that they have become impossible to ignore.” — Ingrid Burrington in “A rare and toxic age.”
  • Let’s hand over the best possible. The best environment for the next generation. The best work for the employees that take over work from you. Keep it at heart for every aspect of life, and you’ll see that it makes a difference. To other people and to you. It feels good to do good.
  • What’s low-tech, sustainable, and possibly the most effective thing we can do to fight climate change? Planting trees. A trillion of them.
  • What are we doing to our earth? It seems despite the rising awareness of plastic pollution, global sales of plastic and glass bottles, cans, and cartons are still rising. There are so many alternatives, can we please stop buying one-time plastic packaging and coffee to-go — each of us, now?
  • When we feel overloaded, we tend to lash out at someone in frustration and anger. This comes from the hope that things will be calm, orderly, simple, solid, and under control. However, the world doesn’t comply with this hope, as it is chaotic, constantly changing, never fixed, groundless. So we get anxious and angry at others. But we can create a habit of calm when feeling frustrated.
  • What energy impact does your phone, that small screen you hold in your hands every day, have? We use video calls, messengers, or upload our photos to the cloud. But all the cloud services, the 4G network itself use a huge amount of energy that we tend to forget about. This article dives deeper into the dependencies of using a smartphone these days, and why it matters to save data and reduce your phone usage — and if it’s just for your own sake.

One more thing: If you like my reading lists, please consider making a donation. Donating to Makuyuni counts as well.

—Anselm

Smashing Editorial
(cm)
Reblogged 3 days ago from www.smashingmagazine.com

Selena Gomez thinks social media is 'terrible' for her generation

Facebook

Gomez made her opinion known during a Cannes Film Festival press conference for her film, The Dead Don’t Die. Read more…

More about Mashable Video, Social Media, Selena Gomez, Entertainment, and Social Media Companies

Reblogged 3 days ago from feeds.mashable.com

How to Get Off an Email Blacklist (By Avoiding It In The First Place)

In the MLB, or Major League Baseball, players who have used performance enhancing drugs have also tainted their careers. Even if they slugged the most home runs in the history of the game, like Barry Bonds did, or won the most Cy Young Awards ever, like Roger Clemens did, their accusations of steroid abuse will most likely block their path to the Baseball Hall of Fame.

For years, many baseball players abused steroids, and it sparked an aggressive campaign to eliminate performance enhancing drugs from the game.

In 2006, the MLB set up a drug policy that suspends first time drug violators for half a season, second time drug violators for an entire season, and third time drug violators for their entire lives — three strikes and you’re literally out.

In the email marketing industry, sending spam, or unsolicited bulk messaging, is a lot like using performance enhancing drugs in the MLB. Any organization who is a known spammer has tainted their brand. And, similar to a suspension, mailbox providers will filter their messages to the spam folder or block them altogether.

These “suspended” brands are on lists called email blacklists, and they can tarnish your sender reputation in the eyes of mailbox providers worse than steroid use can taint a once-presumed Hall-of-Famer’s career in the eyes of the Baseball Hall of Fame voters.

However, not all blacklists are created equal. Some blacklists, like Spamhaus, are credible and widely trusted, so if a brand is on one of these blacklists, it’ll heavily impact their sender reputation. Other blacklists, like Lashback, NoSolicitado, and Spam Cannibal are less credible and trusted, so if a brand is on one of these blacklists, it won’t affect their sender reputation nearly as much.

In other words, when referencing blacklists to determine a brand’s deliverability, mailbox providers weigh their influence by credibility — and not just if they’re listed on them.

How to Avoid an Email Blacklist

A wise email deliverability consultant at HubSpot named Jess Swazey once told me, “The easiest way to get off an email blacklist is to never get on it in the first place.” In light of this Yoda-esque wisdom, here are four best practices for avoiding email blacklists.

1. Only email contacts who have subscribed to your email program — and never email contacts scraped from websites, third-party sources, or purchased contact lists.

It seems obvious, but the easiest and most crucial step you can take to avoid email blacklists and getting a Scarlet “S” slapped on your brand’s breast pocket is emailing people who actually subscribed to your emails. Because in a world where only 4% of the public believes marketers practice integrity, the best way to build a contact database is the hard and honest way — collecting email addresses organically.

Plus, if you decide to scrape contacts from old, expired, or abandoned websites, third-party sources, or purchased contact lists, most blacklist operators have already placed pristine spam traps, which are email addresses created solely to catch spammers red-handed, in all three of these locations. So collecting and emailing contacts who never subscribed to your email program in the first place is a one-way ticket to getting blacklisted.

2. Clean your email lists on a regular basis.

Building a hefty email list might make you feel accomplished and proud, but if it’s filled with dead weight, or unengaged contacts, it’s better to trim the fat than to stick with your pride.

Most mailbox providers decide if you’re actually a reputable sender and deserving of a high deliverability score by keeping an eye any inactive email addresses that have been converted into recycled spam traps and dinging any IP address or domain that sends emails to them. In your database, any contact that hasn’t engaged with your email program or opened one of your emails in a year could possibly be a recycled spam trap.

To avoid sending emails to recycled spam traps and getting blacklisted, run one-off reengagement campaigns with your inactive contacts. It’s up to you to decide how long a contact’s disengagement with your email program deems them an inactive contact, but if they don’t open your reengagement email, it’s probably a sign to scrub them off your list.

3. Never manually enter email addresses into your database or mass email these types of contacts.

After industry events, some sales team collect business cards from prospects, manually plug each contact’s email address into their database, and send them a mass marketing email.

This can also be a one way ticket to getting blacklisted.

These people might expect an email from one of your company’s salespeople, but they never opted into receiving messages from your email program, so they’re likely to never open them or, even worse, flag them as spam, which will lower your deliverability and heighten your risk of getting blacklisted.

There’s also a chance your sales team could make a typo while manually entering email addresses into your database and, in turn, send emails to addresses that don’t exist. This will increase your email bounce rate, which will also lower your deliverability and heighten your risk of getting blacklisted.

If you want to plug these contacts into your database, tell your sales team to connect with each of these prospects through their personal inbox and direct them to an offer, landing page, or form where they can opt themselves into your email marketing list. 

4. Validate your new subscribers’ email addresses.

Sometimes, people will try to subscribe to your email program but make a typo when entering their contact information in your form. Other times, if your business model requires people to manually enter their email address into a device, they can make typos too.

Unfortunately, mailbox providers will bounce any email sent to addresses that don’t exist. So even if the people who own similarly spelled email addresses actually want to receive your emails, emailing these addresses will still lower your deliverability and heighten your risk of getting blacklisted.

To avoid this subtle yet potent blacklisting trigger, use email address verification tools like Kickbox or Zero Bounce to validate each email address you collect from your subscription forms.

How to Check If You’re On an Email Blacklist

Sometimes, a pristine or recycled spam trap can slip through the cracks and get you blacklisted. Fortunately, your email service provider will usually notify you when this happens, but if you want to be absolutely sure that your IP address or domain isn’t on a blacklist, use blacklist checking tools, like Sender Score or MX Toolbox.

How to Get Off an Email Blacklist

If you send emails through one of your email service provider’s shared IP addresses and it gets blacklisted, it’s your email service provider’s job to delist the shared IP address. However, one domain that sends spam from a shared IP address can blacklist the entire shared IP address, so if your actions blacklist your shared IP address, your email service provider has the right to cancel your subscription or require remediation.

On the other hand, if your dedicated IP address or domain ends up on one or multiple email blacklists, it’s your job to get it off them. Unfortunately, there’s no silver bullet for getting your domain delisted — you need to follow a different protocol for each blacklist you’re on in order to get off of it. However, there are two general best practices for delisting that are great starting points for any email program.

1. Spam Rehab

To get off most blacklists, you need to work directly with the blacklist operators and prove to them that you’re actually a trustworthy sender. You can do this by following email best practices for a certain period of time, which is kind of like entering a spam rehab program.

2. Permission Pass Campaigns

Another way to delist your domain is running permission pass campaigns. When you get blacklisted, your email service provider will pinpoint the campaign that triggered it, allowing you to identify the email list in your database that has spam traps. Once you find this list, you can run a permission pass campaign, where you send a one-off reengagement email to the list’s contacts who haven’t interacted with your emails in a long time.

These contacts are most likely the spam traps that triggered your blacklisting, so make sure you weed out all the accounts that don’t engage with your permission pass campaign. Otherwise, an emotional attachment to a large yet unengaged email list might never let you delist. 

New Call-to-action

Reblogged 4 days ago from blog.hubspot.com