IPv4 vs IPv6: An Internet Protocol Story

With the explosive growth of connected devices and only so many IP addresses to go around, the internet as we know it could have ground to a halt a few years ago. Fortunately, IPv6 arrived just in time to rescue the World Wide Web.

Oct 2020: We tested all the best WordPress hosts! Find out how we compare.View Results

Before I talk about why IP addresses are so important for the future of your business (and the internet), let’s back up a little…

In 1798, English cleric and scholar Thomas Robert Malthus argued that exponential population growth and arithmetic food supply would lead to catastrophic results for the global human population.

In other words, people would soon outgrow their food supply and start wars.

Less than 200 years later, we narrowly escaped a global crisis of Malthusian proportions as the World Wide Web ran out of IP addresses.

This was partly caused by the exponential growth of devices demanding their own IP address and only a limited supply of addresses being available.

Thankfully, this story has a happy ending, as a bunch of technology Jedi managed to intervene just in time and save us from impending doom.

This, then, is the story of IPv6 and the rescue of cyberspace.

In this post we cover:

IPv6 introduction with special effects.
Ta-ta-ta-taaa-taaah-ta-ta-taaaah-taaa…

IPv6: What is it and Why Do You Need it?

An internet protocol (IP) is the set of rules governing how packets are transmitted over a network.

IP addressing requires that every node of an Internet Protocol network (e.g. a computer, router, or network printer) be assigned an IP address for each network interface.

This IP address is then used to locate and identify the node in communications with other nodes on the network.

Translated from Aurebesh, this basically means that every device on the internet needs an IP address to talk to another device.

A Not So Long Time Ago, In A Galaxy Not So Far, Far, Away…

When the internet was first conceived, no one could foresee just how many devices would end up having to talk to each other.

Until recently, IPv4 was the core protocol used to group and transmit data over the Internet and it still routes most Internet traffic today.

IPv4 uses a 32-bit address space, however, which limits the number of unique hosts to just under 4.3 billion addresses.

Example of an IPv4 address.
An example of an IPv4 address.

The Problem: No Fixed (IP) Address

Now, 4.3 billion IP addresses may have sounded like a lot when a billion still meant a million millions (not one thousand million!), but consider this:

Out of those 4.3 billion IPv4 addresses, large blocks were reserved for special uses and were unavailable for public allocation.

So, right off the block, the block of publicly available IP addresses was already diminished to about 3.7 billion IP addresses.

Aggravating this problem is IPv4 address exhaustion, a condition where the depletion of available IP addresses had been anticipated since the 1980s, when the commercialization of the internet began in earnest.

Several factors have aggravated this depletion, such as:

  • The inefficient allocation of far more addresses to organizations than actually required.
  • The worldwide growth of internet connections that are always active and never switched off (e.g. broadband internet access).
  • And most significantly, of course – the growth of mobile devices.

Mobile phones are like any other device on the internet, and also require an IP address in order to talk to other internet-enabled devices.

You can immediately see what the problem with IPv4 is when you consider the fact that 4.78 billion people have a mobile phone.

So, already people have more mobile phones today than there are unique IPv4 addresses available for their devices.

Take that with a pinch of salt and a grain of Malthus and you’ve got a whiskey risky recipe for disaster.

Users Worldwide That Own Mobile Phones
Users worldwide with mobile phones. Source: https://www.bankmycell.com/blog/how-many-phones-are-in-the-world.

Now, add all the ‘smart’ devices in the IoT (Internet of Things) world that need their own IP address too, and you can see now why the World Wide Web could have easily been worn out by IPv4 address exhaustion (I’m fatigued just writing about it).

And to think that Malthus was only worried about humans running out of food.

Had he lived another 150 years or so, he would be seriously tossing and turning in his sleep as millions of future wannabe social influencers were selfielessly denied access to the last available IP addresses.

Then, everything changed…

The Solution: IPv6

The anticipated shortage of IPv4 addresses led to the creation and adoption of several new technologies, including network address translation (NAT), Classless Inter-Domain Routing (CIDR), and IPv6.

Note: In case you’re wondering “whatever happened to IPv5?” (and IP versions 0 to 3…).

Although IPv5 was developed as a means of streaming video and voice data, and serving as a foundation for the development of technologies such as voice-over-IP (VoIP).

It never became an official protocol because it used the same 32-bit addressing as IPv4 – which means it would have suffered with the same 32-bit limitations.

Effectively, IPv5 ran out of steam as IPv4 became exhausted.

As far as the other IP versions go, according to Wikipedia, IP versions 0 to 3 were experimental versions (according to Wookieepedia, however, the IPv1 is an Imperial patrol vessel designed to be very fast and maneuverable, great for fighting pirates, but it lacked a hyperdrive).

But I’ve digressed, so let’s get back on route…

The IPv6 protocol uses a 128-bit address and has eight segments separated by colons of four hexadecimal digits that can be any hexadecimal value between 0 and FFFF.

Even if you think the above sentence sounds like Astromech Binary, you can tell just by looking at an IPv6 address that it’s much bigger and more powerful than IPv4…

IPv4-vs-IPv6
IPv4 vs IPv6 … BeeYoop BeeDeepBoom Weeop!

How much bigger is IPv6 than IPv4 you ask?

If you were to distribute $4.3 billion to every man, woman, and child in Canada, they’d get less than $120 each. That’s pish-posh dosh. So…4.3 billion? Pffft.

IPv6, however, with its 128-bit address space allows for, wait for it…(stupidly huge number alert:)  340 undecillion unique IP addresses. We’re talking about 340 trillion trillion trillion IP addresses.

“If you had a job that paid you 390 trillion dollars per hour (US) you would have to work 24 hours per day, 7 days per week, 365 days per year for just a little less than 100 quadrillion years to earn 340 undecillion dollars.”

Source: ITDojo.com

If the idea of earning that much money makes you uncomfortable, let me put this into perspective:

Imagine living in a Star Wars universe filled with a gazillion inhabitable planets where octillion beings can all message each other’s devices (“drink and chill? I know this jazz bar in Tatooine”).

Suspend for a moment the fact that you can land on any Star Wars planet, step out of your craft without a helmet, and just breathe normally.

Think about all the squillions of droids, clones, and smart devices that must exist throughout the Galactic Empire. How are they all communicating with each other?

Only a select chosen few can transmit packets of information across vast reaches of space using “The Force.” Everything else must be using some other form of transmission protocol.

Heck, we’ve already ran out of IPv4 addresses here on Earth even before the launch of Apple Watch.  And we haven’t even tried to colonize Mars yet.

With IPv6 providing trillions and trillions and trillions of IP addresses to all corners of the Galactic Empire, however, well… that’s a whole other story.

iPv6 cartoon illustration
IPv6…which sequel was he in?

IPv4 vs IPv6 – Challenges

Although IPv4 and IPv6 coexist on the Internet (unlike stormtroopers and the Rebel Alliance), they are not interoperable (it’s not a made-up word – it means they’re incompatible).

IPv4 and IPv6 cannot communicate with each other but they can coexist on the same network. This is known as Dual Stack.

iPv6 cartoon illustration
It’s Dual Stack…not Duel Stack!

The non-interoperability (another non-made-up word to mean incompatible) between IPv4 and IPv6 creates challenges when using certain applications and protocols.

For example, IPv6 is not compatible with FTP and requires certain extensions and workarounds for files to transfer successfully.

The Benefits Of Using IPv6

Before we look at how to set up your hosting to take advantage of IPv6, let’s take a brief look at some of the benefits of using IPv6, and the main differences between IPv4 and IPv6 addresses.

The main benefit of using IPv6 as we have just seen is having a significantly larger pool of IP addresses available.

340 billion billion billion billion IP addresses is nothing to sneeze at (there aren’t even enough human or Tauntaun noses in all the universes to do that).

An image from the Star Wars: Legacy of War for Star Wars: Empire At War gallery
The difference in size and magnitude between IPv6 and IPv4 (not to scale).

Image by: foshjedi2004

Another benefit of IPv6 vs IPv4 according to Lee Howard, is faster speed (not quite the light speed of the Millennium Falcon, though.)

Here’s a couple of fun facts about IPv6:

  • IPv4 addresses are separated by periods while IPv6 addresses are separated by colons.
  • IPv6 addresses can be compressed to eliminate leading zeros.

Here are some examples of valid IPv6 (Normal) addresses:

2001 : db8: 3333 : 4444 : 5555 : 6666 : 7777 : 8888

2001 : db8 : 3333 : 4444 : CCCC : DDDD : EEEE : FFFF

: : (implies all 8 segments are zero)

2001: db8: : (implies that the last six segments are zero)

: : 1234 : 5678 (implies that the first six segments are zero)

2001 : db8: : 1234 : 5678 (implies that the middle four segments are zero)

2001:0db8:0001:0000:0000:0ab9:C0A8:0102 (This can be compressed to eliminate leading zeros, as follows: 2001:db8:1::ab9:C0A8:102 )

Source: ibm.com

Future-Proofing Your Web Presence With IPv6

As everything in this lonely planet of ours becomes network-connected, IPv6 is something you should definitely care about – especially if you provide any kind of web services or develop software or hardware.

To use IPv6, you need an IPv6-compatible operating system, a router with IPv6 support, and an ISP with IPv6 enabled.

You don’t need to sit in a swamp with Yoda teaching you Jedi mind tricks to test your IPv6 connectivity.

We have the internet. Just visit a site like TestMyIPv6.com.

testmyipv6.com
Test your IPv6 connectivity at TestMyIPv6.com. Have IPv6? You either do or do not.

Most modern desktop operating systems are now compatible with IPv6. When buying a new router, make sure to check your router’s specifications details to see if it supports IPv6.

Also, make sure your ISP has IPv6 set up and enabled on their end.

IPv6-Enabled Web Hosting

Like Obi-Wan Kenobi teaching young Master Luke how to take his first step into a larger world, I have tried to show you the importance of IPv6 in keeping you connected to the world at large.

Now, focus your mind, close your eyes, and read this next sentence very carefully:

When it comes to hosting your website, choose a hosting provider that supports IPv6.

With WPMU DEV’s WordPress hosting, for example, every site you host with us receives its own unique IPv6 address (not clones).

To obtain your unique IPv6 address, log into your member’s area, go to The Hub, and click on Hosting.

The Hub - Hosting
In The Hub select Hosting.

Select your domain, and click on the ‘Manage’ icon.

WPMU DEV Hosting Hub - Manage
WPMU DEV Hosting Hub – Manage

Next, click on Domains.

WPMU DEV Hosting Hub - Domains
WPMU DEV Hosting Hub – Domains

This brings up the Domains screen containing the settings you need to add to your DNS records.

WPMU DEV Hosting Hub - IPv6
Use this Quad-A record for optional IPv6 support.

All you need to do now is copy and paste the IP address provided as an AAAA record in your DNS records and save to update your settings.

DNS records - AAAA record
Add your IPv6 address to an AAAA record.

Congrats! Your site is now IPv6 ready!

DNS Records
Your site is now IPv6 compatible.

Note: The AAAA record (also referred to as a Quad-A record) converts your domain name into its corresponding IPv6 address.

This record should be used in addition to the A record wherever possible, as it represents the best practice and can lead to performance improvements.

Visit our documentation section for a complete step-by-step tutorial on adding an AAAA record to your DNS records.

340 Undecillion Reasons To Use IPv6

We’ve already suffered enough from IPv4 exhaustion, so there’s no need to extend this saga any further. Darth Malthus has been defeated.

The Galaxy has been saved. There is a new hope for the internet.

Thanks to IPv6, we now have enough IP addresses to prop up the Internet backbone and to continue to grow, spread, and awaken this force to all network-connected devices in this and many other worlds.

Remember this and you will master all you need to know:

IPv6-enabled hosting choose, you must.

If you haven’t experienced WordPress hosting at light speed yet (give or take a few parsecs), join the WPMU DEV rebel alliance by becoming a member today.

With WMPU DEV hosting there’s no shared hosting, no shared IPs, and IPv6 is automatically enabled and supported.

This keeps your site completely isolated and separate from other sites while keeping your business digitally connected with the rest of the galaxy.

May the force be with you and our hosting set you free.

Google Announces AdMob API Open Beta

Google has announced an open beta release of an all-new Admob API. Google is providing the API specifically for application providers using AdMob, the company’s platform for promoting and monetizing mobile applications. The new API provides data that more accurately mirrors the information that users would find in the AdMob user interface. 

Suppress input while writing to window – Python

Hi,
I am developing an app that monitors and corrects the user input based on some rules.
I am reading the events from keyboard with the keyboard python module.
I faced some problem when the user types very fast, as regards some overlays of text. By this I mean that when my app writes the correct input, the user continues writing and may writes before the corrector types the whole word.
I found, that I can start a keyboard hook with suppressed output to screen and tried to implements a solution.
In the above code I tried recreating the problem and tried giving the general idea.

import keyboard
from collections import deque

string : str = ""
counter : int = 0
is_suppressed: bool = False # this indicates if letters are shown in the window or not
suppressed_string: str = ""
q = deque() # this is used as a buffer, and stores the words that are entered when the
# program is correcting

def keyboard_module_write_to_screen(is_suppressed, string):
        for i in range(len(string) + 1):
            print("--Pressing backspace--")
            keyboard.press_and_release('backspace')
        for i, char in enumerate (string): # simulating a calculation 
            final_char_to_be_written = char.upper()
            print("---WRITING THE CHAR -> {} ---".format(final_char_to_be_written))
            keyboard.write(final_char_to_be_written)
        for i in range(30):
            keyboard.write('*')
        keyboard.write(' ')

def monitoring(event):
        global counter, string, is_suppressed, suppressed_string

        if (event.event_type == keyboard.KEY_DOWN): # and event.name != 'backspace'):
            print("-String entered : {}".format(event.name))

            if (event.name == 'space'):
                # if space is button a new word is entered
                if (is_suppressed is True):
                    # if program occupied writing to the screen save the word to the buffer
                    q.appendleft(suppressed_string)
                    suppressed_string = ""

                elif (is_suppressed is False):
                        # check and write first from the deque,
                        # write the word(s) that were stored in the buffer before writing current
                        # input string
                        # haven't find a way to do the above alongside the others
                        keyboard.unhook_all()
                        keyboard.hook(monitoring, suppress = True)

                        is_suppressed = True

                        keyboard_module_write_to_screen(is_suppressed, string)

                        keyboard.unhook_all()
                        keyboard.hook(monitoring, suppress = False)
                        is_suppressed = False
                        counter = 0
                        string = ""

            elif (event.name in "abcdefghijklmnopqrstuvwxyz") :
                if (is_suppressed is True):
                    suppressed_string = ''.join([suppressed_string, event.name])
                    print("########## SUPPRESSED_STRING = {} #########".format(suppressed_string))

                counter = counter + 1
                print("-- COUNTER is : {}".format(counter))
                string = ''.join([string, event.name])
            elif (event.name == "]"):
                    print(q)
            elif (event.name == 'backspace'):
                pass

keyboard.hook(monitoring, suppress = False)

The main thing I want to achieve is
1)while correcting - writing to the window, read events and save them to a buffer
2)when correcting - writing is done check the buffer, write it's content, but keep reading events
3)if buffer empty and currently not writing something, read events etc.
I didn't manage to make it work and produce the desired result.
Any advice on how to make it work, would be useful.
Thanks in advance for any help.

OpenMed Announces Corona Checker Mobile App

Today, OpenMed, Inc., announced the launch of the  "Corona Checker" App on iOS App Store and "OpenMed Checker" on Google Play - the first-ever AI symptom evaluator coupled with coordinated definitive testing through a significant network of CLIA certified labs and medical professionals to provide test sampling, for qualified users. OpenMed is using any proceeds to offer subsidized or free testing to those that financially qualify.

Jetpack Re-launches Search Feature as Standalone Service

The Jetpack team announced today that its search service is now available as a separate package from the professional bundle it was previously under. The move should make it more affordable for small sites to use the service. Larger sites might have to shell out more money, depending on how much content is on the site.

“Jetpack Search had only been available as a part of the Jetpack Professional plan at $29 per month, but that pricing felt unfair: a site with one million posts costs 1,000 times as much to index as a site with one thousand posts, but both sites were paying the same amount,” wrote Greg Brown, search wrangler at Automattic, in the announcement post. “New pricing makes Jetpack Search more affordable for small sites and still costs big sites less than the competition.”

Jetpack Search now charges by the number of records:

  • Up to 100 records: $5 per month
  • Up to 1,000 records: $10 per month
  • Up to 10,000 records: $25 per month
  • Up to 100,000 records: $60 per month
  • Up to 1 million records: $200 per month
  • Over 1 million records: $200 per month per million records

“Records” are posts, pages, and custom post types. However, that may change in the future. “We decided to use the term ‘records’ because we think there are use cases where we may want to index comments as their own records sometime in the future,” said Brown. “Similarly, there are use cases for indexing authors, tags, categories, etc. as their own records.”

Jetpack Search combines comments and bbPress plugin replies, which are technically a custom post type, with their parent post. For now, these will not count against users’ record counts.

One caveat with search is that media attachments are considered individual records by default. There are good reasons for some sites to expose attachments via search results. However, this could lead to unwanted records and cost more money each month for users who have a lot of media but do not wish to count those pages. Jetpack does have a filter hook that controls which post types are cached on the WordPress.com servers, so this can at least be configured via code.

Version 8.4 of the Jetpack plugin also includes an updated search interface. When a site visitor enters a search query, a fullscreen modal appears to showcase the search results. The results are snappy because they rely on the WordPress.com API and updated technology underneath. The new interface should work well with most themes out of the box on both desktop and mobile views.

Screenshot of the new Jetpack search results.
Jetpack search results modal.

“This new version of Search is only available with the new plan,” said Brown. “The previous version of Search is still available on the Pro plan and will continue working as-is for the foreseeable future, but our focus going forward is on the new search experience.”

New Architecture Behind Jetpack Search

The new version of Jetpack Search runs on a re-architected technology layer. The old system was an Elasticsearch wrapper around the standard WordPress search feature. While it was quicker than normal WordPress search results, it was still slower than it needed to be. There was no built-in spelling correction. Searched terms were not highlighted.

The new system uses the same sync technology behind Jetpack features like Related Posts, Publicize, and Stats to cache content. It then builds a search index using the Elasticsearch engine from the cache.

The team has built an optimized API, which now supports searching as the user types and uses pageview stats as part of the algorithm in result rankings. Search input also goes directly from the browser to the API on WordPress.com, which minimizes the delay in returning results.

“All search engines work by preprocessing the data to ensure that when a user’s search query comes in the results can quickly be returned,” said Brown. “For Jetpack Search, very little of the processing time on our servers goes to processing the queries. Almost all of the server load comes from indexing the data and reindexing it as the content changes. Across our main search cluster, for instance, only 10% of the CPU time is spent processing about 850 search queries per second. Most of the time is spent on the 650 index operations per second.”

Brown explains this new architecture is why the new pricing tiers are based on the number of records cached from a site. “We preprocess the data, which expands how big it is; store it on the fastest SSDs we can buy; replicate it to multiple data centers; and then can quickly serve results as soon as a search request comes to our API.”

For readers who are interested in a more technical breakdown of the system, Brown has written a full overview titled Real-Time Elasticsearch Indexing on WordPress.com on the Data for Breakfast blog.

How do I call a function from a click on a link and pass filename

I'm trying to pass a filename to a function but don't know how to call the function from a click on a link. The top of my index.php is:

<?php
$filename = NULL;
session_start();
// start of script every time.

//  setup a path for all of your canned php scripts
$php_scripts = '/home/larry/web/test/php/'; // a folder above the web accessible tree
//  load the pdo connection module  
require $php_scripts . 'PDO_Connection_Select.php';
require $php_scripts . 'GetUserIpAddr.php';
require $php_scripts . 'mydloader.php';

//*******************************
//   Begin the script here
$ip = GetUserIpAddr();
if (!$pdo = PDOConnect("foxclone")):
{
    echo "Failed to connect to database" ;
    exit;
}
else:
{
    $stmt = $pdo->prepare("INSERT INTO download (IP_ADDRESS, FILENAME) VALUES (?, ?)");
    $stmt->execute([$ip,$filename]) ;
}
endif;
?>

<DOCTYPE html>

I want to change it from:

<a href="<?php echo "/{$deb}";?>"><img src="images/button_download.png" alt=""></a>

Which did a direct download of the file to be able to call a function in " require $php_scripts . 'mydloader.php'; " so I can make an entry in the server database and download the file but I have no idea where to start.

Learn Eleventy From Scratch

The latest edition of Andy Bell’s Piccalilli landed in my inbox this morning with a sweet offer: preorder Andy’s course on learning Eleventy from scratch at a third of the price.

Why the plug? No, not sponsorships or anything like that. I just happen to hear a heckuva lot about Eleventy these days. Like how we can use it with Google Sheets as a pseudo-CMS. Or how it can be a key component of an emergency website kit. I mean, geez, Chris even used it for the conferences site we have around here. As Andy says, “the future is bright because the future is static.” At least, it certainly appears that way.

I’m squarely in the novice camp when it comes to Eleventy, not to mention static site generators as a whole. That’s why I signed up for the course. It promises to be a deep dive that starts with an empty directory and goes all the way to full-blown website. Given that Andy has created more Eleventy sites than most folks (seriously, it’s documented) and that his Eleventy-powered Piccalilli site notches perfect Lighthouse scores, I think he’ll have a lot to offer in a course.

While we’re on the topic of Eleventy, there are other guides, tutorials and courses out there you might find compelling:

Direct Link to ArticlePermalink

The post Learn Eleventy From Scratch appeared first on CSS-Tricks.

MonoLisa

Another incredible coding font on the scene! MonoLisa.

They've graciously allowed us to offer it on CodePen, so it's live and ready to use. You change it in your Editor Settings.

We've got it set to do italics for comments and the ligatures turned on. Looks pretty dang nice I think!

The post MonoLisa appeared first on CodePen Blog.

How to Re-Create a Nifty Netflix Animation in CSS

The design for Netflix’s browse page has remained pretty similar for a few years now. One mainstay component is the preview slider that allows users to scroll through content and hover on items to see a preview.

One unique characteristic of the UI is its hover behavior. When a show preview expands on hover, the cards next to it are pushed outward so that they don’t overlap. 

Like this:

It’s like Bill Murray and Brad Pitt are fighting for the spotlight.

We can do this in CSS! No JavaScript. No dependencies. Plain CSS. But before getting into any code, here’s exactly what we want to do:

  1. The card that is hovered over should expand while keeping its aspect ratio.
  2. When a card is hovered, the other cards should not change size and move outwards so that they don’t overlap one another.
  3. All the cards should remain vertically centered with one another.

Sound good? Now let’s get into the code.

HTML and flexible elements

Let’s set up a row of images that represents Netflix’s video previews. That includes:

  • A  .container parent element with several .item elements inside
  • Each .item element consisting of an image wrapped in an anchor tag
  • Turning .container into a flex container that aligns the items in a row
  • Setting the flex behavior for the .item class so they take up equal space in the row

Expanding an item on hover

Our next step is getting an item to expand when it is hovered. We could do this by animating the element’s width, but that would affect the flow of the document and cause the hovered item’s siblings to shrink – plus, animating the width property is known to be poor for performance in some cases.

To avoid squeezing the sibling of the hovered item, we are going to animate the transform property — specifically, its scale() function — instead. This won’t affect document flow the same way width does.

Moving siblings outward

Getting the siblings of a hovered item to move away from the hovered item is the tricky part of this whole thing. One CSS feature we have at our disposal is the general sibling combinator. This lets us select all of the sibling items that are positioned after the hovered item.

We’ll turn to the transform property’s translateX() function to move things around. Again, animating transform is much nicer than other properties that impact document flow, like margins and padding.

Since we’ve set an item to scale up 150% on hover, the translation should be set to 25%. That’s half of the additional space that is being occupied by the hovered item.

.item:hover ~ .item {
  transform: translateX(25%);
}

That handles moving things to the right, but how can we translate the items on the left? Since the general sibling combinator only applies to siblings positioned after a given selector (no going “backwards”), we’ll need another approach.

One way is to add an additional hover rule on the parent container itself. Here is the plan:

  • When hovering the parent container, shift all the items inside that container to the left.
  • Use the general sibling combinator to make the items positioned after the hovered item move to the right.
  • Get super specific so a hovered item isn’t translated like the rest of the items.

We’re making a big assumption that your document uses a left-to-right writing mode. If you want to use this effect in a right-to-left context, you will need to set all items inside the hovered outer container to move right and use the general sibling combinator to move all selected items left.

Demo time!

One little thing to note: this final version is using :focus and :focus-within pseudo-classes to support keyboard navigation. The Netflix example isn’t using it, but I think that’s a nice touch for accessibility.


There we have it! Yes, we could have used JavaScript event listeners instead of CSS hover rules., and that could possibly be better for maintainability and readability. But it’s sometimes fun to see just how far CSS can take us!

The post How to Re-Create a Nifty Netflix Animation in CSS appeared first on CSS-Tricks.

CSS Findings From The New Facebook Design

Ahmad Shadeed digs around the new Facebook’s front-end code.

One that stood out to me:

.element {
  inset: 4px 0;
  /* Which is equivalent to: top: 4px, bottom: 4px, left: 0, right: 0 */
}

Whaaat? This is the first I’ve heard of the inset property. Ahmad said he saw it working in Chrome 80, but it definitely isn’t for me (nor Safari). It does in Firefox though.

Chrome 80 and Firefox 75

It’s shorthand for top/right/bottom/left (just like margin, in a sense), which is certainly welcome if you ask me. Bring on the support.


If you’re into people digging into big sites to learn stuff…

Direct Link to ArticlePermalink

The post CSS Findings From The New Facebook Design appeared first on CSS-Tricks.

Free Technical Writing Tutorial

When asked, "What language should I learn first?", my answer is always "English". If you can't communicate clearly then you can't do your job as a programmer properly. As a programmer your job does not begin and end with code. You must also be able to write documentation clearly. I recently came across two excellent technical writing modules by Google that are free for everyone. They do not take long to complete and (aside from the confusion between acronyms and initialisms) are spot on. You can find the overview here with links to the two main modules.

A lot of you are shut in for the duration of the Covid-19 outbreak anyway so you have no reason not to at least have a look.

How Churches Can Offer Online Sermons with WordPress

Do you need an easy way to share sermons with your church members online?

Recording and uploading sermons to your church website is a great way to reach members who can’t attend church. This can also help you to attract new church members as well.

In this article, we’ll teach you how you can record audio or video sermons, add them to your church website, and let your members subscribe, so they don’t miss a single update.

Bonus, if your church doesn’t have a website, then we will cover that too.

Ready? Let’s get started.

Offering online sermons on a church website

Why Record and Upload Sermons?

You’ve probably already created a website for your church. Most church websites include the basic information like location, service times, and a contact form.

But when it comes to putting sermons online, or even putting your whole church services online, you might think it takes too much time or would cost a lot of money.

There are a lot of reasons it makes sense to put your sermons online:

  • Many new visitors to your church can listen online before they ever come through the doors.
  • You may have church members who missed service because they were sick, or because they are elderly and unable to get out as much.
  • Some members might miss part of the service to take care of a crying infant, and want to hear the rest.

Even for members who are present for the whole service, you may find that when you offer your sermons online, people are able to listen again and get even more out of the message.

Plus, adding sermons can even help you get more website traffic. That’s because websites that publish new content more often tend to rank higher in search results.

And the good news is that in terms of both dollars and volunteer hours, it doesn’t have to break the bank. Many small churches and church plants need to make a website as inexpensively as possible.

We’ll include instructions for how to record sermons on a tight budget, as well as give a few options for those who may have a higher production budget and are looking for more professional solutions.

Ready to learn how to record sermons and upload them to your site? We’ll walk you through each step.

Here’s a quick outline that you can use to easily browse the article:

Step 1: Set Up Your Church Website

If you already have a WordPress website set up, then you can click here to skip to step 2 which is focused on choosing your recording equipment.

You can watch this video tutorial, or read our step-by-step guide on how to create a WordPress website to get started.

If you’re just getting started, we highly recommend using Bluehost to host your website.

They are offering WPBeginner readers a free domain name and 60% discount on web hosting. Basically, you can get started for $2.75 per month.

→ Click here to Claim this Exclusive Bluehost offer ←

You might also want to see our roundup of the best WordPress themes for churches, so you can customize your site design.

Once your website is set up, the next step is to make sure you have the equipment you need to record your sermons.

Step 2: Get the Right Recording Equipment

The equipment you need will depend on whether you want to record your live sermons while you’re preaching in the church, or record sermons separately by yourself.

The good news is, if you want to record live sermons, you may already have everything you need.

If your church already has a soundboard and an available laptop for recording sermons, you may just need to purchase a small cable like this 3.5mm to XLR Cable to run from your soundboard to a laptop.

Once connected, you can then use a program like Audacity to record the sermon (more on that in the next step).

If you don’t have a soundboard for your church, you could use a portable recorder like this Handheld Digital Audio Recorder. You can easily set this on your podium so you don’t have to hold it the whole time.

You might also want to record sermons privately by yourself, instead of recording the live sermon, or even record additional teaching for deeper study.

In that case, you’ll need a good microphone. You might think about using your laptop’s built-in mic to record sermons, but we don’t recommend that. Your church members will notice the bad sound quality and may have trouble understanding your sermon.

We recommend investing in one of these 3 mics that are popular for podcasting:

Buying a professional microphone for podcasting

At WPBeginner, we also use the Rode Podcaster kit that came with a mic arm and shock mount.

You should also consider using a decent pair of headphones like Sony MDR7506 for recording and editing your audio files.

How do you record a sermon video?

For recording video sermons, you’ll need to use a video camera.

If you need to begin with an absolute minimal budget, you can record on your smartphone using a tripod. This is the cheapest way to go.

GripTight GorillaPod Stand PRO

GripTight GorillaPod Stand PRO is a good tripod for any type of phone. It has adjustable legs that can be used to attach it to any surface.

For churches with a modest budget, you can use SlingStudio’s HD Video Production Unit to create a high-quality video recording that uses multiple cameras. SlingStudio lets you switch between video feeds in real-time from an iPad or laptop. You can add feeds from camcorders, DSLR cameras, or even use your smartphone.

Once you’ve chosen your equipment, you’re ready to start recording.

Step 3: Record Your Sermon

To record your sermons, we recommend using the program Audacity.

Audacity is a completely free program that, like WordPress, is licensed under the GPL. You can use it to record your sermons, and also edit the files for noise reduction and enhanced sound quality.

After you install Audacity, you’ll need to open the program and click the File menu to start a new project.

Then, click on the record button to start recording your sermon.

Don’t feel like you need to start over if you make a mistake. Just keep going, and then you can edit out the mistakes after you’re finished recording.

Audacity

If you want, you can also import music files from File » Import to use at the beginning or end of your sermon.

Since Audacity is a powerful tool, you may want to check out these Audacity tutorials to learn more about all the features.

After you’re done recording your sermon, you can export it. We recommend the MP3 format because it creates smaller file sizes with good quality.

Once you’ve saved the file, you’re ready to upload it to your website.

Step 4: Upload Your Sermon Recording

Both audio and video recordings produce large files. You might be able to get away with hosting your audio files on your website for a short time, but you’re likely going to run into space issues after a while.

If you want to keep your WordPress website fast, you shouldn’t upload audio or video files to your own site.

We recommend you use a separate church sermon hosting service. If you’re looking for the best podcast host for churches, we recommend using Podbean to upload your sermon audio recordings. You can also check out our list of the best podcast hosting services for other options.

Podbean

For video files, we recommend you get started on YouTube. It is easy to use, super-fast, and free. It is also the world’s second-largest search engine which means additional chances for your sermons to be viewed by someone new.

Once you’ve recorded your sermons and put them online, it’s time to add them to your website so your own members and visitors can easily find them.

You will begin by adding the Sermon Manager for WordPress plugin. For more details see our step-by-step guide on how to install a plugin.

You will begin by adding your first sermon. Simply go to Sermons » Add New page.

Add new sermon to WordPress

First, you will need to add the title of your sermon and the date it was preached on. You must add the date preached to be able to publish your sermon.

After those two fields, there are many fields that are optional but we encourage you to fill out as many as possible. Adding thoughtful descriptions helps your sermon be discoverable by search engines.

The second set of fields will allow you to paste the URL for your files, whether you’re adding audio, video, or both. There’s also a place where you can add sermon notes if you’d like to attach a PDF.

add sermon recording details

Fill out the meta on the right column for things like the preacher’s name, the sermon series, and then click publish. And that’s it! If you’re using pretty permalinks, your first sermon will now be available at:

https://yourdomain.com/sermons/

Submit your Podcast to Apple’s iTunes and Google Play

Another great feature in the Sermon Manager plugin is that you can easily submit your feed to podcasts. This makes it easier for your members to subscribe and receive notifications on their phones when you publish a new sermon.

To get started go to Sermons » Settings and click on the Podcast tab. The folks behind the Sermon Manager for WordPress plugin have made this section very self-explanatory so you will be able to follow along, filling in your own data and seeing what they recommend in light gray text.

Go through each field and fill in the information so it matches your church.

enter your church podcast settings

At the bottom, click the save button. Next, you’ll use the link for the feed validator so you can be sure you’ve filled out everything correctly. When your feed validates you’ll copy the link and submit your podcast to both Apple Podcasts and Google Play Podcasts.

copy the church podcast feed URL to submit to podcast services

How Do I Live Stream Sermons?

Plenty of churches are asking how do I live stream sermons, so you may be wanting to do that as well.

We recommend live streaming in addition to having sermons on your own website. If you only live stream and don’t record your sermons, then you’re missing out on all the benefits we listed above.

Having sermons on your website means your church members can access past sermons more easily. It can also help you to grow your website traffic.

That said, live streaming sermons can be a good way to reach new audiences on social media.

Two of the best ways are YouTube and Facebook. Facebook especially can be a good option because a lot of your members are already there and connected to your page.

But Facebook Live isn’t always reliable. We’ve heard reports of churches having issues with their livestream crashing in the middle of the service. Using a broadcasting service instead can offer a smoother experience.

Restream will allow you to broadcast your service on your own website, YouTube, your Facebook page, a Facebook group, and other services, all at the same time.

You can also record your sermons or services in advance and schedule them to go live at the right time for a less stressful experience.

If you’re live streaming your sermon using your smartphone, you’ll want to make sure you’re using a tripod for the best results.

After your live stream is over, you can add the video to your own site following our tutorial above.

We hope this article helped you learn how to record sermons. You may also want to check out our guide on how to accept online donations.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How Churches Can Offer Online Sermons with WordPress appeared first on WPBeginner.

A Brief History of EDR Security

Endpoint Detection and Response (EDR) solutions were developed to fill security gaps left by other tools. The need for EDR can be traced to the early 2010s, but the term EDR was officially coined in 2013. In this article, you’ll learn about the threats that lead to the development of EDR tools, past reincarnations of EDR solutions, and how EDR security will look like in the future.

2010: Threats Leading to The Development of EDR

In the early 2010s, attackers began developing methods for running malicious code without having to install malware. These attacks enabled them to bypass traditional security measures, which relied on identifying malicious executables. Below are some of the methods attackers developed and continue to refine.

Top WordPress Appointment and Booking Plugins (2022)

Reservation systems are popular with hospitality-type businesses like hotels and restaurants, but they’re not the only ones who can benefit from them.

Any business model that relies on filling seats, meeting with clients and team members, or conducting assessments, would benefit from a reservation, booking, or appointment system.

As a freelancer, you probably schedule time out of your work schedule to talk to your clients or meet with prospective ones. That means an on-site reservation system would be helpful for your own business, too.

Appointments and meetings already take enough time out of your schedule. A reservation system will at least help you shave a few minutes off of the back-and-forth that tends to happen when trying to coordinate and schedule them.

Here’s what we’ll be covering in this article:

Below is a summary list of all of the WordPress appointment booking plugins we included in this review, along with a link to their download pages with additional details.

  1. HubSpot Meeting Scheduler + HubSpot CRM (base plugin)
  2. Simply Schedule Appointments
  3. Bookly
  4. Booking Calendar
  5. Amelia
  6. Easy Appointments
  7. Start Booking
  8. Hotel Booking Lite

If you’re curious about what a reservation system can do for your WordPress site, this post is for you.

Let’s take a look at what sort of businesses can benefit from WordPress appointment booking, what those benefits are, and which plugins can best handle a reservation system on your WordPress site.

A Feature-Based Approach

While researching this subject, we came across many listicle style posts, containing a banner image and top-level description for a number of plugins. Instead of adding to that pile, we decided to take a unique approach.

Rather than running through a list of plugins with mini blurbs about each, we’re going to define what the key, important features of a digital scheduling assistant are, then create a section for each of these along with some plugins that stood out in that area.

This will help guide you in selecting a plugin based on features that have particular worth or interest to you, which is how we would approach it ourselves.

Important Key Features

So what are the most important features in appointment and booking plugins?

There are some criteria we won’t be rating, with the expectation that these come standard in a good plugin, and we wouldn’t consider using them otherwise:

  • Integrated with WordPress – readily available to install & activate in WP
  • Updated regularly – to keep WP safety protocols in place
  • Rated highly – tested as tried and true by a majority of users
  • Support – whether live or in the form of an active forum, answers are easy to come by and actually help solve problems
  • Cost – it’s offered in a free version, with paid upgrades to do even more (if desired)

For this article, everything we’ll be reviewing has a free version. We’ll also let you know if premium plans with additional features are offered.

With the basics laid out, let’s identify the other variables that matter most. Using a plugin that caters to your specific needs will ultimately provide you with the best value.

Top Features List:

  1. Setup – Is it simple & intuitive, or jumbled/complex? Is there some sort of automation or a startup wizard included?
  2. Customization – Can you set the number of reservations you’ll take in a day or block out certain times & dates? Can you select your own colors or personalize contextual elements?
  3. Calendar (Booking/Viewing) – Does it allow you to add a calendar on your site for client access? If so, is coding required on your part, or is there a block or embed code to quickly add?
  4. Confirmations – Do these show upon page reload after the booking is made? Are they automatically sent via email? Is there a way to view them on your own calendar? If so, how do they arrive/look?
  5. Revisions – Is there a way to cancel or reschedule appointments already booked? How hard/easy is it to accomplish this?
  6. Payments* – Does it integrate with a payment platform that is secure & trusted? Is it difficult or simple to use?
  7. Overall Use & Aesthetics – How useful did the program seem on the whole? Was it plain, pathetic, or pleasing to look at?

*This feature would only be needed for businesses where making a reservation requires on-the-spot remittance. Since this could apply to your business or your clients, we felt it important to include.

And, we’re off!

Spotlight on Individual Features

This section is our breakdown feature by feature, so you can see which plugins excelled in specific areas.

I want to state that we won’t be including any plugins here that we found of little or no value. Despite individual features that didn’t rank as highly as their counterparts in comparison, if it’s in this post, it offers value in the digital scheduling assistance realm and we consider it a solid choice.

Feature 1: Setup

This feature doesn’t have levels of intricacy to it. It just needs to easily lay the groundwork to be up and running.

Initial setup is ideal when it’s simple and uncomplicated, with clear instructions or an automated wizard.

Best of the bunch:

Simply Schedule Appointments

SSA is one of the few plugins we tried that had a startup wizard. In my experience, wizards are one of those small details that make a big impact.

This wizard ran as soon as I clicked on the installed dashboard, and took me through every step and setup point necessary to get me fully onboarded.

ssa set wizard
Setting up the basics is as easy as ABC with the SSA smart wizard.

Instructions for each section were clear, and I was able to enter all data without issue.

When the wizard completed, it was very clear where I stood, and the plugin’s shortcode was clearly displayed so I didn’t have to hunt around for it later.

SSA wizard finish
Simply Schedule Appointments outfoxes the competition with their wily wizard.

Even suggestions for next steps were prominently displayed in the form of one-click buttons at the bottom of the popup.

Bookly

Bookly also came through with a setup wizard. As noted above, I’m a big fan of these, as when done well they make a measurable improvement in the user experience.

bookly wizard step 3
Setting up scheduling parameters in Bookly is a breeze through their wizard.

Bookly’s wizard was also very intuitive, covered the necessities, and had a nice flow.

bookly wizard finish
Bookly’s startup wizard is put together well.

Upon completion, the shortcode was clearly displayed, along with a quick “how-to” for adding it to a page. There was also a link to their help page, which I didn’t need, but appreciated it being there.

Feature 2: Customization

There are two types of customization being taken into account here:

A. Scheduling Parameters

  • Marking specific blocks of time or entire days (holidays/blackout days) as unavailable
  • Allowing buffer times (built-in padding between appointments)
  • Controlling the number of allowable bookings per day
  • Setting page URLs (for confirmations, denials, etc)

B. Visual Components

  • Choosing your colors, fonts, and other objects
  • Personalizing textual content in emails or descriptions

These customizations make it possible for the elements you’re adding to your site (as well as the emails going out under your business name) match your branding and voice.

Being able to set these yourself avoids needless post-booking adjustments. Without them, you’d have the hassle of dealing with reschedules that could have been easily avoided in the first place by simply indicating any non-availability up front.

To some, these features don’t matter much; to others they’re a big deal. Wherever you fall on the spectrum of above customizations, it’s good to know which plugins can get the job done.

Rising to the top:

HubSpot Meeting Scheduler

HubSpot Meeting Scheduler gets very high marks for both visual and scheduling parameter options.

Visually, you can select a logo and favicon. You change the colors of your calendar. You can also edit form items, like buttons – color, font size, and the font itself (there are quite a few options in the dropdown, or you can choose any Google font).

hubspot forms customization (font.color)
HubSpot Meeting Scheduler provides a number of styling options.

You can also change the type, size, and color of the font that will be in your outgoing emails.

Scheduling parameters also allow for quite a few customizations. You can choose meeting titles, duration options, availability windows (days of week & times of day), set a period of rolling weeks or custom date ranges for booking, minimum notice time, buffer time, and much more.

hubspot schedule parameter selections
The scheduling parameters in HubSpot Meeting Scheduler are numerous.

You can also decide what fields to require, and whether or not to include Captcha and Privacy & Consent (the text of which is editable itself).

Along with customization options too numerous to mention, almost every elemental section provides a live preview, so you can easily decide if you like how you’re setting things up.

hubspot calendar with custom color
HubSpot Meeting Scheduler lets you choose your calendar color, which keeps me in the pink.

Any setting adjustments you make need to be done directory from HubSpot’s website. Nothing is editable in WordPress, beyond actually adding the booking calendar to the page of your choice.

This certainly isn’t a dealbreaker for the sheer amount of customizations allowed – especially considering this is a free version! However, I did want to make note of it, as most of the other plugin customizations take place within WordPress.

Booking Calendar

Booking Calendar also fared very well in the customization feature set.

Visually, you can select from ten different pre-made color combos (ie, calendar skins), and choose from six colors for the skin of the time slots picker. Not as nice as creating your own palette, but still offers some variety.

booking calendar select skin
You get your choice of calendar skins in Booking Calendar.

Moving on to scheduling parameter options, there are plenty to be had here.

On the front end booking calendar, you can select the number of days to show in month view, allow unlimited booking per same day, show pending days as available, and prevent double booking during submissions. You can also choose to show time slots as a time picker instead of a select box.

For the Admin Panel in the WP dashboard, you can select your default view mode, the date format & date view, and choose the default calendar view.

You can also choose availability (days of the week), and unavailable days (days from today that cannot be booked).

In addition, you can add a Captcha to your form, auto-fill fields, and show a legend along with the calendar (the text labels for the individual legend keys are fully editable).

You can also select the post booking action (show a confirmation message, of your choosing) or redirect visitors to a new page (also your choice of URL).

And finally, you can opt to delete all booking data when you uninstall the plugin.

Here’s a walkthrough of Booking Calendar, demonstrating the many setting options.

Booking Calendar allows for many customizations.

Bookly

Bookly is another great option for those who want a hefty dose of customizations.

I’m immediately awarding organizational points. Items were where I expected them to be, so I didn’t have to root around for anything, whether basic or ornamental.

As far as visual changes go, there aren’t any you can make. But the default settings provide a very professional, feature-rich calendar.

Scheduling parameter options are what really shine here. For starters, you can set individual page URLs for almost every possible booking response, with success and deny screens for accepting, canceling, or rejecting appointments.

bookly settings URL
Bookly has a wealth of URL page settings.

You select the booking time slot length (2 mins to 6 hours, with lots of increments in between), and the number of days available for booking (how far in the future clients can book appointments).

There are also options for setting the calendar color key to reflect Service, Status, or Staff Member; selecting the view style (classic or minimalistic); and enable/disable any of the following: appointment notifications, show only business days/business hours in the calendar. The free version even allows you to disable “Powered by Bookly”.

You can also select your available booking times and days. And… you can designate black out days (Holidays), either as a single occurrence, or to repeat annually.

bookly holiday selection
Easily mark blackout days/holidays as one-offs or yearly occurrences in Bookly.

If I could make one improvement, it would be having the ability to add a punch of my own color, but with the overall experience being so rich I really can’t complain.

Amelia

Amelia’s customization options are so full they’re busting at the seams.

Starting on the visual front, they have two versions of their booking form – the original 1.0 and the new and improved 2.0. The new version creates a beautiful and smooth step-by-step Booking Form, which offers an upgraded user experience, animations, improved speed, and a stand-out design.

The booking calendar in Amelia is a sleek, personalized, highly functional access point for clients to book with your business.

Global settings allow you to choose primary fonts and state colors (from full spectrum RGBA), as well as for the Sidebar, Dropdowns, Calendar, Buttons, and more.

amelia booking form color options
Color choices galore in Amelia’s form customization.

Layout & input choices are available for buttons (style type), labels, dropdowns, and then some. These are separately customizable for Services (locations, employees), Dates & Times, Customer Contact Information, Payment details, and the final Confirmation screen – basically every section of what will be your online booking calendar.

The process is neatly organized, providing a full color preview along the way, and has a prominent Publish Form button to save all of your edits as you go.

I could easily write several pages on the parameter options alone, but I’ll do my best to highlight what stands out to me as extremely beneficial.

On the client side, you can select defaults (for time slots, status, & service duration), identify country by user’s IP address, show booking slots in the client time zone, and show “add to calendar” options to customers (so after they’ve booked, they can connect to their personal calendar and add the appointment there).

Also, once a client has submitted their info, you can edit it in your WP dashboard.

On the provider side, you can set your contact details, services (and associated prices), company details, and the days and hours of availability, with great flexibility.

When creating services, the free version gives you a fair amount of granular control… details, duration & pricing, and gallery customizations are all included, allowing you to add important details (and enticing images) to your services.

Incorporating a payment platform is a paid-only feature, but the basic setup for it is foundationally included in the free version. The paid gateways they offer are: WooCommerce, Mollie, PayPal, Stripe, and RazorPay.

For notifications, you have choices in mail services – PHP Mail, WP Mail – AND the additional ability to send SMS notifications. (In the free version!) There are carrier charges for SMS, but that’s independent of Amelia.

amelia notify email+sms
You get customization options for both email & SMS notifications in Amelia.

Both options allow you to fully customize the text of your messages (body & subject header), with formatting, color, links, placeholders (ie, tags – of which there are MANY), and images.

The free version allows you to use & edit two notification statuses: Appointments Pending, and Appointments Approved, while the pro/paid version opens up the full gamut of status templates for notifications.

Here is a final look at the WP dashboard… lots of at-your-fingertips data, and a very attractive UI, where you can not only view important details, but take action or revise selections as well.

amelia wp dashboard
Amelia’s colorful dashboard offers lots of insight, and allows for edits like updating appointment statuses or changing the date span for stats.

Feature 3: Calendar (Booking/Viewing)

Easy client access to the calendar is very important, and the task shouldn’t require a lot of searching or digging around.

Additionally, making an appointment should be quick and convenient for both the person making the booking and the one receiving it. Emphasis especially placed on the booking side, as that’s the client-facing element and we want to make any action they’re taking as carefree and smooth as possible.

High marks go to:

Bookly

Bookly produces a modern, sleek calendar, and page placement was a cinch.

In the block editor, typing ‘book’ instantly brought the Bookly booking form to the top, and from there it was a one-click insertion.

bookly block editor calendar form insertion
Use Bookly’s block in the editor to add the calendar to your site.

From the customer access point, things were also well executed. Booking on the calendar was an easy to follow, 4-step process, completed in under a minute.

bookly front-end calendar booking process step 1 of 4
Bookly calendar, step 1 of making a booking.
bookly front-end calendar booking process step 2 of 4
Bookly calendar, step 2 of 4 in making a booking.

Almost immediately afterward, confirmation emails – to both the business entity and the client who booked – arrived in their respective inboxes with the appointment details.

bookly email confirmations
Email confirmations in Bookly.

They’re not fancy, but they contain all of the pertinent information.

Bookly also displays a calendar on their WP dashboard, which allows you to view appointments – with details – as well as make changes.

bookly dashboard calendar
With Bookly’s WP dashboard calendar, edits are just a click away.

Start Booking

Start Booking is a treat for the eyes. You get a visual editor for setting up your calendar, which is well organized and a pleasure to use.

This visual editor is on their website, and launches automatically when you select any of the editable sections. Most of the actions (notification emails, managing users, your account info, etc), cannot be done in WordPress and will take you to Start Booking’s website. This isn’t a flaw, I’m just pointing it out as it does differ from the other plugins in that regard (except for HubSpot, as mentioned earlier).

The Provider section shows a picture along with the name, and an option to include a user bio. That’s a nice touch. If there is only a single provider (only one is allowed in the free version), this step will automatically be skipped in the booking flow.

start booking user bio
Make your guests feel more familiar by adding a provider bio in Start Booking.

In Services, you can actually add images and descriptions, leveling up your marketing.

start booking services
Start Booking Services allow for descriptions and images.

Almost every header in the booking flow setup, from start to finish, is text editable, and you always have a full color preview as you go.

The finished front end calendar looks great – incorporating the color and text content of your choosing – and it functions in a smooth, flowing manner.

Start Booking even lets you add images and descriptions to your services, automatically doing some of the marketing for you.

Simply Schedule Appointments

Simply Schedule Appointments calendar creation works like a dream.

Adding the calendar is beyond easy to create, and is done through a slick, ordered, five-step series.

ssa calendar settings wizard
Knock out your calendar setup in Simply Schedule Appointments in five easy steps.

It allows for a large assortment of customizations, including full spectrum custom colors, font, padding, and contrast mode. You can also choose your dates & times of availability, appointment slot lengths, time zone, buffers, advanced notice, and per day limits.

The notification emails are also completely editable, including text content for subject & message body (with a ton of insertable tokens), triggers, CC & BCC fields – all with live previews.

ssa email notification editing
Really make your emails personal with contextual editing in SSA.

Getting it in place is as simple as adding a block in the WordPress editor.

Once it’s on your page, the booking process is everything you need it to be – fast, efficient, and followed by a clear confirmation message, as well as an email for both parties with all the details.

ssa booking cal
Making a booking in Simply Schedule Appointments is simple, attractive, and fast.

As the provider, you also get a helpful dashboard view of upcoming appointments, which you can drill down into for more details or editing.

ssa view appointment details (provider)
Click on any appointment in your SSA dashboard summary for more details and actions.

Feature 4: Confirmations

An appointment or reservation is only as good as the clear indication that it has in fact been booked.

How important are confirmations, really? Considering they birthed the actual expression of response – “it’s on the books” – very.

Any system that doesn’t include detail-specific, timely confirmations is likely to be abandoned by users for one that does. Hence, this is an important factor for consideration.

Standouts:

Easy Appointments

Easy Appointments makes it easy to personalize all of your email confirmations, by drafting your own textual content.

You can select from a large number of tags, so they’ll autofill with the pertinent details. This can be done for all of the individual status options, such as Pending, Canceled, Confirmed, and more.

These customizations can be made to the body of the message, as well as the subject header.

easy appointments mail confirmation settings
Easy Appointments lets you customize your email scripts for a number of statuses.

Confirmation emails arrive almost instantly after a booking is made, for both the person booking (the customer), and the business entity (you).

easy appointments mail confirmation business
An email confirmation on booking status sent to the business entity in Easy Appointments.

The business entity can confirm or cancel the booking directly from the email, as links for both are included at the bottom.

You can add your own website link in the template for the customer emails, so they can rebook if necessary.

easy appointments mail confirmation customers
Email appointment statuses sent to customers in Easy Appointments.

You can also designate post-appointment-booking page URLs, to display your own message appropriate to the confirmation.

If you’re into it, and have the know-how, there’s also an option to add custom CSS styles, which will affect both the standard and bootstrap widget.

easy appointments form style & redirect
Easy Appointments lets you specify URLs for post booking page messages.

You can also change status for any appointments in the plugin’s main dashboard. If you cancel or confirm here, an email indicating the status change will be sent out.

easy appointments make booking
Changing status in Easy Appointments’ WP dashboard will automatically send an email with the status update.

HubSpot Meeting Scheduler

Confirmations are smooth sailing with HubSpot’s Meeting Scheduler.

There are a good amount of backend settings when it comes to confirmations.

Upon making a booking, a confirmation message immediately presents, and will vary depending on the bookings status.

hubspot post confirmation messages
HubSpot’s post booking confirmation messages are informative and eye catching.

Additionally, emails arrive moments later to both the booking client and the booking provider.

They contain all the important information, based on customizations you can make on the backend.

hubspot email confirmation
Email confirmations for booking client and provider using HubSpot.

You can even set reminder emails to be sent automatically to clients, based on the time span of your choice.

hubspot email confirmation settings
HubSpot confirmations allow you to send email reminders, which you can preview while in settings.

Any changes that are made can be auto sent (per your settings), and these emails are also finely tuned and functional.

hubspot email confirmation post change
HubSpot’s email updates contain changes recently made, along with options to reschedule or cancel again.

Feature 5: Revisions

Reputable retail establishments know that providing for returns is as tantamount to their overall business model as getting sales.

The same applies to booking & appointment systems when it comes to revisions. If there’s one thing that’s certain when it comes to making plans, it’s the likelihood of needing to change them, since the unexpected is often the norm.

Any booking that’s been scheduled should have a direct line of action to reschedule or cancel it, and in an uncomplicated manner. Omission of this vital feature can create a lot of no-shows and profit loss.

Taking center stage:

Simply Schedule Appointments

Simply Schedule Appointments outshines the competition. From the moment you book an appointment, options to revise it are literally in your face.

ssa booking cal step 4
Simply Schedule Appointments makes revisions easy (with a capital E).

The post confirmation message has four links beneath it, where you can take single-click action to edit, reschedule, cancel, or book a new appointment.

If it so happens that your post confirmation page isn’t still open, you can simply go to your confirmation email, and click the cancel/change link from within.

Once again, you’ll be presented with revision options at the bottom of the page that loads. Presto chango.

ssa revise from email
Simply Schedule Appointments makes changing or moving appointments a breeze.

Start Booking

Revisions are smooth and simple in Start Booking.

The customer can just go to their confirmation email, and cancel their appointment with a single click. (Of course this requires proper setup on the backend.)

start booking cancel via customer email
It’s a one-click process to cancel an appointment in Start Booking.

To reschedule, they can go through your WP website calendar, or, they can access their account area in your StartBooking.com account.

start booking customer portal
Customers can book through your WP website, or from their account on your StartBooking.com page.

All actions, from making a booking, to canceling or rescheduling it, allow settings to have coordinating emails automatically sent, and they look professional.

start booking email communications list
There are four different appointment email reminders in Start Booking that can automatically be sent based on booking behaviors.

On the backend as the provider, you can make changes in a pinch from your Appointment summary – either on WP, or through your StartBooking.com account.

start booking appointments overview (SB site)
Click on any line item in the Appointments summary to edit in Start Booking.

Once you’re inside an itemized booking, you can see what is available to view and/or take action on.

start booking appointment check in
When you’re zoomed into a particular booking, Start Booking provides a full customer history at the bottom — and you can check people in!

Start Booking really helps you stay on top of our schedule. In fact, it’s the only plugin of this bunch that automatically emailed us an agenda on the days we had items scheduled.

start booking daily agenda email
Start Booking’s auto-generated Agenda email puts your daily schedule front & center.

It also sent client reminder emails prior to their scheduled booking.

start booking appointment reminder
Start Booking sends your clients a reminder email prior to their appointment.

Feature 6: Payment Platform

Of course not all appointment and booking systems will need options for payment. However, for certain industries, accepting payment at the time of booking is necessary, such as scheduling a session with an attorney or making a hotel reservation.

If a payment platform is needed, you’ll want one that is reliable and trustworthy. People are apt to avoid online remittance if a payment gateway seems in the least bit sketchy.

From the testing and research we conducted, all of the plugins in this post appeared to make the safety grade. Of course backend coding and business connections can change at any time, so always be sure to verify this information yourself.

Considering only two of the plugins in our list allowed for payment platform options in the free version, they easily rose to the top of the list on this feature.

Start Booking

Start Booking is a standout in this category, since payment processing seems to be a rare commodity in these free plugins.

Setup is easy. First you need to add your credit card in Billing, then connect Stripe through Integrations. Both of these steps are done directly from your account page in StartBooking.com.

If you don’t already have a Stripe account, you can set one up first (it’s quick & easy).

start booking stripe integration
Start Booking has a built in integration for popular payment platform Stripe.

Once you’re connected, you can select to require customers to pay at the time of booking (there’s a checkbox for it on the popup).

start booking booking flow payment
The payment screen in Start Booking’s booking flow.

Caveat: in order for the payment requirement to be enforced at time of booking, you must set a price of US $2.00 or above.

A note of thanks to Start Booking’s expert and responsive support team, who helped me over that hurdle. (Especially since I was using their free version!)

Once your payment platform is in place, bookings will function dually for you: when they’re made, you’ll get paid!

Hotel Booking Lite

Hotel Booking Lite is the second of two plugins that has payment options available in the free version.

Since we haven’t mentioned this plugin until now, I wanted to provide a quick rundown on its other notable features:

  • Visual customizations – choose your colors for automated emails, choose your booking calendar theme (16 available color options)
  • Parameter customizations – too numerous to mention all, but here’s a selection: custom page URLs, check-in/out times, search options, bed & room types, custom admin & client booking emails, currency type, date picker, seasons, rates, booking rules, reports, and much more

Our focus here is payment options, and Hotel Booking Lite offers a number of payment platforms in their free version of their plugin: Pay on Arrival, Direct Bank Transfer, and PayPal. Additional platforms are available in paid tiers (2Checkout, Stripe, & more).

They also offer a Test payment option, which is a great way to see for yourself how their setup works.

Play hotelier in style with Hotel Booking Lite.

Tip: make sure you select “Confirmation upon payment’’ in General Settings > Booking Confirmation > Confirmation Mode, or your checkout platform will not work.

Payment transactions worked smoothly and efficiently, from start to finish, and every screen was pleasant to look at and contextually fitting.

To allow guests to pay with a card instead of a PayPal account requires setting up a PayPal Business account through Hotel Booking Lite’s settings.

A final note regarding Hotel Booking Lite… when I couldn’t get something to work the way I wanted, I reached out via their live chat. Support responded in under a minute, and spent more than an hour patiently answering my questions. Again, considering I was trialing a free membership (and they had no idea who I was), I was impressed.

Plugins Free vs Paid

Regarding the premium upgrades you can purchase to add payment options (and more features), I’ve put together a chart with details per plugin.

pricing table
Payment platform and price range details for all eight of the booking and appointment plugins that passed our testing for inclusion in this review.

Feature 7: Overall Use and Aesthetics

When it comes to judging aesthetics, it’s often a “beauty is in the eye of the beholder” type of assessment, and thus varies greatly.

What I’m really rating here is how all of the combined elements come across…

  • Is the booking content (both on the website and in any automated communications), pleasant/sensical or dull/confusing to look at?
  • Is the layout practical, with the most helpful at-a-glance information where you’d expect to see it, or do you have to scan around to find what you’re looking for?

This is the in-a-nutshell, considering-all-the-elements-as-a-whole score.

Cream of the Crop:

Simply Schedule Appointments

Simply Schedule Appointments is my favorite of all the plugins I tested.

Anything I tried to set up was easily doable, and I had a treasure trove of options in customization. Even the error page made me smile.

ssa cute page text content & graphics
Simply Schedule Appointments coming through with the cuteness. Who wouldn’t love to look at these fun messages?

Also, everything functioned as expected, and was enjoyable to look at.

Start Booking

Start Booking is as efficient as it is useful, and easily nabbed second place.

Whether you choose to view your backend calendar on the WP dash, or from Start Booking’s site, you’ll see a neat summary. And if you are on Start Booking’s site, you also get a lot of built-in functionality on your calendar.

start booking cal dash views (WP+SB site)
Start Booking’s website dashboard gives you bookings at-a-glance, filtering options, and “take action” functionality.

And there you have it! We’ve gone through all the key features in our list now, highlighting which plugins performed best on each one.

On the whole, all of the free plugins in this post provide definite value when it comes to digital booking services. It’s the reason we selected the ones that we did.

That said, many of them will get a significant boost of capabilities and finesse of features by going pro. Especially for complex or large hospitality/customer-service-centric businesses, it might be worth it to look into some of the paid upgrades or addons.

In the end, it really depends on the level of booking features you need, and what premium options matter to you enough to be willing to pay for them.

Who Can Benefit From Booking and Appointments Plugins?

When you think about “making a reservation”, probably restaurants or hotels come to mind. And when you think about “booking an appointment”, you’re likely to think about service providers, like physicians and advisors.

In the end, though, it’s all the same. You want to give your end-user an easy way to reserve time or space (or both) while minimizing how much interaction you actually have to do to get it done.

Who really stands to benefit from an appointment or reservation system in WordPress?

  • Developers! (or any WordPress freelancer, really)
  • Marketers
  • Restaurants, hotels, and other accommodation providers
  • Travel agencies (e.g. airlines, vehicle rental companies)
  • Beauty, health, and wellness (e.g. salons, personal trainers, massage therapists)
  • Physicians and other healthcare providers
  • Advisors, coaches, and consultants
  • Attorneys, accountants, and financial planners
  • Service professionals (e.g. cable companies that schedule installation services; pickup & delivery services like Uber)
  • Entertainment (e.g. concert tickets; bouncy castles for kids’ parties)
  • Education (e.g. scheduling a tour, meeting with a guidance counselor, signing up for classes, etc.)

Many of these industries and professionals have already embraced the online reservation system.

The Benefits for Hospitality

Hospitality providers are probably the most common use case for booking systems right now and theirs is an example many industries would be smart to follow.

  • According to Statista, the online travel market size worldwide reached the $433.2 billion mark in 2021, and is expected to reach $690.71 billion by 2026.
  • StratosJets states that 83% of US adults choose to book their trips online.
  • American travelers spend 29% more time on average booking a trip in 2022 than they did in 2019, per TravelPerk.
  • According to Statistic Brain, 65% of travel reservations made online occur on the hotel’s primary website, not on a combined business site (like Hotels.com).
  • SaleCycle indicates that in 2022, nearly half (44%) of online bookings are done from a mobile device – so you know that responsive design has been very well-executed on travel sites.
  • Rezdy found that almost 40% of travel-related reservations (those for tours, entertainment, and other activities) are done online each year.

The Benefits for Healthcare

There are other industries starting to pick up the pace on adopting reservation systems, too. Healthcare is likely next in line as the time savings are extremely beneficial for both parties involved in the process of scheduling appointments.

Zippia researched booking trends, and found that online booking is significantly tied to cash flow, when it comes to appointment-based companies. The following metrics support this:

  • Businesses gain an average revenue increase of 27% when using an online booking system, with 67% of patients preferring online booking. In some cases, local businesses that added online booking systems to their website increased their revenue up to 120%.
  • According to general appointment scheduling statistics, clients make 46% of all appointments online, with 34% of these done after the office is closed. This significantly reduces the burden on staff to manage and schedule appointments over the phone or other means.
  • $150 billion per year is estimated as the annual loss from missed medical appointments. Providing online bookings can significantly reduce the number of appointment no-shows.

Then, there’s Patient Pop, who’s surveyed patient and provider findings regarding online reservation systems parallel what Zippia found:

  • Over 40% of patients said they preferred to make appointments online.
  • Patients appreciated the greater flexibility and accommodation of being able to schedule their own appointments, as 26% of them scheduled same day or next day appointments online.
  • Staff, on the other hand, enjoyed the freedom from having to field those appointment requests. They reported that each takes approximately four minutes to schedule.
book happy logo (jgb faux co)
Booking appointments with a digital scheduling assistant helps business relationships grow, while saving time, energy, and costs.

The Benefits for All

Those may be the more popular examples of businesses reaping the benefits of online reservation systems, but there’s a lot more to be gained from using one.

For example, a digital scheduling assistant:

  • Lends itself to a more professional appearance for your business.
  • Provides the self-service option that customers appreciate.
  • Saves you time, not having to schedule appointments or reservations yourself.
  • Maximizes the number of reservations you’re able to take if you enable same day or next day bookings.
  • More accurately displays upcoming schedules and availability.
  • Collects all necessary details from the customer before the appointment, so you can prepare ahead of time.
  • Allows you to make more money with upsell and cross-sell opportunities.
  • Guarantees you’ll at least make back money on the time lost to no-shows (if you add a pre-payment requirement).
  • Accepting reservations 24/7, making it more convenient for people who don’t have time during the day to make them.
  • Offers better predictive capabilities for your business’s sales.
  • Gathers other available data that can help you adjust your services or products based on the most popular requests, day and time requests, etc.

Booking and Appointment Scheduling is a Great Addition to Any Professional Website

Whether it’s for your own site or your clients, the benefits of integrating a WordPress Appointment Booking plugin are clear:

  • Less time and hassle in scheduling
  • More convenience and flexibility for your customers

Not to mention the revenue opportunities. Reservation systems remove all that friction so appointments can be a one-and-done kind of thing. Painless, simple, and confirmed.

Oh, one last thing, a nice perk for our readers: HubSpot and Simply Schedule Appointments are part of our partner program, so you can avail yourself of the discount through WPMU DEV, should you decide to purchase the premium version of these plugins.

Keep in mind that our member support team is always available, 24/7/365, and not just for our products but for all things WordPress. (Yep, that includes these plugins – and any others).

If you’re not already a member, check out our free trial offer. You can give us a go for 7 days, for free, no obligation, and if you’re not fully satisfied we’ll part ways on a positive note.

Editor’s Note: This post has been updated for accuracy and relevancy. [Originally Published: April 2020 / Revised: October 2022]

Delete and rewrite a word entered, in a spelling-corrector app in Python?

Hello,
I have created a spelling corrector for a project and currently I am struggling on making it work in real-time application (on-the-fly)
By this I mean, that I am reading the input of the user (anywhere on the Windows OS - not only in python shell) with the python keyboard library and when the user enters a space I am checking the spelling of the entered word.
If it is correct, the program does nothing but if it is wrong the program deletes the wrong word and re-writes the correct one.
I have implemented the last functionality of deletion-and-rewrite with the pynput (press and release), but the performance is nowhere near good.
This is the last serious functionality I should implement, so any help would be crusial.
An example of the code that I am using is shown below.

import keyboard
from pynput.keyboard import Key,Controller

pynput_keyboard = Controller()
word_list = ['one', 'two', 'three'] # we suppose these are the correct words
correct_word = "CORRECT"

string = ""
while True:
    event = keyboard.read_event()
    if (event.event_type == keyboard.KEY_DOWN):
        key_pressed = event.name
        print("Key pressed is {}".format(key_pressed))
        print("String is {}".format(string))
        if (key_pressed == "space"):
            if (string in word_list):
                string = ""
                pass
            else :
                for i in range(len(string) + 1):
                    # print("IN DELETION")
                    pynput_keyboard.press(Key.backspace)
                    pynput_keyboard.release(Key.backspace)

                for i, char in enumerate(correct_word):
                    # print("in rewrite")
                    pynput_keyboard.press(char)
                    pynput_keyboard.release(char)
                pynput_keyboard.press(' ')
                pynput_keyboard.release(' ')
                string=""

        elif (key_pressed in "abcdefghijklmnopqrstuvwxyz"):

            string = ''.join([string, str(key_pressed)])

I added a sample code for better understanding and a screenshot indicating an error that occurs if a user types very fast.
The main problem here is that the program delays on deleting and writing the correct word and the user overlays the words written from the program.
Are there any effective ways of doing the above and correcting the problem that occurs?
Thanks in advance.

img.png