About Marek

This author has not yet filled in any details.
So far Marek has created 26 blog entries.

Best Email Marketing Practices with Amazon SES & Sendy

When you start using Amazon SES with Sendy. You get a lot of freedom on sending email newsletter and updates to your subscribers. But, with all these freedom, you need to take of some of the best email marketing practices for making the emails land in inbox of the subscribers, in order to get more opens and then clicks from email.

Amazon SES Best Email Marketing Practices

Before we go deep into the email marketing best practices with Amazon SES and Sendy, there are 2 most important parts where a mailbox decides to mark a mail as spam or let it land into the subscribers inbox. First important part about this is, technical requirement, which is taken care of from our end. Another part is the content of emails which you will be sending after you get Amazon SES Production access.

Technical Best Email Marketing Practices:

We prefer to enable following 3 most important records which are required for different purposes by email mailbox. PTR record (or reverse DNS) should be enabled. SPF is added by Amazon dynamically, whereas, we ask you to enable DKIM, before you start sending emails from your Amazon SES dashboard.

Let’s have a look into these 3 technical requirements for best email marketing practice:

  1. PTR, is reverse domain lookup for the ip, which is important to have in order to reduce spam.
  2. DKIM is signature, which you need to add to your custom domain name after Amazon SES verification. DKIM adds your own domain identity to your outgoing emails.
  3. SPF record is spam policy framework, which is added to outgoing email address automatically by Amazon SES.

Moreover, you can use this tool for checking technical best email practices:

Note: Kindly ignore their suggestion on DMARC, SPF and ip list on SPAMCANIBAL.

In-depth Content Analysis for Best Email Marketing Practices:

Email spam depend on many factors, like, subject, body, words used and so on, so many. Also, if some mail has landed in spam for you, it will land in spam for everyone, it’s not necessary. Its very much personalized experience of the mailbox of the email.

Here are some important points which ensure high email delivery rate of you email marketing campaigns sent through Amazon SES with Sendy:

1. Avoid using any kind of spam trigger words in subject and email body. You can find The Ultimate List of Email SPAM Trigger Words. If you are using few or more of these words into subject and email body, then, the mailbox has high probability to mark your email as spam. So, its better to avoid using any of these words.

You can use following tools to check, the subject and body of the emails, if they are triggering Spam and reducing your email delivery rate:

According to the suggestion, improve your email subject and body.

2. Maintain proper text to image ratio. If your email body has a lot images, then try to maintain the ratio with adding relevant text below and above the main image. This gives signal to the mailbox that, the email you are sending to your subscriber is informative too.


3. Always maintain same version of text and html emails. Inside Sendy you have WYSIWYG HTML email editor and plain text editor too, on left side. Here, the best practice is that, you must maintain the exact same version of HTML and text version, so, that the subscriber’s mailbox should not suspect and make it land in inbox.

4. Always add “Unsubscribe” and “Report Spam” links at bottom of email. This is very important for the email newsletters. You can add the HTML link or tags according to the requirement to your footer.


Pro Trick: Make “Report Spam” link land on “unsubscribe” page.

5. Adding “pre header” and your physical address in “post footer”, this makes your email more reliable and trusted, in some countries you need to mention your postal address to your email campaign compulsorily.

6. Keep from-email and to-email same, this enables mailbox not to suspect your email and make them easy to understand that the email coming to their mailbox can be replied easily from the receiver. You can use email of the format “”, as from and to email.

7. Setting up Mailbox for Sendy hosted domain, this is another good practice which you can enable. You should setup a mailbox for the domain name on which Sendy has been installed. Few mailboxes also reverse lookup the MX record available on the subdomain. This mailbox is used to receive any email sent on the configured mailbox domain.

To configure mailbox on a domain name, you can use Google AppsZoho Mailbox or Yandex Mailbox, which is available for free.

Sending text only emails have almost 10 times higher open rate!

Moreover, I would suggest you to not make any decision about Spam emails based on 5-10 email samples. You should send email campaigns and check email open rates, for 2-5 weeks, this is how email marketing works for most of the top email marketers.

Best Email Marketing Practices with Amazon SES & Sendy2019-05-09T20:35:28+05:00

Get High Email Sending Speed with Sendy Email App

Sendy / AWS SES performance tuning

Get High Email Sending Speed with Sendy Email App

Adding more to this list of helpful blog posts, today, we are going to explain How to Get High Email Sending Speed with Sendy Email Application. Here are few important points that you can take note of, when you need high email sending speed with Sendy:

1. Email List Size

This is the top factor which hampers the email sending speed in Sendy. This happens mostly when you use Sendy to send emails to very large email list at one go. For example, if you are sending an email campaign to a list of 40,000 emails, then it will be slower compared to sending an email campaign to around 4,000 email subscribers. So, it is always better to keep sending email campaigns one after the other, to the small email lists each time. This can be achieved by splitting your email list into small lists.

2. Setting Optimal Email Sending Speed

When you get all your Sendy setup done and start using the same, you need to adjust the email sending speed from Sendy settings page.  You can avail this option from top right corner of the Sendy dashboard. The default email sending speed setup in Sendy is 1 email per second.

Take note: It may be possible that you are have email sending speed of more than 25 emails per second in Amazon SES and same will be reflected in Sendy email sending speed option, but, the most optimal setting should be updated to 15 – 20 emails / second inside Sendy settings. On settings page if you add more email sending speed, then, overall outgoing email to Amazon SES will become slow.


You get this option when you use Amazon SES. However, this option will not appear when you use other SMTP providers like, Mandrill.

3. Email Template Size

In Sendy, email sending speed to Amazon SES server is also impacted by the size of email template which you use while sending an email campaign. If your email template size is about 8-15 Kb, then the email sending will be high compared to email template size of about 50-100 Kb.

4. Parallel Email Campaign Sending

Email sending speed also depends on the number of parallel email campaigns being processed in Sendy at a time. If you have more than one email campaign under process, then the email sending speed will also reduce.

It is definitely a good practice to complete single email campaign first, and then go ahead to sending next email campaign to the email list.


You should also note that if you have multiple clients inside your Sendy installation, and if more than one client is sending email campaign, then the email sending speed will be low.

5. High traffic on existing Sendy installation

This issue happens very rarely, but still is one of the reasons for slow email sending speed from Sendy. This happens mainly when you have sent an email campaign in which lot of clicks are happening on the links provided in the email content, and simultaneously you start sending out another campaign.

Since your server on which Sendy has been installed gets busy in processing the clicks on the links, your email sending speed of next campaign automatically gets impacted.

6. Optimization of Server on which Sendy is installed

In order to get better email sending speed, you need to tune and match “memory_limit” of the server, so that you can send emails at higher speed to Amazon SES.

Keeping all these points in mind, it should now be an easy task for you to improve your email sending speed with Sendy application. For any query or help, we are always a click away!

Every user has their needs so it is not possible to offer exact server recommendations, but there are certain things you need to keep in mind.

  1. If you allocate half of your servers total RAM to MySQL, you will have optimal response.
  2. There two steps in campaign process : Preparing Subscribers and Sending. The Preparing Subscribers stage just figures out which subscribers should receive the campaign, and moves them into a separate temporary table in your database.
  3. There are ways to optimize these campaign process. Add more memory to server and even more memory to MySQL.

See if there is any way you can reduce the number of lists in your system. Also delete the lists or subscribers that no longer

Meet Sendy

Sendy is a self hosted email newsletter application that lets you send trackable emails via Amazon Simple Email Service (SES). This makes it possible for you to send authenticated bulk emails at an insanely low price without sacrificing deliverability.

Features you’ll get

Send newsletters 100x cheaper

Sendy sends fast multi-threaded emails via Amazon SES at only $1 per 10,000 emails. Free yourself from paying for expensive email campaigns and forget about limits set by your host while at the same time enjoy high deliverability rate. Best bang for your buck!

Beautiful reports

See results of every campaign and autoresponders in a beautifully formatted report. Visualize opens, clicks, bounces, complaints and countries with charts & data. You can export segments of subscribers from your report for re-targetting.

White labeled client accounts

Managing multiple products or services? With Sendy, you can organize them into groups or as we like to call it, ‘brands’. Optionally give your client access to their own brand and let them send newsletters on their own at a price you set. You can even set monthly sending limits and adjust client privileges.


Automate your marketing by setting up a series of emails in drip campaigns to automatically follow up with your subscribers at time intervals you set. Or send emails annually or one off emails at a specific date. Keep your subscribers engaged and your brand at the top of their mind.

List segmentation

Research shows sending emails to targeted segments can increase email engagement as well as revenue by more than 25%. Sendy enables you to create segments for any list based on any conditions you define. Choose segments and/or lists to include or exclude in your email campaigns for optimized results.

List & subscriber management

Manage and segment lists & subscribers easily with Sendy. Mass import/delete subscribers, custom fields, single/double opt-in, custom subscribe/unsubscribe confirmation page, thank you/good bye emails, subscribe form or API to add users (takes a deep breath), you name it!

Custom fields

Create custom fields to store more than just ‘name’ and ’email’. Not only can you store more information about your subscribers, you can use them for list segmentation or personalization tags in your newsletters for a more personalized experience.

Bounce, complaint & unsubscribe handling

Keep your lists clean effortlessly as bounces, complaints and unsubscribes are automatically handled in real time once your newsletter is sent. There is no need for any manual post campaign cleanups, just sit back and watch your campaign report unfold.

Third party integrations & Zapier

Sendy integrates with many popular apps like WordPress, Magento, Joomla etc thanks to third party developers. Sendy also works with Zapier, an automation service that enables you to integrate Sendy with 1000+ apps in Zapier’s app directory!

Even more features! 🔥

  • Setup custom domains
  • GDPR features only available in Sendy
  • Translation ready
  • Two Factor Authentication
  • Mass add, delete or unsubscribe users
  • Ready-to-use subscription form
  • Fast multi-threaded sending
  • Store templates
  • Google Analytics support
  • Google reCAPTCHA support
  • Import lists without re-confirmation
  • Send emails with attachments
  • Blacklists for emails and/or domains
  • Use any other SMTP services
  • Use personalization tags
  • Include or exclude lists to send
  • Single or double opt-in & opt-out
  • Adjust sending rate

Get High Email Sending Speed with Sendy Email App2019-05-09T20:32:34+05:00

Office 365 vs G-Suite


Office 365 vs G Suite (or, as it used to be known, Google Apps)…which is better? This is a question that many businesses, particularly startups, have a lot of trouble answering.

So, in this post I’m going to try to help you decide which is best for your business, by putting the two product suites head to head in a detailed comparison review.

Read on to see how G Suite and Office 365 fare against each other in the key areas of pricing, features and ease-of use. We’ll explore all the pros and cons of each product in depth and explain why, and when, you might want to use one over the other.

If you find the review useful, I’d be really grateful if you could share it, or leave a comment — it’s always really helpful to get other people’s opinions on the apps we review. And finally remember that we now offer setup and migration services for both Office 365 and G Suite: do contact us if you need help with either.

Right, so what do Office and G Suite actually do?

What do Office 365 and G Suite do?

Office 365 and G Suite are a suite of productivity tools that let you perform common business tasks ‘in the cloud’. Office 365 also provides a comprehensive range of desktop applications — programs that you install on your computer as opposed to using in a web browser.

Both Office 365 and G Suite allow you to create documents, spreadsheets and presentations and collaborate with team members whilst doing so; they also provide video conferencing functionality and cloud storage.

(In case you’re not familiar with what cloud storage is, it basically entails storing your files remotely — for example on Google’s or Microsoft’s servers — instead of on your own computer. This can free up space on your hard drive and make real-time collaboration on documents easier).

Pricing — how do G Suite and Office 365 compare?

G Suite

Choosing a G Suite plan is fairly straightforward, as there are only three plans available:

  • Basic: $5 per user per month
  • Business: $10 per user per month
  • Enterprise: $25 per user per month

On the ‘Basic’ $5 plan, you get

  • Business email addresses (
  • Video and voice calls (via Google Hangouts)
  • Secure instant messaging via Hangouts Chat
  • Shared online calendars
  • Online documents, spreadsheets and presentations
  • 30 GB of online storage for file syncing and sharing
  • Google sites (a tool for building simple websites or intranets)
  • Security and admin controls
  • 24/7 phone, email and chat support.

On the ‘Business’ $10 plan, in addition to the above you get

  • Unlimited file storage (or 1 TB if your organisation has less than 5 users)
  • ‘Low code’ tools (these allow you to develop bespoke apps for your business without resorting to a lot of programming)
  • Advanced search functionality using Google’s new Cloud Search technology (this functionality makes it easier to locate files within G Suite and also provides an experience which makes suggestions regarding what your team need to do next)
  • Email archives / message-retention policies
  • The ability to specify which region your G suite data is stored in (USA,Canada, Europe, etc.)
  • eDiscovery covering emails, chats, docs and files
  • Audit and reporting insights for Drive content and sharing

On the ‘Enterprise’ $25 plan, you get all the features of the ‘Basic’ and ‘Business’ plans plus

  • advanced admin and security controls / reporting
  • data loss prevention for files and email
  • integration with third-party archiving tools
  • S/MIME for Gmail (improved encryption for emails)
  • additional reporting on email usage via analytics tool BigQuery

Unlike the free version of G Suite, none of the above plans involve the display of advertising content while you work.

For many users, the most significant difference between these plans will involve file storage. With the G Suite ‘Basic’ plan, users are restricted to 30GB of file storage; but – as long as there are 5 or more G Suite users in your organisation – there are no limits on the ‘Business’ plan (if you have a ‘Business’ plan but have less than 5 users on it, file storage is restricted to 1TB per user).

It’s important to note that Google Docs, Sheets, Slides and Drawings, — i.e. documents created using Google’s set of apps rather than third party applications — don’t count toward your G Suite file storage limit. Nor do files shared with you by other Google Drive users.

Power users and big organisations are likely to find the e-Discovery features that the ‘Business’ and ‘Enterprise’ plans come with handy: these lets you archive all communications in your organisation according to rules you define. This functionality may be useful if for legal reasons you need to store an extensive communications history, and dig up old emails sent to or from your team.

If you have strong data loss prevention requirements — i.e. you want to use G Suite to try to prevent your users transferring sensitive information outside of your organisation via email or through moving files — then you will need to plump for the ‘Enterprise’ plan.

Microsoft Office 365 pricing

The pricing options for Office 365 are more complicated, because there are home, business, enterprise and education versions available — and within that, a whole load of sub-versions.

There are two ways to look at this plethora of pricing options: on the plus side, there’s a lot of flexibility, but on the down side, it’s rather confusing trawling through all the plans to work out which one is best suited to your requirements.

For the purposes of this review, I’m going to focus on the ‘Business’ and ‘Enterprise’ plans, which are:

  • Business Essentials — $5 per user per month
  • Business — $8.25 per user per month
  • Business Premium — $12.50 per user per month
  • Enterprise E1 — $8 per user per month
  • Enterprise ProPlus — $12 per user per month
  • Enterprise E3 — $20 per user per month
  • Enterprise E5 — $35 per user per month

As touched on above, there are a LOT of different options to get your head around with the above 7 plans, but a few important things to note are as follows:

  • All Office 365 plans require an annual commitment. (By contrast, the G Suite plans can be bought on a per-month basis, which may suit some organisations — those with regular changes in the number of staff — slightly better.)
  • The ‘Business’ plans all limit the maximum number of users to 300; by contrast, you can have an unlimited number of users on the ‘Enterprise’ plans.
  • All plans provide you with with the desktop versions of the Microsoft Office product suite (Word, Excel, Powerpoint etc.) except for the ‘Business Essentials’ and ‘Enterprise E1’ plans, which only provide the online ones. So if a key motivation behind choosing Office 365 is to avail of the desktop apps as well as the cloud features — a big advantage of using Office 365 over G Suite — make sure you avoid those particular plans.
  • Not all of the Office 365 plans provide users with an email account — if you want to use Office 365 as your email service provider, you’ll need to steer clear of the ‘Business’ and the ‘Enterprise Pro Plus’ plans.
  • Similarly, the ‘Business’ and ‘Enterprise ProPlus’ plans don’t feature calendar functionality.
  • Microsoft’s new video collaboration service — ‘Microsoft Stream’ — is only available on the Enterprise plans.

So which is cheaper, Office 365 or G Suite?

So which works out cheaper in the Office 365 vs G Suite fight?

The most directly comparable G Suite and Office 365 plans are arguably

  • the G Suite ‘Basic’ ($5 per user per month) and Office 365 ‘Business Essentials’ ($5 per user per month) plans


  • the G Suite ‘Business’ ($10 per user per month) and Office 365 ‘Enterprise E3’ ($20 per user per month) plans.

In essence there is no saving to be made at the lower end of the pricing bands by plumping for the G Suite ‘Basic’ plan over Microsoft’s ‘‘Business Essentials’ (although you will need to bear in mind that the Microsoft product requires an annual commitment); but at the more ‘enterprise’ level, the Office 365 ‘Enterprise E1’ plan comes in at $10 higher per month than the G Suite ‘Business’ plan (and again, you’ll have to pay upfront for the year for the Microsoft product too).

This doesn’t really tell the full story however, because there are a lot of variables and potential tradeoffs at play here.

Although the above plans are broadly comparable, there are still big differences in important areas such as email storage, file storage and archiving to consider; so coming up with an answer to the ‘which is cheaper, Google Apps vs Office 365’ question is probably best answered by taking a more in-depth look at the features of each product and seeing how well they fulfil your business needs.

Let’s drill down into these features.


We can help you set up or migrate to both G Suite and Office 365. Contact us today to find out more about how we can arrange a professional, risk-free installation of these two leading cloud productivity suites. Or find out more about our services >> Office 365 setup and migration | G Suite setup and migration.

We’re based in Canada but provide these services worldwide.

Office 365 vs G-Suite2019-03-28T01:29:03+05:00

Data Science and Machine Learning


Data scientists are the no. 1 most promising job in America for 2019, according to a report from LinkedIn. Hence, this comes as no surprise: Data scientist topped Glassdoor’s list of Best Jobs in America for the past three years, with professionals in the field reporting high demand, high salaries, and high job satisfaction.

Also, with the increase in demand, employers are looking for more skills in modern day data scientists. Furthermore, a modern-day data scientist needs to be a good player in aspects like maths, programming, communication and problem-solving.

In this blog, we are going to explore if knowledge of mathematics is really necessary to become good data scientists. Also, we will try to explore ways, if any, through which one can become a good data scientist without learning maths.

What all it takes for a modern day Data Scientist

Data scientists continue to be in high demand, with companies in virtually every industry looking to get the most value from their burgeoning information resources. Additionally, this role is important, but the rising stars of the business are those savvy data scientists that have the ability to not only manipulate vast amounts of data with sophisticated statistical and visualization techniques but have a solid acumen from which they can derive forward-looking insights. Also, these insights help predict potential outcomes and mitigate potential threats to the business. Additionally, key skills of modern-day data scientists are as follows:


1. Critical thinking

Data scientists need to be critical thinkers, to be able to apply the objective analysis of facts on a given topic or problem before formulating opinions or rendering judgments. Also, they need to understand the business problem or decision being made and be able to ‘model’ or ‘abstract’ what is critical to solving the problem, versus what is extraneous and can be ignored.

2. Coding

Top-notch data scientists know how to write code and are comfortable handling a variety of programming tasks. Furthermore, to be really successful as a data scientist, the programming skills need to comprise both computational aspects — dealing with large volumes of data, working with real-time data, cloud computing, unstructured data, as well as statistical aspects — [and] working with statistical models like regression, optimization, clustering, decision trees, random forests, etc.

3. Math

Data science is probably not a good career choice for people who don’t like or are not proficient at mathematics. Moreover, the data scientist whiz is one who excels at mathematics and statistics while having an ability to collaborate closely with line-of-business executives to communicate what is actually happening in the “black box” of complex equations in a manner that provides reassurance that the business can trust the outcomes and recommendations

4. Machine learning, deep learning, AI

Industries are moving extremely fast in these areas because of increased computing power, connectivity, and huge volumes of data being collected. A data scientist needs to stay in front of the curve in research, as well as understand what technology to apply when. Also, too many times a data scientist will apply something ‘sexy’ and new when the actual problem they are solving is much less complex.

Data scientists need to have a deep understanding of the problem to be solved, and the data itself will speak to what’s needed. Furthermore, being aware of the computational cost to the ecosystem, interpretability, latency, bandwidth, and other system boundary conditions — as well as the maturity of the customer — itself, helps the data scientist understand what technology to apply. That’s true as long as they understand the technology.

5. Communication

The importance of communication skills bears repeating. Virtually nothing in technology today is performed in a vacuum; there’s always some integration between systems, applications, data and people. Data science is no different, and being able to communicate with multiple stakeholders using data is a key attribute.

6. Data architecture

It is imperative that the data scientist understands what is happening to the data from inception to model to a business decision. Additionally, to not understand the architecture can have a serious impact on sample size inferences and assumptions, often leading to incorrect results and decisions.

As we have seen, mathematics is a crucial skill of a data scientist among many others. Agreed it is not everything that a data scientist may require. Hence, we will explore more on the usage of mathematics in data science. Also, this will help us to answer our question better!

Application of maths in data science and AI

  • Modelling a process (physical or informational) by probing the underlying dynamics
  • Constructing hypotheses
  • Rigorously estimating the quality of the data source
  • Quantifying the uncertainty around the data and predictions
  • Identifying the hidden pattern from the stream of information
  • Understanding the limitation of a model
  • Understanding mathematical proof and the abstract logic behind it

What all maths you must know?

1. Linear algebra

You need to be familiar with linear algebra if you want to work in data science and machine learning because it helps deal with matrices — mathematical objects consisting of multiple numbers organised in a grid. Also, the data collected by a data scientist naturally comes in the form of a matrix — the data matrix — of n observations by p features, thus an n-by-p grid.

2. Probability theory

Probability theory — even the basic, not yet measure-theoretic probability theory — helps the data scientist deal with uncertainty and express it in models. Frequentists, Bayesian, and indeed quantum physicists argue to this day what probability really is (in many languages, such as Russian and Ukrainian, the word for probability comes from “having faith”), whereas pragmatists, such as Andrey Kolmogorov, shirk the question, postulate some axioms that describe how probability behaves (rather than what it is) and say: stop asking questions, just use the axioms.

3. Statistics

After probability theory, there comes statistics. As Ian Hacking remarked, “The quiet statisticians have changed our world — not by discovering new facts or technical developments, but by changing the ways that we reason, experiment, and form opinions”. Read Darrell Huff’s How to Lie with Statistics — if only to learn how to be truthful and how to recognise the truth — just as Moses learned “all the wisdom of the Egyptians” — in order to reject it.

4. Estimation theory

A particular branch of statistics — estimation theory — had been largely neglected in mathematical finance, at a high cost. It tells us how well we know a particular number: what is the error present in our estimates? How much of it is due to bias and how much due to variance?

Also, going beyond classical statistics, in machine learning, we want to minimise the error on new data — out-of-sample — rather than on the data that we have already seen — in-sample. As someone remarked, probably Niels Bohr or Piet Hein, “prediction is very difficult, especially about the future.”

5. Optimization theory

You can spend a lifetime studying this. Much of machine learning is about optimization — we want to find the weights that give the best (in optimisation speak, optimal) performance of a neural network on new data, so naturally, we have to optimise — perhaps with some form of regularisation. (And before you have calibrated that long short-term memory (LSTM) network — have you tried the basic linear regression on your data?)

What you miss on skipping Maths?

  1. No in-depth knowledge of working of ML models
  2. Inability to prove the correctness of your hypothesis
  3. Prone to introducing bias and errors in your analysis
  4. Inefficiency in math-heavy business problems

Some resources to learn maths online

We will divide the resources to 3 sections (Linear Algebra, Calculus, Statistics and probability), the list of resources will be in no particular order, resources are diversified between video tutorials, books, blogs, and online courses.

Linear Algebra

Used in machine learning (& deep learning) to understand how algorithms work under the hood. Basically, it’s all about vector/matrix/tensor operations, no black magic is involved!

  1. Khan Academy Linear Algebra series (beginner friendly).
  2. Coding the Matrix course (and book).
  3. 3Blue1Brown Linear Algebra series.
  4. Linear Algebra for coders course, highly related to modern ML workflow.
  5. The first course in Coursera Mathematics for Machine Learning specialisation.
  6. “Introduction to Applied Linear Algebra — Vectors, Matrices, and Least Squares” book.
  7. MIT Linear Algebra course, highly comprehensive.
  8. Stanford CS229 Linear Algebra review.


Used in machine learning (&deep learning) to formulate the functions used to train algorithms to reach their objective, known by loss/cost/objective functions.

  1. Khan Academy Calculus series (beginner friendly).
  2. 3Blue1Brown Calculus series.
  3. Second course in Coursera Mathematics for Machine Learning specialisation.
  4. The Matrix Calculus You Need For Deep Learning paper.
  5. MIT Single Variable Calculus.
  6. MIT Multivariable Calculus.
  7. Stanford CS224n Differential Calculus review.

Statistics and Probability

Used in data science to analyze and visualize data, in order to discover (infer) helpful insights.

  1. Khan Academy Statistics and probability series (beginner friendly).
  2. A visual introduction to probability and statistics, Seeing Theory.
  3. Intro to Descriptive Statistics from Udacity.
  4. Intro to Inferential Statistics from Udacity.
  5. Statistics with R Specialization from Coursera.
  6. Stanford CS229 Probability Theory review.


Linear algebra, calculus II, stats and probability are sufficient for understanding and handle 90% of machine learning models. Also, some areas and methods require special insights, for example, Bayesian and variational method require a calculus of variation, MCMC and Gibbs sample require advanced concepts of probability theory, information geometry and submanifolds learning to require differential geometry, kernel theory requires calculus III. Lately, it seems that even abstract algebra is playing a role.

Additionally, not knowing maths may help you in reaching low-level positions in data science or solving some dummy projects. But in the long run, it will be maths only which will help you in scaling your career up!

Follow this link, if you are looking to learn more about data science online!

You can follow this link for our Big Data course!

Additionally, if you are having an interest in learning Data Science, click here to start

Furthermore, if you want to read more about data science, you can read our blogs here

Also, the following are some blogs you may like to read

Data Science and Machine Learning2019-02-26T19:54:16+05:00

Progressive Web Apps

Progressive Web Apps are user experiences that have the reach of the web, and are:

  • Reliable – Load instantly and never show the downasaur, even in uncertain network conditions.
  • Fast – Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • Engaging – Feel like a natural app on the device, with an immersive user experience.

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.


When launched from the user’s home screen, service workers enable a Progressive Web App to load instantly, regardless of the network state.

A service worker, written in JavaScript, is like a client-side proxy and puts you in control of the cache and how to respond to resource requests. By pre-caching key resources you can eliminate the dependence on the network, ensuring an instant and reliable experience for your users.


53% of users will abandon a site if it takes longer than 3 seconds to load! And once loaded, users expect them to be fast—no janky scrolling or slow-to-respond interfaces.


Progressive Web Apps are installable and live on the user’s home screen, without the need for an app store. They offer an immersive full screen experience with help from a web app manifest file and can even re-engage users with web push notifications.

The Web App Manifest allows you to control how your app appears and how it’s launched. You can specify home screen icons, the page to load when the app is launched, screen orientation, and even whether or not to show the browser chrome.

Why build a Progressive Web App?

Building a high-quality Progressive Web App has incredible benefits, making it easy to delight your users, grow engagement and increase conversions.

  • Increased engagement
    Web push notifications helped eXtra Electronics increase engagement by 4X. And those users spend twice as much time on the site.
  • Improved conversions
    The ability to deliver an amazing user experience helped AliExpress improve conversions for new users across all browsers by 104% and on iOS by 82%.


Lighthouse, an open-source, automated tool for improving the quality of your Progressive Web Apps, eliminates much of the manual testing that was previously required. You can even use Lighthouse in continuous integration systems to catch regressions.

Dive Deeper

  • Progressive Web Apps on Desktop 
    Progressive Web Apps now work on the desktop, including Chrome OS and Windows, with support for Mac and Linux coming soon.
  • App Install Banners 
    Chrome uses a set of criteria and visit frequency heuristics to determine when to show the banner.
  • Lighthouse 
    Lighthouse is an open-source, automated tool for improving the quality of your web apps.
  • Get Support 
    Get your questions answered on Stack Overflow.

Start developing today

Write your first Progressive Web App with our step-by-step code lab.


Progressive Web Apps2019-03-28T01:29:51+05:00

VMware – Monitoring and Troubleshooting Performance

You monitor CPU, memory, disk, network, and storage metrics by using the performance charts located on the Performance tab of the vSphere Client. Use the following guidelines to identify and resolve potential performance problems.

Use the vSphere Client CPU performance charts to monitor CPU usage for hosts, clusters, resource pools, virtual machines, and vApps. Use the guidelines below to identify and correct problems with CPU performance.

A short spike in CPU usage or CPU ready indicates that you are making the best use of the host resources. However, if both values are constantly high, the hosts are probably overcommitted. Generally, if the CPU usage value for a virtual machine is above 90% and the CPU ready value is above 20%, performance is impacted.

CPU Performance Enhancement Advice

# Resolution
1 Verify that VMware Tools is installed on every virtual machine on the host.
2 Compare the CPU usage value of a virtual machine with the CPU usage of other virtual machines on the host or in the resource pool. The stacked bar chart on the host’s Virtual Machine view shows the CPU usage for all virtual machines on the host.
3 Determine whether the high ready time for the virtual machine resulted from its CPU usage time reaching the CPU limit setting. If so, increase the CPU limit on the virtual machine.
4 Increase the CPU shares to give the virtual machine more opportunities to run. The total ready time on the host might remain at the same level if the host system is constrained by CPU. If the host ready time doesn’t decrease, set the CPU reservations for high-priority virtual machines to guarantee that they receive the required CPU cycles.
5 Increase the amount of memory allocated to the virtual machine. This decreases disk and or network activity for applications that cache. This might lower disk I/O and reduce the need for the ESX/ESXi host to virtualize the hardware. Virtual machines with smaller resource allocations generally accumulate more CPU ready time.
6 Reduce the number of virtual CPUs on a virtual machine to only the number required to execute the workload. For example, a single-threaded application on a four-way virtual machine only benefits from a single vCPU. But the hypervisor’s maintenance of the three idle vCPUs takes CPU cycles that could be used for other work.
7 If the host is not already in a DRS cluster, add it to one. If the host is in a DRS cluster, increase the number of hosts and migrate one or more virtual machines onto the new host.
8 Upgrade the physical CPUs or cores on the host if necessary.
9 Use the newest version of ESX/ESXi, and enable CPU-saving features such as TCP Segmentation Offload, large memory pages, and jumbo frames.

Use the vSphere Client disk performance charts to monitor disk I/O usage for clusters, hosts, and virtual machines. Use the guidelines below to identify and correct problems with disk I/O performance.

The virtual machine disk usage (%) and I/O data counters provide information about average disk usage on a virtual machine. Use these counters to monitor trends in disk usage.

The best ways to determine if your vSphere environment is experiencing disk problems is to monitor the disk latency data counters. You use the Advanced performance charts to view these statistics.

  • The kernelLatency data counter measures the average amount of time, in milliseconds, that the VMkernel spends processing each SCSI command. For best performance, the value should be 0-1 milliseconds. If the value is greater than 4ms, the virtual machines on the ESX/ESXi host are trying to send more throughput to the storage system than the configuration supports. Check the CPU usage, and increase the queue depth or storage.
  • The deviceLatency data counter measures the average amount of time, in milliseconds, to complete a SCSI command from the physical device. Depending on your hardware, a number greater than 15ms indicates there are probably problems with the storage array. Move the active VMDK to a volume with more spindles or add disks to the LUN.
  • The queueLatency data counter measures the average amount of time taken per SCSI command in the VMkernel queue. This value must always be zero. If not, the workload is too high and the array cannot process the data fast enough.

Disk I/O Performance Enhancement Advice

# Resolution
1 Increase the virtual machine memory. This should allow for more operating system caching, which can reduce I/O activity. Note that this may require you to also increase the host memory. Increasing memory might reduce the need to store data because databases can utilize system memory to cache data and avoid disk access.

To verify that virtual machines have adequate memory, check swap statistics in the guest operating system. Increase the guest memory, but not to an extent that leads to excessive host memory swapping. Install VMware Tools so that memory ballooning can occur.

2 Defragment the file systems on all guests.
3 Disable antivirus on-demand scans on the VMDK and VMEM files.
4 Use the vendor’s array tools to determine the array performance statistics. When too many servers simultaneously access common elements on an array, the disks might have trouble keeping up. Consider array-side improvements to increase throughput.
5 Use Storage VMotion to migrate I/O-intensive virtual machines across multiple ESX/ESXi hosts.
6 Balance the disk load across all physical resources available. Spread heavily used storage across LUNs that are accessed by different adapters. Use separate queues for each adapter to improve disk efficiency.
7 Configure the HBAs and RAID controllers for optimal use. Verify that the queue depths and cache settings on the RAID controllers are adequate. If not, increase the number of outstanding disk requests for the virtual machine by adjusting the Disk.SchedNumReqOutstanding parameter. For more information, see the Fibre Channel SAN Configuration Guide.
8 For resource-intensive virtual machines, separate the virtual machine’s physical disk drive from the drive with the system page file. This alleviates disk spindle contention during periods of high use.
9 On systems with sizable RAM, disable memory trimming by adding the line MemTrimRate=0 to the virtual machine’s .VMX file.
10 If the combined disk I/O is higher than a single HBA capacity, use multipathing or multiple links.
11 For ESXi hosts, create virtual disks as preallocated. When you create a virtual disk for a guest operating system, select Allocate all disk space now. The performance degradation associated with reassigning additional disk space does not occur, and the disk is less likely to become fragmented.
12 Use the most current ESX/ESXi host hardware.

Use the vSphere Client memory performance charts to monitor memory usage of clusters, hosts, virtual machines, and vApps. Use the guidelines below to identify and correct problems with memory performance.

To ensure best performance, the host memory must be large enough to accommodate the active memory of the virtual machines. Note that the active memory can be smaller than the virtual machine memory size. This allows you to over-provision memory, but still ensures that the virtual machine active memory is smaller than the host memory.

A virtual machine’s memory size must be slightly larger than the average guest memory usage. This enables the host to accommodate workload spikes without swapping memory among guests. Increasing the virtual machine memory size results in more overhead memory usage.

If a virtual machine has high ballooning or swapping, check the amount of free physical memory on the host. A free memory value of 6% or less indicates that the host cannot meet the memory requirements. This leads to memory reclamation which may degrade performance. If the active memory size is the same as the granted memory size, demand for memory is greater than the memory resources available. If the active memory is consistently low, the memory size might be too large.

If the host has enough free memory, check the resource shares, reservation, and limit settings of the virtual machines and resource pools on the host. Verify that the host settings are adequate and not lower than those set for the virtual machines.

If the memory usage value is high, and the host has high ballooning or swapping, check the amount of free physical memory on the host. A free memory value of 6% or less indicates that the host cannot handle the demand for memory. This leads to memory reclamation which may degrade performance.

If memory usage is high or you notice degredation in performance, consider taking the actions listed below.

Memory Performance Enhancement Advice

# Resolution
1 Verify that VMware Tools is installed on each virtual machine. The balloon driver is installed with VMware Tools and is critical to performance.
2 Verify that the balloon driver is enabled. The VMkernel regularly reclaims unused virtual machine memory by ballooning and swapping. Generally, this does not impact virtual machine performance.
3 Reduce the memory space on the virtual machine, and correct the cache size if it is too large. This frees up memory for other virtual machines.
4 If the memory reservation of the virtual machine is set to a value much higher than its active memory, decrease the reservation setting so that the VMkernel can reclaim the idle memory for other virtual machines on the host.
5 Migrate one or more virtual machines to a host in a DRS cluster.

Add physical memory to the host.

Use the network performance charts to monitor network usage and bandwidth for clusters, hosts, and virtual machines. Use the guidelines below to identify and correct problems with networking performance.

Network performance is dependent on application workload and network configuration. Dropped network packets indicate a bottleneck in the network. To determine whether packets are being dropped, use esxtopor the advanced performance charts to examine the droppedTx and droppedRx network counter values.

If packets are being dropped, adjust the virtual machine shares. If packets are not being dropped, check the size of the network packets and the data receive and transfer rates. In general, the larger the network packets, the faster the network speed. When the packet size is large, fewer packets are transferred, which reduces the amount of CPU required to process the data. When network packets are small, more packets are transferred but the network speed is slower because more CPU is required to process the data.


In some instances, large packets can result in high network latency. To check network latency, use the VMware AppSpeed performance monitoring application or a third-party application.

If packets are not being dropped and the data receive rate is slow, the host is probably lacking the CPU resources required to handle the load. Check the number of virtual machines assigned to each physical NIC. If necessary, perform load balancing by moving virtual machines to different vSwitches or by adding more NICs to the host. You can also move virtual machines to another host or increase the host CPU or virtual machine CPU.

Networking Performance Enhancement Advice

# Resolution
1 Verify that VMware Tools is installed on each virtual machine.
2 If possible, use vmxnet3 NIC drivers, which are available with VMware Tools. They are optimized for high performance.
3 If virtual machines running on the same ESX/ESXi host communicate with each other, connect them to the same vSwitch to avoid the cost of transferring packets over the physical network.
4 Assign each physical NIC to a port group and a vSwitch.
5 Use separate physical NICs to handle the different traffic streams, such as network packets generated by virtual machines, iSCSI protocols, VMotion tasks, and service console activities.
6 Ensure that the physical NIC capacity is large enough to handle the network traffic on that vSwitch. If the capacity is not enough, consider using a high-bandwidth physical NIC (10Gbps) or moving some virtual machines to a vSwitch with a lighter load or to a new vSwitch.
7 If packets are being dropped at the vSwitch port, increase the virtual network driver ring buffers where applicable.
8 Verify that the reported speed and duplex settings for the physical NIC match the hardware expectations and that the hardware is configured to run at its maximum capability. For example, verify that NICs with 1Gbps are not reset to 100Mbps because they are connected to an older switch.
9 Verify that all NICs are running in full duplex mode. Hardware connectivity issues might result in a NIC resetting itself to a lower speed or half duplex mode.
10 Use vNICs that are TSO-capable, and verify that TSO-Jumbo Frames are enabled where possible.

Use the vSphere Client datastore performance charts to monitor datastore usage. Use the guidelines below to identify and correct problems with datastore performance.


The datastore charts are available only in the overview performance charts.

The datastore is at full capacity when the used space is equal to the capacity. Allocated space can be larger than datastore capacity, for example, when you have snapshots and thin-provisioned disks. You can provision more space to the datastore if possible, or you can add disks to the datastore or use shared datastores.

If snapshot files are consuming a lot of datastore space, consider consolidating them to the virtual disk when they are no longer needed. Consolidating the snapshots deletes the redo log files and removes the snapshots from the vSphere Client user interface. For information on consolidating the datacenter, see the vSphere Client Help.

VMware – Monitoring and Troubleshooting Performance2019-02-26T01:50:05+05:00

Bitnami Apache WordPress Let’s Encrypt SSL Certificate

Generate And Install A Let’s Encrypt SSL Certificate For A Bitnami Application


Let’s Encrypt is a free Certificate Authority (CA) that issues SSL certificates. You can use these SSL certificates to secure traffic to and from your Bitnami application host.

This guide walks you through the process of generating a Let’s Encrypt SSL certificate for your domain and installing and configuring it to work with your Bitnami application stack.

Assumptions And Prerequisites

This guide assumes that:

  • You have deployed a Bitnami application and the application is available at a public IP address.
  • You have the necessary credentials to log in to the Bitnami application instance.
  • You own a domain name.
  • You have configured the domain name’s DNS record to point to the public IP address of your Bitnami application instance.

Step 1: Install The Lego Client

The Lego client simplifies the process of Let’s Encrypt certificate generate. To use it, follow these steps:

  • Log in to the server console as the bitnami user.
  • Run the following commands to install the Lego client. Note that you will need to replace the X.Y.Z placeholder with the actual version number of the downloaded archive:
    cd /tmp
    curl -Ls | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i -
    tar xf lego_vX.Y.Z_linux_amd64.tar.xz
    sudo mv lego /usr/local/bin/lego

These steps will download, extract and copy the Lego client to a directory in your path. .

Step 2: Generate A Let’s Encrypt Certificate For Your Domain

NOTE: Before proceeding with this step, ensure that your domain name points to the public IP address of the Bitnami application host.

The next step is to generate a Let’s Encrypt certificate for your domain.

  • Turn off all Bitnami services:
    sudo /opt/bitnami/ stop
  • Request a new certificate for your domain as below. Remember to replace the DOMAIN placeholder with your actual domain name, and the EMAIL-ADDRESS placeholder with your email address.
    sudo lego --tls --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="www.DOMAIN" --path="/etc/lego" run

    NOTE: You can use more than one domain (for example, DOMAIN and www.DOMAIN) by specifying the –domains option as many times as the number of domains you want to specify. When supplying multiple domains, Lego creates a SAN (Subject Alternate Names) certificate which results in only one certificate valid for all domains you entered. The first domain in your list will be added as the “CommonName” of the certificate and the rest, will be added as “DNSNames” to the SAN extension within the certificate.

  • Agree to the terms of service.

A set of certificates will now be generated in the /etc/lego/certificates directory. This set includes the server certificate file DOMAIN.crt and the server certificate key file DOMAIN.key.

An output message will provide some information, including the expiry date of the certificate. Note this expiry date carefully as you will need to renew your certificate before that date in order for it to remain valid.

An example certificate is shown below:

lets-encrypt-1.png (932×722)

Step 3: Configure The Web Server To Use The Let’s Encrypt Certificate

Next, tell the Web server about the new certificate, as follows:

  • Link the new SSL certificate and certificate key file to the correct locations, depending on which Web server you’re using. Update the file permissions to make them readable by the root user only. Remember to replace the DOMAIN placeholder with your actual domain name.For Apache:
    sudo mv /opt/bitnami/apache2/conf/server.crt /opt/bitnami/apache2/conf/server.crt.old
    sudo mv /opt/bitnami/apache2/conf/server.key /opt/bitnami/apache2/conf/server.key.old
    sudo mv /opt/bitnami/apache2/conf/server.csr /opt/bitnami/apache2/conf/server.csr.old
    sudo ln -s /etc/lego/certificates/DOMAIN.key /opt/bitnami/apache2/conf/server.key
    sudo ln -s /etc/lego/certificates/DOMAIN.crt /opt/bitnami/apache2/conf/server.crt
    sudo chown root:root /opt/bitnami/apache2/conf/server*
    sudo chmod 600 /opt/bitnami/apache2/conf/server*

    For nginx:

    sudo mv /opt/bitnami/nginx/conf/server.crt /opt/bitnami/nginx/conf/server.crt.old
    sudo mv /opt/bitnami/nginx/conf/server.key /opt/bitnami/nginx/conf/server.key.old
    sudo mv /opt/bitnami/nginx/conf/server.csr /opt/bitnami/nginx/conf/server.csr.old
    sudo ln -s /etc/lego/certificates/DOMAIN.key /opt/bitnami/nginx/conf/server.key
    sudo ln -s /etc/lego/certificates/DOMAIN.crt /opt/bitnami/nginx/conf/server.crt
    sudo chown root:root /opt/bitnami/nginx/conf/server*
    sudo chmod 600 /opt/bitnami/nginx/conf/server*
    TIP: To find out if your Bitnami stack uses Apache or nginx, check the output of the command sudo /opt/bitnami/ status.
  • Restart all Bitnami services:
    sudo /opt/bitnami/ start

Step 4: Test The Configuration

After reconfirming that your domain name points to the public IP address of the Bitnami application instance, you can test it by browsing to https://DOMAIN (replace the DOMAIN placeholder with the correct domain name).

This should display the secure welcome page of the Bitnami application. Clicking the padlock icon in the browser address bar should display the details of the domain and SSL certificate.

lets-encrypt-2.png (734×375)

Step 5: Renew The Let’s Encrypt Certificate

Let’s Encrypt certificates are only valid for 90 days. To renew the certificate before it expires, run the following commands from the server console as the bitnami user. Remember to replace the DOMAIN placeholder with your actual domain name, and the EMAIL-ADDRESS placeholder with your email address.

sudo /opt/bitnami/ stop
sudo lego --tls --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/etc/lego" renew
sudo /opt/bitnami/ start

To automatically renew your certificates before they expire, write a script to perform the above tasks and schedule a cron job to run the script periodically. To do this:

    • Create a script at /etc/lego/ with the following content. Remember to replace the DOMAIN placeholder with your actual domain name, and the EMAIL-ADDRESS placeholder with your email address.
      sudo /opt/bitnami/ stop apache
      sudo /usr/local/bin/lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/etc/lego" renew
      sudo /opt/bitnami/ start apache
    • Make the script executable:
      chmod +x /etc/lego/
    • Execute the following command to open the crontab editor:
      sudo crontab -e
    • Add the following lines to the crontab file and save it:
      0 0 1 * * /etc/lego/ 2> /dev/null

      More information at

Alternative Approach

Bitnami includes a small tool that takes care of generating a valid certificate using Let’s Encrypt and configuring the web server to use it. That tool uses Lego to run the Let’s Encrypt certificate generation commands. You can find the script inside the /opt/bitnami/letsencrypt/ directory.

Execute the following command to auto-configure a Let’s Encrypt certificate in your stack for a domain, both with and without the www prefix. Replace the YOURMAIL and YOURDOMAIN placeholders with your current email address and with the domain name.

sudo /opt/bitnami/letsencrypt/scripts/ -m YOURMAIL -d YOURDOMAIN -d www.YOURDOMAIN

NOTE: You can use more than one domain by specifying the -d option as many times as domains you want to specify. When supplying multiple domains, Lego creates a SAN (Subject Alternate Names) certificate which results in only one certificate valid for all domains you entered. The first domain in your list will be added as the “CommonName” of the certificate and the rest, will be added as “DNSNames” to the SAN extension within the certificate.

To add one or more domains to an existing certificate, delete the existing certificates, restore the Bitnami configuration and execute the command again to generate a new certificate, remembering to include the new domain(s) with additional -d options in the command line. The following commands illustrate the process. Replace the YOURMAIL, YOURDOMAIN and YOUROTHERDOMAIN placeholders with your current email address, the current domain name and the additional domain name to be added.

Bitnami Apache WordPress Let’s Encrypt SSL Certificate2019-04-05T19:46:44+05:00

Google PageSpeed Insight

How to Score 100/100 in Google PageSpeed Insights with WordPress

Google PageSpeed Insights is a web performance tool created by Google to help you easily identify ways to make your site faster and more mobile-friendly, by following recommendations on best web practices. A very important thing to remember though is that you shouldn’t always obsess over scoring 100/100. This might not even be possible in all scenarios, depending upon how your WordPress site is setup. With a lot of multipurpose themes and sites with dozens of external scripts, you simply will have an almost impossible time trying to achieve a perfect score. Which is perfectly OK.

We recommend looking at the speed of your site, more than the scores. Scores with tools like Pingdom, GTMetrix, and Google PageSpeed Insights can sometimes lead you astray. Especially since some of them don’t even support HTTP/2 yet. What really matters is ensuring your site loads fast and that the perceived performance is also up to par. Perceived performance is how fast your website feels like it loads to users.

Does Google use PageSpeed Insights when it comes to SEO and the page speed ranking factor or pure response speed? This was an interesting question brought up by an SEO over at FDP Group Leeds and discussed on Search Engine Roundtable. Gary Illyes, Webmaster Trends Analyst for Google, responded with saying “I’ll go with both.”

This is partially due to the fact that in most cases when you have a slow website, you are most likely going to have a lot of warnings in Google PageSpeed Insights. A lot of the recommendations go hand in hand with how they relate to your pure response times. They don’t always correlate 100%, but what Gary is most likely saying is that if you have a slow website, yes, it probably will affect your rankings.

Scoring 100/100 on a Shared Hosting Site

We thought it would be fun to explore the new Twenty Seventeen theme in WordPress 4.7. This is the first default WordPress theme that is aimed at businesses instead a typical blog, which is exciting! So today we are going to show you how to score that perfect 100/100 on both Desktop and Mobile. We have installed common tools and services that many WordPress sites use, such as Google Analytics, Akismet, Yoast SEO, etc. We ran tests on a low-budget shared host.

While this is a small site, it is a good foundation to at least understand a little bit about how Google PageSpeed Insights works.

100 score google pagespeed insights

100 score on Google PageSpeed Insights

100/100 in Google PageSpeed Insights with Shared Host

Our first test site, we have WordPress 4.7 with the Twenty Seventeen Theme running on a popular low-budget shared host (Apache). SSL is configured and the following plugins are installed.

  • Yoast SEO
  • Akismet

We also have Google Analytics running within the <body> of our header.php file. The only modification we have made is we added a featured image to the default dummy “Hello world!” blog post. We run our test site through Google PageSpeed Insights and out of the box, we get a 69/100 desktop score and a 58/100 mobile score. So we definitely have some improvements that should be made here. Let’s dig through each one of these to see how we can fix them.

shared hosting google pagespeed insights

Shared hosting score on Google PageSpeed Insights

Enable Compression

We will start with desktop first as many of the fixes will also apply for mobile. The very first Google PageSpeed Insights recommendation that we need to fix is the Enable Compression warning.

google pagespeed insights enable compression

Enable compression warning

According to Google, to fix this we need to enable Gzip compression. Unfortunately, the shared host doesn’t have this automatically enabled already on their servers, so we have to do it manually.

All modern browsers support and automatically negotiate Gzip compression for all HTTP requests. Enabling Gzip compression can reduce the size of the transferred response by up to 90%, which can significantly reduce the amount of time to download the resource, reduce data usage for the client, and improve the time to first render of your pages.

There are a couple ways you can go about doing this. The first and one of the easiest is by using a caching plugin that supports enabling Gzip. WP Rocket for example adds Gzip compression rules in your .htaccess file automatically using the mod_deflate module. W3 Total Cache also has a way to enable this for you under it’s performance section.

The second way to enable Gzip compression is by editing your .htaccess file.  Most shared hosts use Apache, in which you can simply add the code below to your .htaccess file. You can find your .htaccess file at the root of your WordPress site via FTP.

<IfModule mod_deflate.c>
  # Compress HTML, CSS, JavaScript, Text, XML and fonts
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml

  # Remove browser bugs (only needed for really old browsers)
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  Header append Vary User-Agent

Ensure that you add it below the current contents of your .htaccess file. Example below:

add gzip code

Add GZIP compression code

If you happen to be running on NGINX, simply add this to your nginx.conf file.

36 gzip on;
37 gzip_disable "MSIE [1-6]\.(?!.*SV1)";
38 gzip_vary on;
39 gzip_types text/plain text/css text/javascript application/javascript application/x-javascript;

A tool like  Check Gzip Compression can actually show you how my bytes were saved by enabling Gzip compression. Here is an example below of what we saved on our test site.

gzip compression savings

GZIP compression savings

If we run our site through Google PageSpeed Insights again we can see that the Gzip compression warning is now gone and it has raised our desktop score from 69/100 to 80/100 and our mobile score from 58/100 to 67/100.

google pagespeed after gzip compression

PageSpeed Insights after GZIP compression

Optimize Images

The next Google PageSpeed Insights recommendation that we need to fix is the Optimize images warning. Our default “Hello world!” blog post has a featured image which is throwing up this error.

pagespeed insights optimize images

Optimize images warning

This is a very important and useful warning. According to HTTP Archive, as of November 2016, images made up for on average 65% of a webpages total weight. Optimizing your images can be one of the easiest ways to see performance improvements with your WordPress website.

There are a couple ways you can fix this. The first is to use an image optimization plugin. A plugin can actually go through and bulk optimize your entire WordPress media library and also automatically optimize them when you upload them. We actually have an entire guide on how to optimize your WordPress images. Below are a few popular image optimization plugins:

Those plugins will fix the issue, or you can also compress them before you upload them in a tool like Adobe Photoshop, Gimp, or Affinity Photo. Below is the featured image that is throwing up that warning. We can compress it before-hand by both scaling it down and lowering the quality. It is best to keep your images as small as possible. This image was originally 2.32 MB, after down-scaling and compression, it is now 99.38 kB. Remember, it is best to upload images at scale and not rely on CSS to resize them. This slows down your site.

compress image with affinity photo

Compress images with Affinity Photo

If we run our site through Google PageSpeed Insights again we can see that the Optimize images warning is now gone and it has raised our desktop score from 80/100 to 88/100 and our mobile score from 67/100 to 73/100. We are making progress!

google pagespeed insights after image compression

PageSpeed Insights after image compression

Google PageSpeed Insight2019-03-29T23:32:33+05:00

What is a Document Database?

A document database is designed to store semi-structured data as documents, typically in JSON or XML format. Unlike traditional relational databases, the schema for each non-relational (NoSQL) document can vary, giving Developers, Database Administrators, and IT Professionals more flexibility in organizing and storing application data and reducing storage required for optional values.

JSON document support makes it easier for Developers to serialize and load objects containing relevant properties and data. NoSQL databasesare designed to scale “out” using distributed clusters of low-cost hardware to increase throughput without increasing latency.

Document Databases on AWS

Amazon Web Services (AWS) provides a number of non-relational (NoSQL) document database options. You can operate your own non-relational document data store in the cloud on Amazon EC2 and Amazon EBS, work with AWS solution providers, or take advantage of fully managed non-relational services.

Amazon DynamoDB is a fully managed NoSQL document database service that provides extremely fast and predictable performance with seamless scalability. Running your own NoSQL cloud databases on Amazon EC2 and Amazon EBS gives you full control over your database without the burden of provisioning and installing hardware.

In addition, AWS has partnered with MongoDB and Couchbase, both of whom provide support and training for customers running their products on Amazon EC2 and Amazon EBS.

Amazon DynamoDB

Amazon DynamoDB is a fully managed document database service running in the AWS cloud that provides extremely fast and predictable performance with seamless scalability. DynamoDB is a fast and flexible NoSQL database service for applications that need consistent, single-digit millisecond latency at any scale. It is a fully managed database and supports both document and key-value data models. Its flexible data model and reliable performance make it a great fit for mobile, web, gaming, ad-tech, the Internet of things (IoT), and many other applications. Get started with DynamoDB.

See these recent whitepapers and blog posts to learn more about DynamoDB:

Introduction to Amazon DynamoDB
Redfin uses Amazon DynamoDB to accelerate lookups of similar listings from 2 secs to 12 milliseconds
AWS re:Invent 2016: Deep Dive on Amazon DynamoDB (DAT304)

Document Databases on Amazon EC2 and EBS

Developers may install document databases of their choice on Amazon EC2 and Amazon EBS. An Amazon EC2 instance can be used to run a document database which means developers avoid the friction of infrastructure provisioning while gaining access to a variety of standard document database engines.


Cassandra is an open source distributed document database designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure. Consider EBS when running Cassandra workloads (learn how CrowdStrike ran dense, cheaper Cassandra clusters with EBS).

For more about working with Cassandra and running Cassandra on AWS, read the Apache Cassandra on AWS whitepaper and visit the AWS Marketplace »

Best Practices for Running Apache Cassandra on AWS

Couchbase develops and supports Couchbase Server, a high-performance distributed key-value store. Couchbase delivers support, services, and training for commercial-grade deployments of Couchbase Server on AWS. Learn more about working with Couchbase and running Couchbase Server on AWS »


MarkLogic Corporation develops MarkLogic Server (MarkLogic), an Enterprise NoSQL database platform that is fully scalable and provides ACID (Atomicity, Consistency, Isolation, and Durability) transactions for large datasets. For an overview of best practices and scaling, see the whitepaper MarkLogic on AWS »


MongoDB, Inc. develops and supports MongoDB, an open source, high performance document-oriented database. MongoDB Inc. delivers technical support, professional services, and training for commercial-grade deployments of MongoDB.

Use the AWS MongoDB Quick Start (also available in PDF format) to deploy a multi-node MongoDB cluster in the AWS cloud, following AWS best practices, in approximately 15 minutes.

For an overview of MongoDB and its implementation on AWS, see the whitepaper MongoDB on AWS: Guidelines and Best Practices. Also, be sure to review AWS security recommendations for MongoDB as well as the security section of the MongoDB documentation.

For more about working with MongoDB Inc. and running MongoDB on AWS, see the information in the AWS Partner Directory and read how Organizations Realize Transformative Benefits with MongoDB on AWS.

What is a Document Database?2019-03-29T23:31:33+05:00

What is NoSQL?

NoSQL is a term used to describe high-performance, non-relational databases. NoSQL databases utilize a variety of data models, including document, graph, key-value, and columnar. NoSQL databases are widely recognized for ease of development, scalable performance, high availability, and resilience. Below are several resources to help you get started using NoSQL databases.

Introduction to Amazon DynamoDB

SQL vs NoSQL Database Comparison

  Relational database NoSQL database
Data model The relational model normalizes data into tabular structures known as tables, which consist of rows and columns. A schema strictly defines the tables, columns, indexes, relationships between tables, and other database elements. Non-relational (NoSQL) databases typically do not enforce a schema. A partition key is generally used to retrieve values, column sets, or semi-structured JSON, XML, or other documents containing related item attributes.
ACID properties Traditional relational database management systems (RDBMS) support a set of properties defined by the acronym ACID: Atomicity, Consistency, Isolation, and Durability. Atomicity means “all or nothing” – a transaction executes completely or not at all. Consistency means once a transaction has been committed, the data must conform to the database schema. Isolation requires that concurrent transactions execute separately from one another. Durability is the ability to recover from an unexpected system failure or power outage to the last known state. NoSQL databases often trade some ACID properties of traditional relational database management systems (RDBMS) for a more flexible data model that scales horizontally. These characteristics make NoSQL databases an excellent choice in situations where traditional RDBMS encounter architectural challenges to overcome some combination of performance bottlenecks, scalability, operational complexity, and increasing administration and support costs.
Performance Performance is generally dependent on the disk subsystem. Optimization of queries, indexes, and table structure is required to achieve peak performance. Performance is generally a function of the underlying hardware cluster size, network latency, and the calling application.
Scale Easiest to scale “up” with faster hardware.  Additional investments are required for relational tables to span a distributed system. Designed to scale “out” using distributed clusters of low-cost hardware to increase throughput without increasing latency.
APIs Requests to store and retrieve data are communicated using queries which conform to a structured query language (SQL). These queries are parsed and executed by relational database management systems (RDBMS). Object-based APIs allow app developers to easily store and retrieve in-memory data structures. Partition keys let apps look up key-value pairs, column sets, or semi-structured documents containing serialized app objects and attributes.
Tools SQL databases generally offer a rich set of tools for simplifying the development of database-driven applications. NoSQL databases generally offer tools to manage clusters and scaling. Applications are the primary interface to the underlying data.

Types of NoSQL Databases on AWS

Columnar Databases

Columnar databases are optimized for reading and writing columns of data as opposed to rows of data. Column-oriented storage for database tables is an important factor in analytic query performance because it drastically reduces the overall disk I/O requirements and reduces the amount of data you need to load from disk. Learn more »

Document Databases

Document databases are designed to store semi-structured data as documents, typically in JSON or XML format. Unlike traditional relational databases, the schema for each non-relational (NoSQL) document can vary, giving you more flexibility in organizing and storing application data and reducing storage required for optional values. Learn more »

Graph Databases

Graph databases store vertices and directed links called edges. Graphs can be built on relational (SQL) and non-relational (NoSQL) databases. Vertices and edges can each have properties associated with them. The diagram below depicts a simple graph of relationships between friends and their interests. Learn more »

In-Memory Key-Value Stores

In-memory key-value stores are NoSQL databases optimized for read-heavy application workloads (such as social networking, gaming, media sharing and Q&A portals) or compute-intensive workloads (such as a recommendation engine). In-memory caching improves application performance by storing critical pieces of data in memory for low-latency access. Learn more »

SQL vs NoSQL Terminology

MongoDB DynamoDB Cassandra Couchbase
Table Collection Table Table Data Bucket
Row Document Item Row Document
Column Field Attribute Column Field
Primary Key ObjectId Primary Key Primary Key Document ID
Index Index Secondary Index Index Index
View View Global Secondary Index Materialized View View
Nested Table or Object Embedded Document Map Map Map
Array Array List List List

What is NoSQL?2019-03-29T23:31:03+05:00

HeadSoft Consulting

Creative experienced team with accomplished designers and developers.



Contact Info

1534 Rue de Versailles

Phone: 450.424.3934

Mobile: 514.577.5973