Add a Little Pumpkin Spice to Your WordPress Admin This Autumn

Autumn is my favorite time of the year. On some weekends, I like to drive through my old hometown with the windows rolled down. I crawl through the school zone at 25 mph and breathe in the football field’s freshly cut grass. All those memories of blood, guts, and glory under the Friday night lights flood back. Nervous homecoming dances. Hayrides next to the girl who actually agreed to accompany me for the evening. It is a time of festivals, candied apples, and the lingering heat of an Alabama summer that refuses to fade away.

It was always a time of magic and memories, and now it is also the season for pumpkin spice lattes. With a couple of short weeks left before autumn hits, stores and shops are already gearing up for it.

Love it or hate it, nearly everything has a pumpkin spice flavor now — even the WordPress admin interface.

Ben Byrne, the co-founder of Cornershop Creative, released Pumpkin Spice Admin in the past week. It is a WordPress plugin that brings the sights of the autumn season front and center.

Color scheme of the WordPress dashboard screen when using a pumpkin-spice inspired palette.
Dashboard screen when using Pumpkin Spice Admin.

Never let it be said that I am not a fan of the more whimsical WordPress plugins. One of the joys in my life is seeing these creative attempts at throwing a bit of fun into this thing we call the world wide web. Far too often, we focus so much on business deals and technical features that we sometimes forget to stop and enjoy something as beautiful as autumn leaves changing colors.

Even if we are not simply running a personal blog, it never hurts to install a fun admin-side theme for our own amusement, unbeknownst to our visitors. Just a little something to brighten our day when we cannot be out and enjoying nature.

The biggest downside to the plugin is that it does not rely on the standard WordPress admin color scheme system, which allows each user to select their preferred style. For solo site owners, this is a non-issue. For multi-author websites, it could be problematic if everyone is not on board with the change. I would even consider using it here at WP Tavern, but it might come as a bit of a shock to the rest of the team when they log in.

Technically, it is more than a color scheme. It adds a custom font and a falling leaves animation on each admin screen. However, it would be easy to tie those to user preferences.

At first, I was somewhat off-put by the leaves falling down on the post-editing screen. It could be an annoyance for some users, but the few that appear, quickly pile at the bottom of the browser window. It is not a continuous animation.

Pumpkin Spice Admin plugin showcased with falling leaves in the WordPress post editor.
Falling leaves on the post-editing screen.

The plugin’s font also overrules the post title, but I can live with that. In some ways, I actually prefer it. It does not affect other fonts in the editor.

Pumpkin Spice Admin will automatically stop working after the season is over. It sets itself to run only from September through November, so there are no worries if you forget to deactivate it.

I only have the plugin running in my test environment, but I am enjoying it for now. All that is missing is a pumpkin-style cursor to complete the look.

BotsCrew Review

BotsCrew is one of the best chatbot development companies out there. 

In fact, it’s already a reliable chatbot developer for innovative, customer-centric companies such as Virgin, Samsung Next, and MARS.

What sets BotsCrew apart from its competitors is its in-depth collaborative approach to chatbot development. 

Unlike other chatbot providers, BotsCrew is extremely customizable. BotsCrew works alongside you throughout the entire development process in order to bring to life a product that perfectly suits your unique business needs. 

Below, we take a look into the specifics of what makes BotsCrew the impressive solution it is and what a comprehensive chatbot solution is going to cost your business in the long run.

BotsCrew Pros and Cons

Pros

  • Intuitive, easy-to-use platform
  • Custom development
  • White label chatbots
  • Integrate with any third-party software
  • Handle inquiries across multiple platforms in a single inbox
  • Communicate in over 100 languages
  • Excellent customer support from developer’s themselves
  • Personalized analytics 

Cons

  • No free plan or free trial available
  • No mobile app
  • Quite expensive
  • No chatbot templates for DIY users

BotsCrew Features

Knowing the pros and cons is a quick way to assess whether or not BotsCrew is the right solution for you. However, taking an in-depth look at the specific features is where you’ll really find out a solution’s suitability. 

Custom Chatbot Development

Are you looking for a way to better qualify your prospects before they reach your sales team? Or perhaps you want to serve your customers faster for quick and easy troubleshooting. No matter the reason, BotsCrew can help you build a custom chatbot solution to suit your business needs. 

BotsCrew takes a hands-on approach to turning your chatbot idea into a reality and will coach you every step of the way. First, you’ll work together to create your chatbot vision based on your business needs and goals. You’ll even design your chatbot’s personality in this phase. 

Then you’ll workly closely along the way to eventually build up to a Minimum Viable Product (MVP). This is a beta version of your final chatbot and allows you to test, validate, and refine your chatbot’s design and functionality. You can even have real end-users use this version to make sure it ticks the boxes on the consumer side. 

Once you’re happy with the final product, your chatbot is ready to scale. 

Building a custom chatbot is a significant investment. But you can rest assured knowing that your dedicated account manager will have your back, every step of the way. Development is completed in iterations, so if you’re ever unhappy with the direction the chatbot is taking, you can redirect it in a moment’s notice. 

Furthermore, you’ll own your data, right from the get-go. So if in the unlikely event you decide to move away from BotsCrew, you’ll be able to take your hard work and investment with you. 

Offer Support Across Multiple Platforms

Your customers are hanging out on multiple platforms, so why not reach them on the one they fancy most? 

BotsCrew can help you build one chatbot that connects to multiple channels such as Facebook, Messenger, WhatsApp, SMS, website, and more. You can use any platform that has an open API. 

The best part is, you’ll be able to handle all inquiries in a single inbox straight out of your BotsCrew dashboard. There is no need to duplicate the bot across every single platform either. Not only will this save your customer support team from having multiple tabs open, but it will also streamline inquiries to ensure nobody is missed. 

But what if you’re a multinational company with an international customer base? 

BotsCrew can help you with that too. You see, your chatbot can be multilingual, speaking more than 100 different languages. Communicating with your customers in their own language is a great way to build a supportive and loyal customer base. It also allows you to cut costs on multilingual support. 

SaaS Platform

No matter whether you create a completely customized solution or a DIY chatbot, you’ll have access to BotsCrew’s comprehensive SaaS platform. 

BotsCrew’s SaaS platform is simply designed and easy to use, no matter your technical expertise. It’s designed to make it super easy for you to make small changes to your chatbot without needing the assistance of a developer every time.

Your chatbot will inevitably need some tweaking along the way as your customer base grows and changes. Within the SaaS platform, you’ll be able to train your chatbot to be smarter and more intuitive without needing to understand code. 

This is particularly useful for anyone starting with a DIY chatbot instead of a customized solution. You can add more questions and answers and build on existing conversations as you learn. You’ll also be able to ensure there is a seamless handover from chatbot to live chat, to make life easier for both your customers and your representatives. 

Limitless Integrations

One area in which BotsCrew really stands out for users is its limitless integrations. BotsCrew allows you to integrate your chatbot with any software you currently use–even a competing one! This is particularly impressive as it’s something no other software offers. 

All you need is for your software to have an open API and the rest is easy. And if you are struggling to integrate your tech stack, BotsCrew will guide you through the process to ensure you succeed. 

We’re talking about software such as email automation, point of sale, information sharing, accounting, CRM, analytics and reporting, and business management solutions. Seamlessly sharing important data across all software means that everyone is on the same page and there is no double handling of data.

Having the ability to integrate your chatbot with your entire software stack also means you have adjustability and scalability like never before. 

More Than Just a Sales Tool 

Think BotsCrew is only designed to help you drive sales? Think again! 

BotsCrew also has extensive experience in creating customized solutions for the healthcare industry. In fact, you could even say that BotsCrew is helping to revolutionize communication in the healthcare industry in order to improve communication between doctor and patient. 

For example, Dr. Dean is a chatbot that was created to offer patients reliable and trustworthy information about their symptoms or conditions and treatment options. It even checks on the patient a few days later to provide additional advice if it’s required. 

This kind of solution offers doctors an opportunity to connect with their patients on another level and also ensure their patients aren’t following unwarranted advice they found on Google. 

BotsCrew also places a significant focus on chatbots for genetic testing. The chatbot is HIPAA-compliant and shares important pre-test information with patients in the lead-up to their test. After all, your genetic testing counselors likely spend much of their time answering the same questions about the tests. Instead of having patients wait to get answers, your chatbot can deliver them instantly.

Furthermore, your chatbot will automatically track everything in your EMR system which saves hours of manual logging and ensures medical records are always up to date.

There have been other successful cases of non-sales-related chatbots by BotsCrew too, such as Annabot, a chatbot that is helping elderly people fight loneliness and isolation during the worldwide pandemic. There is also Ailira, a chatbot that is making legal services more widely accessible to people in Australia.

It’s easy to see that a chatbot can have many functions and capabilities and offers an array of benefits to your business.

BotsCrew Pricing and Package Options

BotsCrew’s pricing is neither straightforward nor forthcoming, but that’s because developing a custom chatbot is not a straightforward task. We had to do quite a bit of digging to understand BotsCrew’s pricing and even then, the figures we are about to share are only estimates. You’ll need to contact BotsCrew for customized pricing and package options. 

Reports suggest that BotsCrew’s DIY chatbot product starts at around $600 per month, while others suggest a total investment in the vicinity of $5,000.  

However, BotsCrew says that the estimated price range for a true, high-quality chatbot sits between $10,000 and $150,000. 

So how much is it really going to cost you? Well, only BotsCrew can tell you that. But here is what we can tell you about the costs involved in a customized chatbot with BotsCrew.

Discovery Phase

During the Discovery phase, BotsCrew will learn all about your business needs and goals, building a roadmap for your chatbot design. This phase can take anywhere between two days and six months and can cost between $5,000 and $20,000. 

Proof of Concept (POC)

Following the Discovery phase, BotsCrew will work closely with you to agree on the scope for the Proof of Concept (POC). A POC is an early model that doesn’t have all the final product’s functionality. You’ll be able to test and refine important features like chatbot design and function. 

The POC can add between $10,000 and $30,000 to your chatbot pricing. 

Minimum Viable Product (MVP)

Finally, BotsCrew builds a Minimum Viable Product (MVP) or a beta version. At this stage, your chatbot is essentially fully developed, but you’ll still have some wriggle room to modify the product and to agree on goals, estimates, and deliverables. 

An MVP costs between $15,000 and $100,000. 

From here, BotsCrew can scale the MVP to the fully-fledged chatbot. At this stage, further integrations can cost you between $1,000 and $10,000. But you’ll also have access to the BotsCrew platform where you can easily add small changes without the help of your developer. 

Although BotsCrew might be on the more expensive side, it is far more customizable than any of its competitors. In time, your chatbot will also save you in training and wages of live customer support representatives, while still providing your prospects with excellent customer service. 

To get a rough idea of what your ideal BotsCrew chatbot might cost you, take this quick quiz

BotsCrew Reputation

BotsCrew has a reputation for developing highly customized, professional chatbots from scratch. The expert development team is transparent, attentive, and proactive throughout the entire development process. 

One of the things that stand out for most is the limitless integration opportunities. Users say that this aspect makes the software extremely flexible and allows for the smooth transfer of data across all business systems. 

Users also really like how intuitive and easy-to-use the platform is and that it allows you to handle inquiries from multiple platforms from a single dashboard. 

One thing that BotsCrew is lacking is a mobile app. This means that users cannot easily review inquiries or provide support to customers on the go and must revert to the desktop app instead. 

It’s also quite expensive to develop a chatbot with BotsCrew, but users acknowledge that its customization is far beyond that of competitors. And although there is no free plan or trial available, BotsCrew is happy to take you through multiple demos of chatbots it has developed in the past to provide insight into its capabilities. 

So if you’re a medium business or large enterprise looking to better qualify your prospects, serve your customers faster, or cut back on the number of support representatives you employ, BotsCrew is the perfect solution for you. It will help you do all this and more without compromising the level of customer service you already provide.

But if you’re a small business, startup, or want to validate the idea to higher management and don’t have the budget for a customized solution, platforms like Drift, Chatfuel, or Botsify would be better suited to your needs.

Java Functional – Optional Chaining

Introduction

Before Java 8, methods had to throw an exception or return null, with neither of which approaches were perfect. Optional, OptionalInt, OptionalLong, and OptionalDouble were introduced in Java 8 to represent values that might possibly be null.

Optionals have two internal states, empty or present. An Optional is empty if the underlying reference is null. An Optional is present when the underlying reference is not null.

Although there are many ways to use Optionals, chaining optionals usually provides for writing clear and concise code, especially when complex filtering is required.

Goals

At the end of this tutorial, you would have learned:

  1. How to use Optional methods map() and filter().
Prerequisite Knowledge
  1. Java 8.
  2. Java functional concepts: Optional, method reference.
Tools Required
  1. A Java IDE with at least JDK 8 support.
Project Setup

To follow along with this tutorial, perform the steps below:

  1. Create a new empty Java 8+ project.

  2. Create a new package com.example.

  3. Create a new Java class called Entry.

  4. Create the main() method inside the Entry class.

  5. Create two LocalDate constants inside the Entry class like below:

     private static final LocalDate GEN_ALPHA = LocalDate.ofYearDay(2010,1); //1
     private static final LocalDate GEN_Z = LocalDate.ofYearDay(1997, 1); //2
  6. Add a convenient method for checking if a LocalDate instance is considered a Gen Z.

     private static boolean isGenZ(LocalDate d){ //7
        return (d.isEqual(GEN_Z) || d.isAfter(GEN_Z)) && d.isBefore(GEN_ALPHA);
     }
Project Explanation

Our project is very simple to understand. The two LocalDate constants declared on lines 1 and 2 represent the beginning date for 2 demographics cohorts: Alpha and Gen Z. The convenient method declared on line 7 contains logic to check whether a date(birthday) can be classified as Gen Z.

How to NOT use an Optional

The method Optional#get should never be used directly without checking whether the Optional is present(or NOT empty). If Optional#get is called directly, the program will throw NoSuchElementException at runtime.

Add this method inside the Entry class.

private static void noCheckOpt(){ //8
   Optional<LocalDate> opt = Optional.empty();

   LocalDate ogDate = opt.get(); //9

   if(isGenZ(ogDate)){
       LocalDate modifiedDate = ogDate
               .plusYears(1)
               .plusMonths(5)
               .plusDays(10);
       System.out.println(modifiedDate);
   }
}

The method above tries to get the underlying LocalDate object from an Optional, and then tries to create a new date in the if block only if the ogDate is a Gen Z date.

The code snippet deliberately instantiated an empty Optional to simulate a situation where an Optional object received from an API can be empty. Professional code should never be written like this.

After calling the method above from main(), we can see that the code throws NoSuchElementException as expected.

Basic Optional value check

To avoid the program throwing NoSuchElementException, the most basic thing that a developer can do is to at least check the Optional object whether it contains a value with Optional#isEmpty or Optional#isPresent.

The method below adds the presence check.

private static void checkOpt(){ //10
   Optional<LocalDate> opt = Optional.empty(); //11

   if(opt.isPresent()){ //12
       LocalDate ogDate = opt.get(); //13
       if(isGenZ(ogDate)){ //14
           LocalDate modifiedDate = ogDate //15
                   .plusYears(1)
                   .plusMonths(5)
                   .plusDays(10);
           System.out.println(modifiedDate);
       }
   }
}

If we comment out the call to the previous method, and then call this method, our code should not be throwing any exception anymore. It finds that the Optional opt is empty at line 12, so it stops executing the rest of the method.

But this method has a problem. It is very verbose. By having to check whether the Optional is empty AND whether the underlying LocalDate is Gen Z, we now have nested if blocks. We also added two variable declarations.

Optional Chaining

To improve readability, we can use builtin Optional methods Optional#filter and Optional#map like the code snippet below.

private static void optChain(){ //16
   Optional.<LocalDate>empty() //17
           .filter(Entry::isGenZ) //18
           .map(d -> d.plusYears(1).plusMonths(5).plusDays(10)) //19
           .ifPresent(System.out::println); //20
}

To understand how this method works, let us review what the previous method was doing, from start to finish:

  1. Check whether the Optional is empty.
  2. Check whether the underlying LocalDate object is a Gen Z.
  3. If it is Gen Z, transform it.
  4. Prints out the LocalDate.

The filter() and map() methods automatically perform the Optional emptiness check for us, and return an empty Optional object downstream, so we do not have to write the checks ourselves. It is only at the last step that we have to call ifPresent(), and ifPresent() is certainly more readable than a manual if block, therefore it increases readability.

Another added benefit of using filter(), map(), and ifPresent() is that we can pass a lambda or a method reference into them, increasing readability even more.

Solution Code
    package com.example;

    import java.time.LocalDate;
    import java.util.Optional;

    public class Entry {
       private static final LocalDate GEN_ALPHA = LocalDate.ofYearDay(2010,1); //1
       private static final LocalDate GEN_Z = LocalDate.ofYearDay(1997, 1); //2

       public static void main(String... args){ //3
           //noCheckOpt(); //4
           //checkOpt(); //5
           //optChain(); //6
       }

       private static boolean isGenZ(LocalDate d){ //7
           return (d.isEqual(GEN_Z) || d.isAfter(GEN_Z)) && d.isBefore(GEN_ALPHA);
       }

       private static void noCheckOpt(){ //8
           Optional<LocalDate> opt = Optional.empty();

           LocalDate ogDate = opt.get(); //9

           if(isGenZ(ogDate)){
               LocalDate modifiedDate = ogDate
                       .plusYears(1)
                       .plusMonths(5)
                       .plusDays(10);
               System.out.println(modifiedDate);
           }
       }

       private static void checkOpt(){ //10
           Optional<LocalDate> opt = Optional.empty(); //11

           if(opt.isPresent()){ //12
               LocalDate ogDate = opt.get(); //13
               if(isGenZ(ogDate)){ //14
                   LocalDate modifiedDate = ogDate //15
                           .plusYears(1)
                           .plusMonths(5)
                           .plusDays(10);
                   System.out.println(modifiedDate);
               }
           }
       }

       private static void optChain(){ //16
           Optional.<LocalDate>empty() //17
                   .filter(Entry::isGenZ) //18
                   .map(d -> d.plusYears(1).plusMonths(5).plusDays(10)) //19
                   .ifPresent(System.out::println); //20
       }

    }
Summary

Manually checking for Optional presence works, but there are a lot of convenient methods that we can use together with lambdas and method reference sugar syntax. Surely it does cost some extra time to look them up, but the benefits to readability would be worth it.

The full project code can be found here https://github.com/dmitrilc/DaniWebJavaOptionalChaining/tree/master

How to use Text Blocks in Java 15

Introduction

Java 15 introduced Text Blocks. The main reason behind Text Blocks is that programmers can write multiline strings without having to specify escapes for the most common scenarios.

Goals

At the end of this tutorial, you would have learned:

  1. How to store multiline String using Text Block.
  2. Some edge cases to watch out for when using Text Blocks.
Prerequisite Knowledge
  1. Basic Java
Tools Required
  1. A Java IDE with support for JDK 15+.
Syntax

A Text Block can be used anywhere a String literal can be used. Instead of one pair of double quotes used in String literals, a Text Block uses 3 pairs of double quotes.

Here is a traditional multiline String of an HTML document:

    var html = "<!DOCTYPE html>\n" +
           "<html>\n" +
           "    <head>\n" +
           "    </head>\n" +
           "    <body>\n" +
           "        <p>Hello World</p>\n" +
           "    </body>\n" +
           "</html>";

And here is a Text Block:

    var html = """
           <!DOCTYPE html>
           <html>
               <head>
               </head>
               <body>
                   <p>Hello World</p>
               </body>
           </html>
           """;

As you can see, the version using the Text Block no longer has to add the new line character (\n) and concatenate every new line. Removing the need for String concatenation also removes all of the extra double quotes () and plus signs (+), improving readability.

Edge Cases

Text Block has compiler support, so syntax errors are mostly obvious. But there are quite a few edge cases that programmers should watch out for when working with Text Blocks.

The Final New Line

If the closing triple quotes are on a new line of their own, Java will insert an extra new line character (\n) at the end.

This method will return a String with an extra new line at the end.

private static String withNewline(){
   return  """
           Hello
           World
           """;
}

While this method will return a String without an extra new line.

private static String noNewline(){
   return """
           Hello
           World""";
}

Both are valid code that will compile, but the behavior will not be flagged by IDEs and can certainly catch programmers off guard.

Leading White Space

IDEs tend to insert extra spaces and tabs when formatting our code, but how does javac (the compiler) determine whether some white space is part of the String?

Take a look at the withNewline() method below. There are at least 16 spaces from the beginning of the line to the word Hello.

leading_white_space.png

To simplify the concept, we only need to remember that the starting position of the closing triple quotes is the cutoff point. Everything before that will be discarded by the compiler.

   private static String zeroSpaces(){
       return  """
               Hello
               World
               """;
   }

   private static String eightSpaces(){
       return  """
               Hello
               World
       """;
   }

   private static String sixteenSpaces(){
       return  """
               Hello
               World
""";
   }

The 3 methods above exemplify the different positions of the closing triple quotes. They print:

Hello
World
        Hello
        World
                Hello
                World

When a final new line is purposely skipped by the programmer, you must use the String#indent method to set the indentation of the Text Block.

private static String fourSpaces(){
   return """
           Hello
           World""".indent(4);
}

Output:

    Hello
    World
Trailing White Space

Just like leading white space, trailing white space is also stripped out by the compiler. There are 3 official strategies that you can adapt to preserve trailing white spaces: character substitution, character fence, and octal escape sequence for space. You can find the code for these methods below.

private static String charSub() {
   return """
           Hello$$$$
           World
           """.replace('$', ' ');
}

private static String charFence() {
   return """
           Hello   |
           World|
           """.replace("|\n", "\n");
}

private static String octalEscape() {
   return """
           Hello\040\040\040
           World
           """;
}

It is hard to tell if the output actually preserved the trailing white spaces, but it is possible if you place your cursor at the end of the output in your IDE terminal. In IntelliJ, I can highlight the extra white spaces on the lines that were preserved like the screenshot below.

asd.png

Solution Code
package com.example;

public class Entry {

   public static void main(String[] args){

   }

   private static String noBlock(){
       var html = "<!DOCTYPE html>\n" +
               "<html>\n" +
               "    <head>\n" +
               "    </head>\n" +
               "    <body>\n" +
               "        <p>Hello World</p>\n" +
               "    </body>\n" +
               "</html>";

       return html;
   }

   private static String textBlock(){
       var html = """
               <!DOCTYPE html>
               <html>
                   <head>
                   </head>
                   <body>
                       <p>Hello World</p>
                   </body>
               </html>
               """;

       return html;
   }

   private static String withNewline(){
       return  """
               Hello
               World
               """;
   }

   private static String noNewline(){
       return """
               Hello
               World""";
   }

   private static String zeroSpaces(){
       return  """
               Hello
               World
               """;
   }

   private static String eightSpaces(){
       return  """
               Hello
               World
       """;
   }

   private static String sixteenSpaces(){
       return  """
               Hello
               World
""";
   }

   private static String fourSpaces(){
       return """
               Hello
               World""".indent(4);
   }

   private static String charSub() {
       return """
               Hello$$$$
               World
               """.replace('$', ' ');
   }

   private static String charFence() {
       return """
               Hello   |
               World|
               """.replace("|\n", "\n");
   }

   private static String octalEscape() {
       return """
               Hello\040\040\040
               World
               """;
   }

}
Summary

Because we have given up precision for convenience, it is important to keep these edge cases in mind when working with Text Blocks, especially when storing white space-sensitive documents. For example, XML-based documents are more forgiving than something like Python, Yaml, when white spaces are used incorrectly.

You can find all of the code used in this article here https://github.com/dmitrilc/DaniWebJavaTextBlock/tree/master

Creating Secure Private Networks With ZeroTier VPN

Introduction

Connecting remotely to computers remains a challenge.  The industry’s response to that is VPN.  ZeroTier is a popular VPN platform for creating secure private networks.  It helps safely connect to your machines from anywhere in the world and safely access servers in the cloud. It enables intranet applications for external users. Last but not least, it can be used to provide remote assistance to family and friends, while keeping them safe from bad wolves out there.

Best of all, ZeroTier is free for up to 50 connected machines. Ability to manage it with REST API and scripts makes it particularly interesting for advanced users.

Do You Need a Little Console Comic Relief? Introducing The DEV’s Pixels!

WPMU DEV now has DEV-related comics and cartoons that are free to use on your websites and social media. Plus, regular caption contests are coming soon (with great prizes, FYI).

Introducing The DEV Pixels: A fully dedicated comic section for WordPress developers, designers, and tech-geeks in general. In a nutshell — comics made for you! And also designed to help your agency or freelance business (more on that later in this article).

Along with our award-winning plugins, hosting, The Hub, and other goodies that we offer, we figured that we might as well throw some comics in the mix, too. And, like a lot of our plugins, we allow them to be used on your WordPress sites (or social media, apps, etc…) for free!

Comics will be regularly updated on our site, emails, and social media.

So, do you want a peek at what we have in store? 

There’ll be gems like this…

Funny image of cavemen talking about the dawn of coding.
A loooooong time ago…

…familiar characters such as this…

Waldo on a smartphone with Google wanting to use his location.
Ouch.

…and some nutty ones.

A robot trying to solve CAPTCHA.
It’s not easy being robotic.

Some will make you burst out laughing like an emoticon; others will make you cringe like you do when encountering a console error. At the end of your long working remotely day, we’ll be sure to have some that you’ll enjoy.

A Quick Look Around

The DEV’s Pixels is still in development, but here’s a glance at what we have so far and what you can do with the comics. You’ll also see how they can be beneficial for you, beyond just a laugh.

Access the Comics

Quickly access The DEV’s Pixels from wpmudev.com’s homepage. What’s nice is you don’t even need to be logged in to view! This makes it especially easy to access when on your mobile or when you have no reason to log in.

The DEV’s Pixels is located towards the bottom of our Resources area.

Location of The DEV's Pixels.
Its name is one of a kind and easy to find.

This takes you to The Dev’s Pixels Homepage. Here, the latest comics will be featured on top and updated regularly.

The Dev's Pixels homepage.
There will be a comic for everything dev-related! And more added regularly.

The homepage features thumbnails of each cartoon, the tag(s) of each comic, an option to download, opt-in for a subscription to The Dev’s Pixels, and a link for each one to share. However, for a better look at each one, you’ll want to…

View Individual Comics

Thumbnails are nice, but to check out each comic up close and personal, click on the comic thumbnail that you’d like to check out.

This will enlarge it, giving you a better view.

Is this one…bad?

Download or Share Comics (and how you can capitalize on them)

As I touched on, you can download or share any comic you see! It’s entirely free and they’re all up for grabs. All we ask is that you link back to WPMU DEV when doing so (e.g. source: wpmudev.com).

Sharing these comics on your website, social media, emails, ebooks, and newsletters provides added engagement and enjoyment for your users! Content that includes cartoons gets a lot of attention.

As stated by Bob Mankoff, former cartoon editor of The New Yorker:

“If a picture is worth a thousand words, a cartoon is worth 500,000.

“Cartoons are funny that way — no other art form can communicate an idea quicker or more effectively. Humor disarms, connects, and then communicates in a fraction of a second. In a world where every eye is bombarded daily by thousands of messages, cartoons command attention and convey your message instantly.”

To use the comics, you’ll see the option to Share or Download below the thumbnails.

The download and share buttons.
Click on any option that you’d like!

Clicking the download button will immediately download the comic to your computer. If you tap share, it will link you to the particular comic you want to share.

The sharable link for the comics.
The sharing link can go on your WordPress site, social media, emails — you name it!

Additionally, you can access the download button or link from the enlarged comic.

Link to share comic on enlarged image.
It’s all instantly available for your use!

They’re free, easy to use, and can benefit your site more than you can imagine with email opens, shares, likes, and engagement! Consider them yours.

Search Comics

There are two ways to search for comics: Tags and the Search Bar.

Searching comics can be done from our Search Bar at the top of the homepage. From here, type a category of interest, and all results will appear.

Type any category that you’d like to search.

Tags are located below each comic’s URL. They’re also below each thumbnail on the homepage.

If you like that category, click on the Tag, and it will bring up all the other comics tagged under that category.

The tags area for the comics.
As you can see, the tags on this one are Coding and Web Development.

Can’t find what you want? Please keep checking back as we update regularly, or shoot us a request! We will actively produce comics that are in demand.

Engage

We have several ways of engaging with the comics. One will be our Caption Contest (which I’ll get to discussing next), and another way is to leave your comments!

Each comic has a comment area, so you can let us know what you think, provide feedback, add a funny gag — anything!

Plus, you’ll find these on our social media accounts (Instagram, Facebook, and Twitter), where you can engage, share, and like them as you wish.

Caption This! The DEV Pixel’s Caption Contests

Along with the regular comics, soon you can join in on the fun! We’re going to be having Caption Contests, where your participation will earn you Hero Points and a shot at victory by having the best, funniest caption.

Oh, and we’ll be dishing out some amazing prizes (free hosting, anyone?).

caption contest cartoon.

Your caption goes here!

To get an idea of what a caption contest looks like, check out The New Yorker’s or CartoonStock. Ours will be similar, just a bit techier.

It’s coming soon, so get those creative juices flowing.

Subscribe!

Be sure to never miss a comic and Subscribe! When on the main page or below each individual comic, you’ll see an area where you can signup to get The Dev’s Pixels delivered right to your inbox.

Where you subscribe to The Dev's Pixels.
Subscribers get other useful WPMU DEV information, too!

It’s free, and you’ll never miss a comic.

Who the Heck Are We?

There are other WordPress/Dev comics, but we hope to bring WordPress comics more into the mainstream. After all, with WordPress being so prominent, there’s no reason why humor revolved around it shouldn’t be either, right?

That being said, we feel eligible to step up to the challenge of creating the best WordPress comedy around.

All the comics are created in-house, specifically for WPMU DEV. They’re currently produced by syndicated cartoonist Nate Fakes (hey, that’s me) and illustrator Natasha Borg.

Nate Fakes Image

Nate has produced comics for MAD Magazine, Red Bull, 21st Century Fox, and numerous other companies and publications. Plus, he has a syndicated series, Break of Day, that’s been published in print and online for over a decade.

Natasha Borg image

Natasha just graduated from University and has worked as our WPMU DEV illustrator for close to two years now. She’s responsible for the most excellent banners, graphics, and illustrations found throughout the WPMU DEV blog and social media.

Plus, we have a talented team of writers and developers behind the scenes to help clue us in on what’s funny and contribute (when they’re not slacking on Slack).

We Hope You’re Drawn to The DEV’s Pixels!

The DEV’s Pixels is an exciting new feature that we know you’ll enjoy. We also hope you take advantage of sharing the comics wherever you feel fit, even if that includes printing one out and hanging it on your MacBook.

As you can see, along with just enjoying them for fun — they can be valuable for your business! Hopefully, you’ll see for yourself the attention-grabbing superpowers of comics.

Be sure to check out The DEV’s Pixels homepage here and subscribe! And we’ll be announcing the caption contests soon. Get in the loop by following us on Facebook, Twitter, and Instagram.

Stay tooned for more!

What Is Segmentation in Operating System?

The idea of segmentation In OS is similar in function to paging, which is used to manage memory. Segmentation is a way to divide the user program and data into segments. Segmentation and paging are two different things. Each page in paging has a fixed size, while segments have a variable size.

Segmentation maps the user's view onto actual physical memory. We will briefly discuss segmentation and its workflow in the next section. We will also discuss segmentation using an example and conclude the discussion with some advantages and disadvantages.

Collective #678




Developer Decisions For Building Flexible Components

In this article, Michelle Barker walks us through the process of taking a seemingly simple design for a text-and-media component and deciding how best to translate it into code, keeping in mind the needs of both users and content authors.

Read it




YT-DLP

A youtube-dl fork based on the now inactive youtube-dlc. The main focus of this project is adding new features and patches while also keeping up to date with the original project.

Check it out




Using the platform

Elise Hein shows how important it is to “know the platform” and be able to develop web apps without frameworks or build tools.

Read it



Pollen

Pollen is a TailwindCSS-inspired library of CSS variables for rapid prototyping, consistent styling, and as a zero-runtime utility-first foundation for your own design systems.

Check it out






SVGOMG

Jake Archibald released a new version of this great tool powered by SVGO v2.5.0.

Check it out




Madbox

Madbox is a mobile gaming company and for their new website they collaborated with Bruno Simon. There’s also this awesome little game that you can play in the browser.

Check it out


The post Collective #678 appeared first on Codrops.

Modeling and Loading Data at Scale

Back in April we hosted an online conference for our community, Orbit 2021, and in listening to Henning Kuich, Dan Plischke, and Joren Retel from Bayer Pharmaceuticals, the community got a glimpse into how a team within Bayer Pharmaceuticals uses TypeDB to accelerate their drug discovery pipelines.

Objective

The team at Bayer fundamentally wanted to understand diseases better so that they can create better therapeutic interventions.  A deeper understanding of diseases enables the identification and development of novel therapeutic interventions that have little to no side effects.

Make Spinnaker Even Better Using Armory

Introduction

Successful teams innovate often and deliver frequently. But because they move so fast, one of their challenges is ensuring that the rapid pace of releases doesn’t break their product. As more and more features are added, the risk of broken releases increases. 

As a solution, DevOps teams often look to Spinnaker—an open source deployment tool that helps teams to deploy quickly and consistently. But there’s an even more powerful solution available. Armory—which is built on top of Spinnaker—gives teams all the benefits of Spinnaker, but adds mission-critical feature extensions and enterprise-grade stability.

Is Cloud-Native Security a Must?

Change is the only constant and is inevitable.  IT landscape has changed over some time in the cloud technology space.  Enterprises are moving towards cloud-native areas and containers, Kubernetes, serverless frameworks.  Cloud-native technology has brought many benefits for enterprises, from managing the infrastructure, deployments, and scalability in public, private and hybrid clouds.  This transition is helping enterprises apply cloud-native rationales in their software development to increase productivity, agility, and saving cost radically, but it brings obstacles simultaneously.  There is a saying: "The greater the barrier, the more glory in overcoming it."

Evolution of Cloud

With the agility in IT Systems, decisions also change across time.  For example, earlier on, we had an era of on-premises servers where businesses were maintaining their servers, and now the same companies are moving to the Cloud.  Every time we go through these kinds of changes, the whole strategy of that business changes.  Let's try to understand it via one example; if today I am using Azure Cloud and my complete tools, the process revolves around it; but what if tomorrow, the business decides to move to AWS?  At that time, will my decision still hold?  Do I need to start from scratch?  With cloud-native, this decision is easy because now businesses need not worry about these changes as cloud-native provides that freedom.  If cloud infrastructure is well designed and architectured, it will show resiliency/elasticness against the outages or downtime.

Is This Considered Spam?

We are getting a burst of posts all from IP 180.188.224.184

Wouldn't be a concern except they are all similar in content but from five different usernames (they come in pairs). Anything to be concerned about? If it was on the up-and-up, why use multiple accounts?

Jason_54    How do I choose a router for my home?
Jason_54    How do I setup my tp-link router for the first time?
aaron_30    How do I log into my Roku account?
aaron_30    Why You Must Experience Orbi Login At Least Once In Your Lifetime?
jos_387     The Millionaire Guide On Dlinkrouter.local To Help You Get Rich?
jos_387     What I Wish Everyone Knew About Router.asus.com.
david_229   Learn From These Mistakes Before You Learn Re.rockspace.local.
david_229   The Biggest Contribution Of Tplinkwifi.net To Humanity.
james_161   How do I setup my Amped Wireless Extender?
james_161   5 Common Mistakes Everyone Makes In Myrouter.local.

Micronaut JPA Application Performance in AWS Lambda

Introduction

In this article, we will be looking into how we can deploy a Micronaut application using GET, PUT, and POST, which can be called using an API Gateway. Then we will compare its performance when deployed with JVM runtime and as a native image.

We will also be focusing on creating an application that can be deployed on AWS Lambda and then calling the application as if it's being called using an API Gateway. 

How to Put Your WordPress Site in Maintenance Mode

Do you want to put your WordPress site in maintenance mode?

Maintenance mode allows you to display a user-friendly notice to your visitors instead of a broken site during website maintenance.

It also allows you to safely perform any maintenance task while making sure that people who need access to the website still have access.

In this article, we will show you how to easily put your WordPress site in maintenance mode. We will also show you how to make your maintenance mode page more pleasant, helpful, and user-friendly.

putting your WordPress site in maintenance mode

Why and When You Need to Put WordPress in Maintenance Mode

Normally, you can work on customizing your WordPress website without having to put it in maintenance mode. You can perform minor tweaks, publish new content, and update themes and plugins without any downtime.

However, sometimes you may need to work on your website for a longer period, like when you are manually setting up a new theme or configuring a new plugin that changes the behavior of your website. During this time, your website may appear broken to your users.

If your website has a lot of traffic, then you don’t want your users to see a broken website because it creates a bad user experience and give them a poor impression of your brand.

A common way to deal with this situation is by setting up a staging website. This allows you to work on your website under a test environment and push the changes to your live website when you are done.

Some of the top WordPress hosting companies offer 1-click staging websites, such as Bluehost, SiteGround, and WP Engine.

You would still need to setup maintenance mode, but it will be for a very short period of time.

If you’re not using a staging site, then you definitely need to put your website under maintenance mode because you’re applying changes on the live website. This allows you to remedy the bad user experience problem.

Putting your WordPress site in maintenance mode allows you to show a user-friendly notification, alternative links to visit, and provide a timeframe for when the maintenance will be done.

Having that said, let’s take a look at how to easily put your WordPress site in maintenance or under-construction mode.

We will show you two different plugins to create coming soon or maintenance mode pages. You can choose the one that works best for you.

Video Tutorial

If you’d prefer written instructions, just keep reading.

1. Set up WordPress Maintenance Mode using SeedProd Plugin

SeedProd is a free WordPress plugin that allows you to create completely custom Coming Soon pages, Maintenance Mode pages, custom 404 pages, and even full marketing landing pages. It’s the best landing page builder for WordPress, used on more than a million websites.

There’s also a premium version of SeedProd that offers more premium templates, advanced customization features, and marketing integrations.

But to put your WordPress site in maintenance mode, you only need the free version of SeedProd.

The first thing you need to do is install and activate the SeedProd plugin. For more details, see our guide on how to install a plugin in WordPress.

Once the plugin is installed and activated, navigate to SeedProd » Pages and click ‘Set up a Maintenance Mode Page.’

Set up a maintenance mode page

The next step is to build the maintenance page that visitors will see once you enable maintenance mode.

You need to start by choosing a pre-made template or start from a blank template. To select a template, hover your mouse over a thumbnail and click the check icon.

Choose a maintenance page template

This will open the SeedProd drag & drop WordPress page builder where you can customize any element.

You can also add new content elements by dragging blocks from the left panel.

SeedProd visual editor

For example, you might add your own custom logo, background, email subscription form, social sharing buttons, countdown timer, progress bar, etc.

Once you are satisfied with your changes, click on the ‘Save’ button.

Saving maintenance page

The final step is to enable the WordPress maintenance mode. Simply visit SeedProd » Pages in your WordPress dashboard and toggle the maintenance mode to ‘Active.’

Enable maintenance mode in SeedPro

You can now visit your website in a new incognito browser tab to preview your maintenance mode page in action.

Controlling Website Access for Logged in Users

By default, SeedProd will display your maintenance mode page to all visitors who are not logged in.

Anyone with an account will be able to log in like they usually do. This includes membership website subscribers and online store customers.

To select who can access your website during maintenance, you’ll need to edit the maintenance page settings. Simply visit SeedProd » Pages and click the ‘Edit Page’ button under Maintenance Mode.

Edit maintenance page

Inside the SeedProd builder, you need to click Page Settings at the top of the page, and then select the Access Controls tab.

Maintence mode access controls

From here you can select methods to bypass maintenance mode. You might use a cookie, allow certain user IP addresses, or give users a secret bypass URL to get passed the maintenance page.

The most effective method is to simply select the user roles that can access the website.

For instance, adding the administrator role will make it so only the administrator will be given access to see the regular website.

Maintenance mode access by role

You can also include or exclude user roles created by your WordPress membership plugin or the eCommerce plugin.

Once you are satisfied with the access controls, don’t forget to click on the ‘Save’ button to store your settings.

Exclude Specific Pages from Maintenance Mode

Another great feature of SeedProd is that it allows you to selectively include or exclude pages from maintenance mode.

This comes in handy in many situations when you may need to allow some users to access certain pages.

For example, if your website uses a custom login page, then you would want to exclude it from maintenance mode. If you provide customer support via email, then you may want to exclude your contact form page as well.

You can include or exclude specific pages by adding any URLs under the Include/Exclude URL settings.

Exclude URLs from maintenance page

After entering the pages you want to exclude or include, don’t forget to click on the ‘Save All Changes’ button to save your settings.

If you want to use SeedProd on an under construction website, then see our guide on how to easily create coming soon pages in WordPress with SeedProd.

2. Setup Maintenance Mode Using WP Maintenance Mode Plugin

This method uses another popular plugin WP Maintenance mode. It allows you to quickly setup a simple maintenance mode, but their design builder functionality is not as powerful as SeedProd.

First thing you need to do is install and activate the WP Maintenance Mode plugin. For more details, see our step by step guide on how to install a WordPress plugin.

Upon activation, go to Settings » WP Maintenance Mode to configure the plugin settings.

WP Maintenance Mode

The plugin’s setting screen is divided into five tabs. By default, you will see the General options tab.

The first option under General is Status, which is set to Deactivated by default. In order to put your WordPress blog into maintenance mode, you need to set it to ‘Activated’.

If you want search engines to be able to see your website while it is in maintenance mode, then you need to set ‘Bypass for Search Bots’ option to Yes. If you have an established website, then we recommend setting this to Yes.

WP Maintenance Mode allows you, the administrator, to have full access to your website during the maintenance mode. This means that you can see the working website and login to your WordPress dashboard.

You can specify which user roles should be allowed to access the front and backend of the website while it is in maintenance mode. By default, it is set to Administrator only.

Other options on the page are self-explanatory. Once you are satisfied with the settings, you need to click on the Save settings button to store your changes.

Creating Your Own Splash Page for Maintenance Mode

WP Maintenance Mode allows you to create beautiful landing pages to display during maintenance mode. To create your splash page, simply click on the Design tab on the plugin’s settings page.

Design your maintenance page

First, you need to provide a title, heading, and content to display on your maintenance page. If you are creating a coming soon page, then you can change the content accordingly.

Next, you need to select the text color and background type. You can choose from the background color, choose a pre-defined image, or upload your own background image.

Once you are done with the settings, don’t forget to click on the save changes button to store your settings.

Adding Countdown and Newsletter Signup on WordPress Maintenance Page

If you are putting WordPress in coming soon mode or just want to let users know when your site will be up, then you can use a countdown timer module that’s included with the plugin.

You can set it up by going to the Modules tab on the plugin’s settings page. From here you can select a start date and enter the remaining time.

Adding a countdown timer

You can also allow users to subscribe and be notified when your website is back online. These users will be notified via the plugin, and they will not be subscribed to your email marketing list.

Subscribe to be notified

You want to make sure that your WordPress site is able to send emails. For more details, see our guide on how to fix WordPress not sending email issue to test and fix WordPress emails.

Next, you can also add links to your social media profiles in the coming soon mode or maintenance mode page. Simply enter your social media profile URLs, and the plugin will automatically display the social buttons.

Add social media buttons

Optionally, you can also enable Google Analytics and add your tracking ID in the plugin settings.

Don’t forget to click on the save settings button to store your changes.

WP Maintenance mode also allows you to set up a pre-programed live chat bot which includes an interactive conversational help box. You can use this feature to politely ask users if they would like to subscribe.

Manage bot settings

If you enable the bot, then it will hide the maintenance mode content you had set in the General settings page. This is how the chatbot would look on your website.

Chatbot preview

If you are collecting user data through the signup forms on your maintenance mode or coming soon mode page, then you would want to make it GDPR compliant.

You can do this by switching to the GDPR tab on the plugin’s settings page. From here you can enable the privacy module and select your privacy policy page.

GDPR settings

You can now visit your website in a new browser window with the incognito mode, and you will be greeted with your maintenance mode or coming soon page.

Preview of the maintenance mode page

We hope this article helped you learn how to easily put your WordPress site in maintenance mode. You may also want to see our guide on how to create custom pages in WordPress, and our comparison of the best business phone services to allow visitors to contact you while your website is under maintenance.

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 to Put Your WordPress Site in Maintenance Mode appeared first on WPBeginner.