Medical Device CMS - The What and Whys

In the traditional pharmaceutical business model, it seems like all the efforts were put into addressing the physicians needs to boost sales. However, the scenario has changed drastically in the past few years and the focus is more inclined towards customers alongside physicians and payers.

Current business model driven by advanced technology is giving patients an opportunity to have a say and become more and more involved in their healthcare issues. This is especially true when it comes to millennials, who are not very satisfied with the information provided by their healthcare experts. Hence, people are leveraging the power of wearables to measure and track their fitness and vital signs like blood pressure and heart rate.

On these premises, it’s not difficult to agree with the growing importance of online presence and building credibility to boost sale. Having said that CMS provides medical practitioners space to share the know-how of new and upcoming medical devices. As a result, information sharing is becoming a critical part of the marketing strategy. So let’s dive straight into the basics of CMS, what does it manage and why does it matter for your industry.

What is CMS?

A CMS is a software application that is used to create and manage digital content. Using this, medical device makers can handle a vast amount of product information that is required to bring to market. It can be also used to present medical device information to a diverse set of stakeholders as a means of increasing quality management and regulatory compliance while reducing risk.

While selecting a CMS for pharmaceutical products, you need to look at different aspects such as ease and speed of setting up a user friendly website, performance optimization, security, what can be done if there are unexpected changes, volume variations, demands for major workflow changes, and other problems specific to the medical device industry.

Regulatory compliance, website performance, personalization, and SEO are the other key components you need to look at. Here are the 5 reasons why a business needs to invest in a web CMS:

  • Facilitates frequent content updates on the web properties
  • Aids in effective content management & collaboration
  • Ensures device & platform compatibility for the web properties
  • Effortless customization options at your fingertips
  • Web experience management

What does CMS manage?

In the medical device industry, consistency is the key to brand awareness. Undoubtedly, due to the rising competition and concerns, the approval of new drugs and medical devices has been marginally declined by the US FDA. To overcome these factors, pharmaceutical companies are investing in their brands. After all, increasing brand awareness is an important strategy to boost a company’s competitiveness.

An easy to use medical device CMS lets your content developers and marketers engage with a prospect, maintain the consistency throughout different collaterals such as blogs, news, product pages, corporate content, industry analysis, announcements, testimonial, and others.

In the medical devices industry, such components could be company information, product information, training materials, investors information, news, press release et cetera. 

Here making an informed open source CMS choice is of utmost importance as it enables technical as well as non-technical personnel to have full control over the website including editing and organization of the website. 

Drupal is one such open source CMS that follows a modular, building block approach, allowing unlimited customization. It also allows organizations to build flexible solutions that fit their unique business needs, resulting in a tailored solution specific to their requirement.

Why does it matter?

Indeed, pharmaceutical companies don’t make changes too often in a website. But what if it is company’s information, manufacturing address, representative’s name, regulatory changes or adding new information. Such changes happen as and when required. Therefore, it is pertinent to understand what a good CMS is. 

The benefits of a CMS is manifold and leveraging it rightly can be one of the major wins. In a medical device company, there are different stakeholders and they have their own perspective. 

Stakeholders involved in the CMS decision

Content Authors - Typically, content developers and consumers are likely to have a different user experience. A medical CMS offers different functionalities to different stakeholders. For authors, it has drag and drops editing, granular content editing, in-place editing, grouping content, sitemap generation, and layout management.

Marketers - For marketers, maintaining a marketing strategy and website goes hand in hand. An effective pharmaceutical website and marketing strategy is always relevant and should be up-to-date. In order to streamline to strategy, marketers make changes too often as per the requirements. 

An easy to CMS offers a wealth of undiscovered value far beyond just allowing them to create, distribute and monitor content across the business. The best healthcare CMS is the one that seamlessly integrates with your existing marketing technology stack and overall marketing automation plan.

Business - Evaluating whether your medical device CMS’s feature meets functional and nonfunctional needs is just one thing. Being a decision-makers/business owner you also need to assess the ROI whilst making the decision. Therefore, it's equally important to know how your CMS makes a good business sense. Here are the few questions you should ask yourself before making a decision:

  • Does your business require a flexible website
  • Do you need to share some common contents on specific or all pages of your website
  • Do you need to build connections and stay connected with your customers
  • Does your business require your website to be mobile-first 
  • Do you need to establish and maintain a heavily trafficked site

By identifying these and other issues, you can use your business plan to create a roadmap for a more accurate content strategy. 

Developers and IT - When it comes to developing a medical device/healthcare website, it covers a wide area of disciplines. More importantly, you need to look at it from the perspective of development and comparison. Have a look at some of the skills your in-house Drupal developers should have. 

Having an in-house team has its own benefit, however, hiring an external support team to have several advantages. A specialized vendor can provide talented individuals, access to technical expertise and scalability, which means the flexibility to scale up and scale down as and when required.

Community - While selecting an open source, it's crucial to look into the community that builds and maintains your medical device CMS of choice. Are they maintaining software quality? Is the CMS viable? Here is our take on why should we contribute back to the community. Also, read why Drupal is a market leader

What do you get

You can build your brand. Your customers are likely to be loyal, so your employees. You can build a credibility in the market and win the trust of your new customers.

If you want our Drupal team to take a look at your website and provide you with personalized insights. Get in touch.

Leverage Buyer Persona To Enhance Customer Experience

This post is the second in a series of our blog posts covering buyer persona and how to leverage it to enhance customer experience and boost user engagement on your website.

In a B2B or a B2C business, a buyer is not just an abstract idea, but a living being that comes to the marketplace to do business. In order to drive your business in the right order, you need an efficient buyer persona that defines your customer base. You might be wondering what is the role of persona? How it helps in enhancing the digital experience and boost user engagement on the website. 

Simply put, a buyer/user persona is a semi-fictional representation of your ideal customer based on market research and real data about your existing customers. A detailed buyer persona offers you significant insight for your company and helps you determine where to focus your time, guide product development, and allow for alignment across the organization. 

Well, creating user personas is one of the most important steps in building your Drupal website. They help all stakeholders to make better decisions. Let's delve into the process of leveraging buyer persona to make sure we have a fair idea of what is a persona, why do we use it, how does the persona help in marketing strategy and finally, how to create it. We have summarized all of the aforementioned questions so that you should not spend more time googling. Here's everything about user persona.

Buyer persona

So how can you leverage buyer persona to enhance the customer experience

Putting your personas to work entirely depends on the concerned authority such as webmaster and web content managers can use it for behavioral tracking to better refine personas based on visitor behavior and activity. It also helps to collect feedback from customer service teams to refresh profiled, and keep them update.

Whereas content marketers can leverage buyer persona to audit and tag their marketing content to analyze where it fits into the buyer journey for various segments.

Using persona insights, marketing leaders can enable programmatic marketing to determine the right content for the right channel at the right stage of the buying process.

A sales rep can use it for sales enablement and understand the various members of the buying committee - what they care about? how to build consensus to close the deal?

Importance of leveraging buyer persona

Personas Cultivate Relationship 

Developing a customer-centric design is a must for any business. Here persona acts as a guide, giving you an invaluable information. A detailed persona also helps you cultivate empathy for your clients that lead to a stronger understanding of what they are looking for. Knowing your customers' goal, motivation and behaviors ease your works eventually.

Your Website Is Not For You

Since our focus is clearly on customer needs, developing a design that has them at its core makes more sense. Learning how prospects engage with your brand through its lifecycle gives you perfect metrics to figure out what is working for you and what not. 

Before developing a website, try to figure out whether your design reflects the customer’s experience or the company’s operations. Clearly, focused persona designs highlight the road your customers will travel within your business and give you the chance to improve upon them.

Attain Targeted Marketing

Buyer persona helps you to get familiar with your targeted customers. As a result, you will learn stuff, possibly, you don’t know about your customer, gain insights into their perception of your company. 

Knowing your prospects helps you in producing market assets using the language they resonate in order to convert them into leads. Perhaps targeted marketing will help you to outperform your competitors.

Gain a Competitive Advantage

Customer-centric web designs are most likely to outperform the generic one. Furthermore, it assists in designing a more captivating website than your competitor, who is using the same generic messaging for everyone.

Evaluate your's as well as your competitor's site through the eyes of a buyer to develop an understanding of competitive positioning. Talk to your digital marketing personnel to do the competitive analysis for your current website.

Futureproof Your Project

For sure, no individual or an organization build website almost every other day but improvise it, enhance it and upgrade it. If you are planning to build a new Drupal website or upgrade it, consider persona research and documentation well before designs are created or your Drupal developer starts working on it.

Identifying customer base will help every stakeholder involved in the project make better decisions. Note that you can never know your customer too well. Once you have a vivid idea of your targets, you can apply that to the product creation, marketing, and business development.

Now go ahead. Design your buyer persona. Let your imagination run.

We, at Valuebound - a Drupal web development company, help enterprises with Drupal migration, Drupal support, third-party integration, performance tuning, managed services and others.

Get in touch with our Drupal experts to have personalized insights on how to enhance user experience and increase engagement on a Drupal website.

Drupal In A Day: Free Training At Valuebound On 1 Sept 2018

We, at Valuebound - a Drupal web development company, are excited to conduct a free “Drupal in a day” training session on 1st September 2018, Saturday. The session is an initiative of Drupal Association to introduce beginners to the world of open source platform.

Learn and design your own live Drupal website. The session will be presented by our Drupal 8 expert practitioners and senior Drupal consultants, having years of experience in delivering successful projects. The session will help you in understanding the ways CMS can help you build your career.

Difficulty level: Introductory

Duration: 1 Day

Proposed Session for Drupal in a day training

Drupal in a day will comprise of various sessions that span over the different stages of developing a full-fledged live Drupal Website. The session will focus on teaching the main features and concepts of Drupal with live practice sessions, terminologies associated with it and developing custom modules. 

When you will complete this, you will have a moderate-level knowledge of Drupal in designing live websites and selecting modules to get the functionality you want with maximum benefit.

Ideal for...

Whether you're an established professional or new to the Drupal world, this session will give you an expertise you need in building a live website. 

  • If you are PHP/Web developers, then you would never like to miss this opportunity as it will give an edge to your career with an additional insight. 
  • Fresh Graduates can have the technical know-how of CMS development to give a boost start to their IT career path as a developer. Drupal is widely used by Fortune 500 companies, governments, start-ups and more.
  • If you are a career switcher and planning to change your domain then it is the best time to learn what more is there for you in the IT industry.

The Drupal Training session is for everyone, who is interested in knowing what Drupal is and evaluating or implementing it.

Prerequisite, but not mandate

Starting from scratch may be difficult, but a little knowledge of CMS would be an added advantage. If you have a hand on experience in WordPress, Joomla or HTML, and CSS then it would be great. Else no worries! The session is aimed to train and encourage newcomers and polish the fresh graduates. This session will give you an outline of Drupal concepts.

When you will complete the session, you: 

  • Will have your own live Drupal website.
  • Will be able to install and configure modules and themes from Drupal.org.
  • Can create content and configure content types as well as create listings of content.
  • Can easily manage user roles and accounts, as well as aliases and URL paths.
  • Can create blocks and place them in the layout

Why this training session is free

We believe the best way to contribute to the Drupal community is by sharing the knowledge within its community and newcomers. Valuebound is an active contributor to the Drupal Community. The modules supported by Valuebound is used by more than 50,000 websites

As a Drupal specialist, Valuebound is dedicated to helping organizations and individuals to adopt the platform in their operations effectively. And we believe in giving result oriented training sessions that help you build the perfect websites you are looking for.

Come and join us! Be part of our Global Community. Get in touch if you have any queries regarding the session.

RSVP now!

Building a Publishing Site: Learn Everything About User Persona

Face it. Your website isn’t for you but for your customers.

You create your website to attract prospects that you can market to and later convert them into leads and then a customer. Everything from call-to-action to the visual design is inspired by the users’ behavior.

So, don’t you think it is important to develop a customer-centric website that offers seamless navigation, enhanced user experience and boost user engagement significantly.

This is the reasons why you should craft your website's design, content, and experience with your user personas in mind. Also, talk to different stakeholders involved to gather input from all levels of the organization.

You might be wondering what is persona or what is a persona in web experience?

Simply put, a user persona is a fictional representation of your ideal customer, based on user research and incorporates the needs, goals, and observed behavior patterns of your target audience.

So why do we use persona?

The persona allows the company to design a better user experience for it's at all touch points, essentially, increasing average revenue per user (ARPU) and subscription - a key factor in today’s business landscape.

Also, a website that resonates with customers/audience, motivates content sharing and converts more email subscribers

Furthermore, using a persona, you can better optimize the site for search as you have a better understanding of the keywords your audience is looking for in search engines.

How does the persona help in marketing strategy?

No matter what business you have, an emotional marketing strategy can be as effective as any other strategy.

Personas offer a purpose for all your marketing strategy be it web content or marketing collateral. Contents based on persona allows you to address the specific concerns customers struggle with before taking the desired action. 

Undoubtedly, personas are extremely helpful when it comes to figuring out the interest area of our prospects. There are chances that different segments of your audience will be interested in the product for different reasons. 

Also, it is pertinent to speak to them directly to increase the chance of conversion.

Let’s cut the clutter and see -

How to create a persona?

In order to create an effective user/buyer persona, consider defining your segments, demographics, articulate personas’ values & beliefs and define the value they get from your organization. In the end, give them a face and a name to make it look more realistic. 

Follow the below steps to create a persona for your upcoming projects:

Defining Segments & Demographics

Begin with a list of different segments that you deal with. Email subscribers, social media fans, inactive members, donors, volunteers, activists and others.

While defining demographics, consider asking yourself a few questions on their address, gender, education, income, marital status, and kids.

Articulating Values and Beliefs

Learning about your customers’ values, opinions and beliefs give you a handle on what will be going on in their heads when they visit your website.

For this, you can ask questions about their passions and interests, dreams and goals, political thoughts and personality characteristics.

Articulate What Motivates Them

Start by asking some of the questions like their worries and goals, ways they try to create a meaningful life and behavioral traits.

Values They Get From Your Firm

Understanding your personas belief will help you to figure out exactly what they care for and why would they be your subscriber, volunteer or donate you. 

Realistic Name and Face

It's always suggested to give your persona a name and a realistic face to help them become more real.

Well, by now, we have a better understanding of creating a user persona/buyer persona. And why it is important for any business. Now, it’s time to explore the best practices. Since this blog has already become detailed we will share best practices to leverage the power of a user persona in the next installment of this series. 

To conclude why you should create a website-specific user persona?

To put it simply, a website designed, developed and marketed on assumption is often misguided and don’t show the results what we are expecting and ultimately it's underachieving. 

We need to understand users are different and they have different goals than you. They don’t care as you do. Here persona helps every stakeholder involved make a better decision, create one shared vision and make user research come to life.

Developing persona may take dedicated time and effort, but try not to be concerned with the additional time to create as it will help your business in the long run.

That’s it! I believe this was quite a ride, but a necessary one.

Now go ahead and start working on a persona for your new, upcoming project. 

In case you need any assistance with web development services, get in touch with our Drupal experts to find out how you can enhance user experience and increase engagement on your site. 

We, at Valuebound - a Drupal web development company, help enterprises with Drupal migration, Drupal support, third-party integration, performance tuning, managed services and others.

Enhance Your Content Strategy & UX To Boost Engagement

As a business owner or decision maker, it’s critical to take decisive action and revisit content strategy plan from scratch to help the business grow exponentially. A well-designed content strategy often goes beyond the scope of a content marketing strategy as it helps businesses increase audience engagement. 

Not only this, decision-makers also need to focus on measures to enhance user experience. Drupal is one such framework that offers deep capabilities and endless flexibility in developing a responsive, multilingual website. 

As we explore more about audience engagement, we will also define and contextualize omnichannel content strategy, and examine the value proposition they hold for it. Let’s begin.

Omnichannel content strategy

In the fast-paced digital economy, it’s important for enterprises to devise an omnichannel content strategy that can help boost their business online presence. Note that implementing omnichannel on the site requires a thoughtful digital strategy

Consider your own objectives first and kickstart the process by identifying the ways your current content strategy supports the estimated goals. 

Furthermore, you would also like to consider user persona. Try to know their goal. What is your unique value proposition to them? How to ensure they are aware of it? 

As a Drupal services provider, we have worked alongside several well-known media & publishing enterprises in the US and other parts of the world to help them enhance UX and increase audience engagement. Here are the few features you might like to consider for your current or new project. Have a look:

Now that you know the basic of omnichannel content strategy, it’s time to decide the integrations for your site to boost audience engagement. 

Drupal has been a go-to-CMS for simplified authoring, personalization, localization, responsive designs and more. Here integration with third-party applications plays a crucial role.

Web services: Integration with APIs

APIs are a set of tools that are used to build a software application. Drupal was designed to create and publish content through APIs as an optional feature to make it easier to alter, extend and help the developer with common tasks. 

Drupal 8’s latest feature such as REST API in core helps you leverage a range of integration such as social media channels, Google Analytics, payment gateways and ERP solution like Salesforce.

Personalization 

Personalization is crucial for any Drupal website. It accounts for a range of factors, such as on the devices your site is being accessed on, where your prospects are in the buying journey, specific interests or need your visitors to indicate while visiting the site. 

It is one of the best features when you need to determine what a user is interested in. And according to the data collected, you can make improvements in the user experience or the content available on the site.

Responsive web design

Drupal 8 has been designed with responsiveness in mind. With the rapid increase in the adoption of smartphone and tablets, it has become a necessity for businesses to develop mobile-friendly websites as most of the contents are consumed with hand-held devices.

Responsive web design is a technique that helps to keep website content, images, and structure same and work seamlessly on any device. Supported by a community of thousands, Drupal’s new feature is designed to work on all the Internet-enabled devices coming in near future. 

Subscription

Integration of Drupal with subscription services enables users to be notified of changes to node pages or taxonomies, such as additions to some category of the blog. Once enabled or activated, all nodes will have an additional link that will allow users to change their subscriptions. Users can also create automated subscription portal and manage their own subscription from the tab on their screen.

Localization

Having a multilingual website is must to grow business globally. A multilingual website demonstrates your thought, work and how you deal globally. Drupal allows the user to translate any component of the software, be it a taxonomy, comments, configuration, image styles, and more. 

Further, the framework automatically downloads the latest interface translation in your native language when you install the CMS in any language other than English.

If you are a decision maker then it's important to have a basic understanding of the frameworks on which you can migrate or build a new project. Successful businesses always have a strategy to take advantage of updated technologies that best suites to their business needs. Drupal 8 comes up with major upgrades that have potential to fulfill your unique business requirements and add value to it. 

Talking about the release of Drupal 9, Drupal creator Dries Buytaert in his blog, titled When should we release Drupal 9? said, “Nothing has been decided yet, but the current thinking is that we have to move Drupal to Symfony 4 or later, release that as Drupal 9, and allow enough time for everyone to upgrade to Drupal 9 by November 2021.”

We, at Valuebound, keep a tab on the latest trends, upgrades and regulatory compliance to provide you with enterprise level web solutions to boost your online presence. Get in touch with our Drupal experts for more information on our service offerings.

Should I use Promises or Async-Await

I recently read a medium post where the author claimed that using async-await is better than using promises. While this might hold good in general cases, I think that generalisation was too broad and doesn’t do justice to either async-await or promises. For somebody who is new to Javascript making sense of these and decide which one to use can be a challenge. In this post I will list down things that I have learnt about these and how I decide when to use what.

I read somewhere that async-await is syntactical sugar for using promises. So before getting to know async-await or deciding on which approach to you use make sure that you have a better understanding of promises. I captured my learnings in the post Understanding promises in Javascript. If you do not have time to go through the full article checkout the thumb rules that I follow.

Thumb Rules for using Promises

  1. Use promises whenever you are using asynchronous or blocking code.
  2. resolve maps to then and reject maps to catch for all practical purposes.
  3. Make sure to write both .catch and .then methods for all the promises.
  4. If something needs to be done in both the cases use .finally
  5. We only get one shot at mutating each promise.
  6. We can add multiple handlers to a single promise.
  7. The return type of all the methods in Promise object whether they are static methods or prototype methods is again a Promise
  8. In Promise.all the order of the promises are maintained in values variable irrespective of which promise was first resolved.

Once you have wrapped your head around promises checkout async await.It helps you to write code that is much more readable. When not used properly it has its downsides. You can read Understanding async-await in Javascript to checkout my learnings. If you do not have time to read the full article checkout my thumb rules.

Thumb Rules for async-await

Here are a list of thumb rules I use to keep my head sane around using asyncand await

  1. aync functions returns a promise.
  2. async functions use an implicit Promise to return its result. Even if you don’t return a promise explicitly async function makes sure that your code is passed through a promise.
  3. await blocks the code execution within the async function, of which it(await statement) is a part.
  4. There can be multiple await statements within a single async function.
  5. When using async await make sure to use try catch for error handling.
  6. Be extra careful when using await within loops and iterators. You might fall into the trap of writing sequentially executing code when it could have been easily done in parallel.
  7. await is always for a single promise.
  8. Promise creation starts the execution of asynchronous functionality.
  9. await only blocks the code execution within the async function. It only makes sure that next line is executed when the promise resolves. So if an asynchronous activity has already started then await will not have an effect on it.

So should I use promises or async-await

The answer is that we will use both. Following are the thumb rules I use to decide when to use promises and when to use async await

  1. async function returns a promise. The converse is also true. Every function that returns a promise can be considered as async function
  2. await is used for calling an async function and wait for it to resolve or reject.
  3. await blocks the execution of the code within the async function in which it is located.
  4. If the output of function2 is dependent on output of function1 then I use await.
  5. If two functions can be run in parallel create two different async functions and then run them in parallel.
  6. Two run promises in parallel create an array of promises and then use Promise.all(promisesArray)
  7. Every time you use await remember that you are writing blocking code. Over the time we tend to neglect this.
  8. Instead of creating huge async functions with many await asyncFunction() in it, it is better to create smaller async functions. This way we will be aware of not writing too much of blocking code.
  9. Another advantage of using smaller async functions is that you force yourself to think what are the async functions that can be run in parallel.
  10. If your code contains blocking code it is better to make it an asyncfunction. By doing this you are making sure that somebody else can use your function asynchronously.
  11. By making async functions out of blocking code, you are enabling the user who will call your function to decide on the level of asynhronicity he wants.

Hope this helps you decide easily when to use promises and when to use promises and when to use async-await

Originally published on https://hackernoon.com/should-i-use-promises-or-async-await-126ab5c98789

Understanding randomGenerator functions for testing Javascript functions

Recently I had thrown a bounty for converting a flat json to a nested json. You can check more about it in the link below

https://steemit.com/@mightypanda provided a solution to the same and won the bounty. I wanted to test the solution for various scenarios. Creating the inputs for the edge cases was very time consuming. I thought of using random generators for testing the same. So I started digging a little bit.

To randomise or not

There is no agreement on using random generators for testing. The argument against using random generators was that the test cases should be deterministic meaning that you should know what is the input and what is the expected output. While this makes sense from the test report and test suites, I though we could use randomised generators for inputs so that we can test the output for hitherto untested inputs every time we want. If used properly this method helps us increase the number of scenarios or inputs for which we can test.

Lets randomise

If you have read my previous article Understanding Promises in Javascript you would remember that we used the getRandomNumber function which served us well for promiseGenerator functions so that we were able to simulate and learn how promises work. I had added a disclaimer saying that //works when both start,end are >=1 and end > start. Since I will be using this method more frequently I thought of cleaning it up a bit.

function getRandomNumber(start = 1, end = 10) {
  //works when both start,end are >=1 and end > start
  return parseInt(Math.random() * end) % (end-start+1) + start;
}
// Lets add another function which just calls getRandomNumber //function and prints it.
function printRandomNumber(start = 1, end = 10) {
  console.log(getRandomNumber.apply(null, arguments));
}

I wanted it to work for positive numbers, one of the params could be zero and even for negative numbers. To find it out if it is truly random(oh I mean’t randomised enough) and if the edge cases are handled we will need to run this getRandomNumber function multiple times. What I mean by that is that if we need to be sure that start and end values are included in the random numbers that are generated the only way forward is that run the function enough number of times until the random number generated is same as start or end. I would put it as occurrence is the only proof that it will occur.

Repeat

So let us create a function which can call the desired function desired number of times. I got the following example from Stackoverflow.

const loop = (fn, times) => {
  if (!times) {
    return;
  }
  fn();
  loop(fn, times - 1);
};
//Format for invoking our loop function. Let us say we need to call // getRandomNumber function 20 times
loop(printRandomNumber, 20);

Ah that was simple enough. It would have been good if I had thought of it. I think I googled a little early. So this function uses recursion. Exit criteria is that times is not zero. Recursion criteria is that when exit condition is not met invoke the desired function and then call the recursive loop function with times variable decremented. That was simple enough, isn’t it?

But we might have scenarios where we will need to pass parameters to the function in question as well. So let us modify our function a little.

const loop = (fn, times = 5, params = []) => {
  if (!times) {
    return;
  }
  fn(...params);
  loop(fn, times - 1, params);
};
//Format for invoking our loop function. Let us say we need to call // getRandomNumber function 20 times with start and end values as 2 and 5
loop(printRandomNumber, 20, [2,5]);

So we have added a third parameter to our loop function which will be an array of parameters. When invoking the desired function we are using the spread operatorthree dots to pass the params to the function. We just need to make sure that when passing the parameters to the desired function we pass it as an array of parameter values. Come to think of it, I think we should have named this function as repeat instead of loop.

If we make the times to 100 or so it will be difficult for us to look at the values at one. So let us just create a concatenation function.

outputString = "";
// I know using global variables is bad. For now let us keep it this //way. Once explore the closures completely we can use it for this //scenario.
function concatenateRandomnumber(start = 1, end = 10) {
  outputString += getRandomNumber.apply(null, arguments) + ", ";
}
// This will add a trailing comma but who cares. Lets just call in //Stanford comma for now :P

So let us call the above function and with some edge cases and check.

var randomLimits = [0, 3];
loop(concatenateRandomnumber, 100, randomLimits);
console.log(...randomLimits);
console.log(outputString);

fails for zero as 3 is never appearing
var randomLimits = [-3, 3];
loop(concatenateRandomnumber, 100, randomLimits);
console.log(...randomLimits);
console.log(outputString);

Fails for negative range.

Randomise Better

Using loop function we have identified the edge cases where our getRandomNumber is failing. This time I didn’t google. After some though I realised that it is all about getting the range. So I changed the function as follows.

function getRandomNumber(start = 1, end = 10) {
  if (start > end) {
    [start, end] = [end, start];
  }
  let range = end - start + 1;
  return (parseInt(Math.random() * range) % range) + start;
}

This seems to work for most of the edge cases. Do let me know if I missed something.

Passes for all edge cases considered

Math.random gives random floating numbers between 0 and 1. So (parseInt(Math.random() * range) % range) will give us a random number between 0 and range. I am then displacing it by start to have the radom number generated between start and end.

Use this approach for testing our scenario

To know the details of the problem statement checkout https://steemit.com/javascript/@gokulnk/nestify-a-flat-json-object

For this problem statement we know that we will have a flat json and the value of the pos attribute changes only one step at a time. So the increment is only in terms of -1,0,+1 In the solution provided by mightypanda getNestedJSON is the main function and createChild is used internally.

Let us first define runTestforFixedValues function. These are like static inputs for the scenarios that we already know of. Let us check the output.

function runTestforFixedValues() {
  var inputSets = [];
  var input = [
    { pos: 1, text: "Andy" },
    { pos: 1, text: "Harry" },
    { pos: 2, text: "David" },
    { pos: 3, text: "Dexter" },
    { pos: 2, text: "Edger" },
    { pos: 1, text: "Lisa" }
  ];
  inputSets.push(input);
  input = [
    { pos: 1, text: "Andy" },
    { pos: 2, text: "Harry" },
    { pos: 2, text: "David" },
    { pos: 1, text: "Dexter" },
    { pos: 2, text: "Edger" },
    { pos: 2, text: "Lisa" }
  ];
  inputSets.push(input);
  input = [
    { pos: 1, text: "Andy" },
    { pos: 2, text: "Harry" },
    { pos: 3, text: "David" },
    { pos: 4, text: "Dexter" },
    { pos: 5, text: "Edger" },
    { pos: 6, text: "Lisa" }
  ];
  inputSets.map(inputJSON => {
    getNestedJSON(inputJSON);
  });
}

Output for one fixed input value

The solution provided worked for all three input scenarios. Instead of creating more inputs like this. I spent some time on creating the random Flat JSON generator in the required format.

function runTestforRandom() {
  var inputArray = [];
  let alphabetsArray = [];
  for (i = "A".charCodeAt(0); i <= "Z".charCodeAt(0); i++) {
    alphabetsArray.push(String.fromCharCode(i));
  }
var maxNumberOfElements = getRandomNumber(3, 10);
  var inputObject = [];
// All we need is -1,0,-1 just change the number of occurences to //control the likelihood of the value being used. CRUDE //IMPLEMENTATION :P
  var incrementArray = [-1, -1, 0, 1, 1, 1, 1, 1];
  pos = 1;
  inputArray.push({ pos: pos, text: "A" });
  for (var i = 1; i < maxNumberOfElements; i++) {
    randomNumber = getRandomNumber(1, incrementArray.length) - 1;
    increment = incrementArray[randomNumber];
    tempValue = pos + increment;
    pos = tempValue > 0 ? tempValue : 1;
    var obj = new Object();
    obj.pos = pos;
    obj.text = alphabetsArray[i % 26];
    inputArray.push(obj);
  }
  getNestedJSON(inputArray);
}

I have created alphabetsArray that contains alphabets which we will use for text property. maxNumberOfElements is generated using our random number generator function. We know that between adjacent objects the value of pos changes only by -1,0,+1. So an incrementArray is stuffed with these values and we are picking one of these values randomly. Let us say you want to create a deeply nested object, then increase the occurrences of +1 in this array. We can also make the text field of the object random as well. Since its value doesn’t affect the outcome, we are assigning alphabets in series to textobject so that it is easier for verify if the output is nestified properly. Take a look at the output below to see what I am saying. It is almost as easy as reading alphabets to check if the nesting is proper or not. Even if we had not sued the alphabets in series we could still ready the pos property in these objects to verify the nestifying operation.

Whenever I came across an interesting pattern I just copy pasted the input array from the console and pasted it back in my code for runTestforFixedValues function. Very soon I had a big list of fixed input values like follows.

function runTestforFixedValues() {
  var inputSets = [];
  var input = [
    { pos: 1, text: "Andy" },
    { pos: 1, text: "Harry" },
    { pos: 2, text: "David" },
    { pos: 3, text: "Dexter" },
    { pos: 2, text: "Edger" },
    { pos: 1, text: "Lisa" }
  ];
  inputSets.push(input);
  input = [
    { pos: 1, text: "Andy" },
    { pos: 2, text: "Harry" },
    { pos: 2, text: "David" },
    { pos: 1, text: "Dexter" },
    { pos: 2, text: "Edger" },
    { pos: 2, text: "Lisa" }
  ];
  inputSets.push(input);
  input = [
    { pos: 1, text: "Andy" },
    { pos: 2, text: "Harry" },
    { pos: 3, text: "David" },
    { pos: 4, text: "Dexter" },
    { pos: 5, text: "Edger" },
    { pos: 6, text: "Lisa" }
  ];
  // All those involving Alphabets were generated from the random function
  inputSets.push(input);
  input = [
    { pos: 1, text: "A" },
    { pos: 2, text: "B" },
    { pos: 2, text: "C" },
    { pos: 2, text: "D" },
    { pos: 1, text: "E" },
    { pos: 2, text: "F" },
    { pos: 2, text: "G" }
  ];
  inputSets.push(input);
  input = [
    { pos: 1, text: "A" },
    { pos: 2, text: "B" },
    { pos: 1, text: "C" },
    { pos: 2, text: "D" },
    { pos: 2, text: "E" },
    { pos: 3, text: "F" },
    { pos: 4, text: "G" },
    { pos: 5, text: "H" },
    { pos: 5, text: "I" },
    { pos: 4, text: "J" },
    { pos: 4, text: "K" },
    { pos: 5, text: "L" }
  ];
  inputSets.push(input);
  input = [
    { pos: 1, text: "A" },
    { pos: 1, text: "B" },
    { pos: 1, text: "C" },
    { pos: 2, text: "D" },
    { pos: 1, text: "E" },
    { pos: 1, text: "F" },
    { pos: 2, text: "G" },
    { pos: 1, text: "H" },
    { pos: 1, text: "I" },
    { pos: 2, text: "J" },
    { pos: 3, text: "K" },
    { pos: 3, text: "L" }
  ];
inputSets.push(input);
inputSets.map(inputJSON => {
    getNestedJSON(inputJSON);
  });
}

We could keep repeating the process and increase our inputSets until we have a wide range of input values.

So now we are able to test the code for various static input values. Every time we run the tests we can also look at some random inputs and verify if the output is expected. If you like that input or if you consider that is an edge case that should be tested in general then you can just copy paste that input to your static value testing method. Isn’t that cool? At-least I think it is. I find it very useful when I want to check the logic of a particular critical function.

If you want to look at all of this code in a single place checkout

Here is the repo for the same — https://github.com/nkgokul/flat-to-nested/blob/master/nestify.js

Summarising

  1. We started with getRandomNumber from the previous article.
  2. We used a loop function from SO and checked how it was implemented.
  3. We extended the loop so that we can also pass parameters to the desired function that needs to be invoked.
  4. We learnt using the spread operator.
  5. We used our loop to identify where all our getRandomNumber function was failing.
  6. We improved the logic of getRandomNumber to work for all the ranges.
  7. We tested out getRandomNumberand made sure that it works for all the ranges.
  8. We wrote runTestforFixedValues function to list some know edge cases and understand the nature of inputs.
  9. We created runTestforRandom function which generates a random flat json input for our testing.
  10. We used loop(runTestforRandom, 10); for running runTestforRandom 10 times.

Originally published on https://medium.com/@gokulnk/understanding-randomgenerator-functions-for…

Everything you need to know about ad blocking

AudienceProject, a Denmark-based marketing technology company, revealed that nearly 5% of mobile sessions were blocked in the U.S. in 2016. Germany has ranked high in desktop ad-blocking use. The research found that nearly 13% of mobile sessions were blocked in Germany.

There is no denying that ad blockers are putting a big dent in advertising-based business models on the web. And this has produced different reactions. The big question here is who blocks ads, why and how can you win them back

In this post, we have tried to answer some of the relevant questions asked by publishing firms about ad blocking. This blog will answer questions like who block ads, why do they block it, who does not block ads, how do we win them and strategies to overcome ad blocking in the publishing industry. Check out our previous blog where we have discussed how top 10 Publishers dealing with AdBlocking

So the question is who block ads?

According to Interactive Advertising Bureau (IAB), nearly 26% of users surveyed block ads on computers and 15% block ads on Smartphones. They tend to be men aged between 18-34 years. 

The survey also found that anti-viruses are confused for ad blocking. Around 40% of the user think that they are using an ad blocker. The confusion comes from consumers thinking that antivirus software or pop-up blockers built into their browser are ad blockers.

Now the question arises, why do they block ads?

The answer is: no wants like to get interrupted in between. Especially consumers using ad blockers prefer uninterrupted, quick browsing and a streamlined digital experience. One of the important reason behind using an ad blocker on the personal computer is the perception that websites without ads are easier to navigate.

At the same time, smartphone users believe that ads slow down browsing. In contrast, consumers that are not using ad blockers tend to blame content for slow loading pages. 

Some of the most annoying ad elements are ads that block content, long video ads before short videos, ads that follow down the pages as the user scrolls. In the end, it's important to understand ad blocker users are less tolerant of ads.

We often ignore asking ourselves, who does not block ads. Ignoring such questions may not be helpful as you will never know your customers and won’t get the result which you are looking for.

Often past users of ad blockers do not block ads. Readers blocked from accessing the content and messages asking them to unblock in order to view the content often drive then to uninstall the blocker extensions.

The most important question here is how do we win users who block the ad?

Start with implementing “LEAN principle (Light, Encrypted, AdChoice supported, Non-invasive ads)” that address a number of issues related to ad blocking. Further, there are several do’s and don’t that you can follow to win or retain users who block the ad.

Do’s

  • Give users control to skip the video and/or thumbs up/down ratings.
  • The other way you can win the user by assuring users of site safety. Ensure them or provide guarantees that site and ads both are secure and virus-free and won’t slow down browsing.

Don’ts:

  • The biggest often site owners do is they disrupt their flow with ads that block content, long video contents, ads that follow down the page, autoplay, slow loading, pop-ups and full-page ads.

Strategies to overcome ad blocking in the publishing industry

According to a report from PageFair, in 2016, the usage of ad blocker has increased to 30%. The report also found that by the end of 2016, there were 615 million devices blocking ads of which nearly 308 million or 62% were of those mobiles.

For many years, ad blocking has been a major concern among the media and publishing company. But with the advancement in ad-blocking software and extension, it has gone from a mild irritation to a full-blown crisis.

When it comes to overcoming ad blocking in the publishing industry the very first solution that strikes my mind is how to deal with this problem. 

Simply put, the solution is to give ad blocker users an ultimatum of whitelisting their website or face paywall. Undoubtedly, this is the best solution for some media and publishing enterprises, however, there are better chances that it may backfire. 

In another word, there are chances that users may move to a competitor if they are blocked from accessing the content. Here are some of the strategies publishers can implement to overcome ad blocking.

  • Go creative or go native

There are two sides to every coin. The emergence of ad blockers is a wake-up call for publishers to become more reader-focused and provide them with easy navigation and enhanced user experience.

Publishers can use the “whitelisting” option to their advantage since most ad blockers provide this option. Ask your reader to white-list your website in order to get access to unique and quality content. 

  • Have less intrusive advertising

Face it. We install ad blockers because some ads are annoying. From my understanding, I am not the only one who either leaves a site or install ad blocker when a page load-delay and obtrusive ads invade on the screen.

On the whole, we all don’t like ads but we understand why are there and as long as they don’t hinder our reading experience, we keep visiting and reading their content.

Aligning ad content more with the page context around them is one of the important characteristics of native ads. Thus, this can be a better option for publishers. 

Native ads are less intrusive and do not conflict with a visitor’s experience. In addition, these ads add value for customers that make site visitor view more ad content.

  • Show your readers that you care about them

By know, we have a brief understanding of - who blocks ads, why, and how to win them back. We also know that big adverts pull people off and make them block ads. 

Make your readers feel valued not only by making ads as minimalist and personalized as possible. Also, try to tailor everything else on your site to the reader and build trust by developing a relationship with them. Eventually, this will lead them to either whitelisting your website or pay a fee to read your content.

  • Strike a deal

In the end, as a publisher, you need to strike a deal with your readers. IAB suggests publishers two innovative approaches: offering tiered access to the content and rewarding them. 

Give limited access to users who are using ad blocking software or extension. Communicate with them that more in-depth access is available only after whitelisting the site or turning off the ad blocker. 

Reward them by giving credit or other elements to build positive relationships, which will ultimately enhance the trust between the two parties.

Commentary: The above-mentioned method may prove useful, but they are not a permanent solution and a temporary one. The actual solution lies in native advertising, which in most case not blocked by ad-blocker software. However, in the long-term, the solution should involve advertisers to go more creative, safer and privacy compliant and deliver a delightful user experience.

If you are a publishing company looking to increase your ARPU with paid subscriptions, memberships, events, and lead generation we can help. Get in touch with our Drupal experts to find the possible way to boost user engagement on your website.
 

Understanding Voice Technology And Why Publishing Companies Should Consider It

Voice technology has been with us for many years, but the failing of these systems prevented its adoption globally. However, the recent advances in disruptive technologies like Artificial Intelligence is enabling voice-controlled devices to go mainstream eventually. There is no denying that the technology will have a significant impact on various industries, including media and publishing, to offer personalized services.

By 2020, nearly 55% of US households will have smart devices that mean more than 70 million households will have at least one, TechCrunch reported. The total number of installed devices will top 175 million by that year.

So what exactly is voice technology and why should you consider it for publishing enterprises? Let’s dive in on.

In order to understand voice technology thoroughly, it's important to know about Voice Assistant, Voice Search, Artificial Intelligence (AI) & Machine Learning (ML).

Voice Assistant: These are the software that connects to smart devices and listens to what you say, process it and give a personalized response. They do this by using the different components of AI, such as natural language processing (NLP) and machine learning. Some of the well-known voice assistants are Amazon’s Alexa, Apple’s Siri, Samsung’s S Voice, Microsoft’s Cortana and Google Assistant.

Further, the rise of voice search on digital assistants means an increase in a longer phrase that means audiences don’t need to search with keywords, instead they can ask the questions to search engines. Here publishers/content creators need to optimize their publishing website for voice search to use the technology effectively.

Artificial Intelligence: With the advances in AI, the opportunity seem endless. In layman term, AI is the simulation of human intelligence processes by computer systems. These processes include learning, reasoning, self-correction, speech recognition, machine vision and others. Here, Machine Learning (ML) - an application of AI - enables systems to automatically learn and improve from experience.

So why voice technology for the publishing companies

Voice technology is the changing the way people search the internet for information. A recent survey by Google revealed that nearly 48% of users who own a voice-activated speaker prefers to receive personalized information from recognized brands to make their work and lives easier. 

The numbers mentioned above clear that voice technology is soon going to be a new frontier for the publishing industry. And there is no better time to start integrating this technology into your website. 

Leveraging the platform

There are two ways the publishing industry can leverage voice technology to the fullest. First, the content should be provided as a news feed through the smart devices using an RSS or XML feed. Second, voice can be used to transform the internal search engines, database products, and mobile applications. The voice-driven search will also enhance search experiences for the audience.  

Initiatives by Drupal community around Voice enabled functionality

Drupal VoiceCommander module allows users to navigate the entire menu system of a Drupal website, using the Web Speech API. By implementing this module, users can easily navigate the site without using a mouse, use voice commands on mobile devices and selects their own list of commands from custom menus. Additionally, using Drupal voice search module, you can seamlessly add speech recognition to your web pages to search for content.
 
It's clear that voice technology is the new frontier and publishing industry needs to experiment with voice. There is no denying that media and publishing companies are constantly trying to ensure enhanced and personalized user experience. However, such work requires a dedicated IT team to monitor the developments and work accordingly. 
 
Give a shout out to Valuebound if you would like to see how we can help you to understand the business side of it.

 

Best Practices To Enhance Ad Viewability In Digital Advertising

Getting your ad viewed by targeted audience shouldn't be a struggle when you are putting your best efforts on it. Also, it is not even a click-through or a conversion. Still why it is considered a win if half the ad is visible for a second or two.

Ad viewability plays a critical role in the performance of your website and business. These are greatly linked to revenue and increasing it can significantly result in a better RoI. 

For publishers, agencies, and marketers, viewability has always remained a hot topic. A low viewability rating shows that you, the publisher, need to reassess and adapt ad positions. 

Let’s cut through the clutter and discuss some of the best practices that can help publishers enhance ad viewability and increase revenue.

Page length

According to Google, the short form of contents are tend to have higher viewability. Shorter contents are easy to consume if your pages have only a single fold. You can also enable infinite control if you wish to post longer content.

Load speed

Websites filled with ads are naturally associated with a high load time. Google suggests brands should make sure their webpage is loading fast, including ad rendering time. In such circumstances, performance optimization is recommended as both user experience and usability are dependent on the speed of page loads.

Alternatively, leverage Google Pagespeed - speed optimization tool - to analyze and optimize website performance. 

Design responsiveness

Responsive design ensure that ads will adapt to the browser and device used for viewing those ads. Responsive ads not only provides a better user experience but also enhances the viewability. This move can help you improve the viewability of ads and business revenue.

Sidebar content

Responsive templates are a great way to enhance user experience and boost viewability. However, you should know how your sidebar content is presented in each template. In certain scenarios, an ad might not be visible when you amplify the content. Make sure sidebar content has optimum visibility even when users zoom in on your page.

Optimize your viewability

Ad placement matters. Placement of ads just above the fold has proved the best place for the highest viewability rates. Google suggests to place the ad right above the fold and not at the top of the page. Further, the most viewable ad sizes are the vertical size units such as 160x600.

Produce great content

Content is king. While there is various other recommendation on ways to improve viewability, one of the key components is content. Readers love unique and quality content. The quality content decides whether an ad will be seen is if a person is willing to invest his/her time with it. 

Measuring your performance

Well, there is n number of practices that help you to stay ahead of your competition. And measuring your ads performance is one of them. It helps you to see how you are currently performing in terms of viewability. Don’t forget to closely track each metrics. 

Measuring ads performance gives you an opportunity to work and improvise them. Most importantly, there are two metrics you need to look at - placement and creative sizes.

Bottom line: Viewability is a challenge for both buyers and sellers. Optimizing the ads accordingly helps you to bring better results, build a long-term relationship and drive more revenue. Hence, we suggest not to just take our advice but test, learn and let the data drive your decisions. 

Hope you have enjoyed reading the list of viewability tips! Be sure to implement and test each one for the best results. If you want our Drupal team to take a look at your website and provide you with a few personalized insights. Contact us.

Download the Drupal Guide
Enter your email address to receive the guide.
get in touch