WordPress 5.2 Pushed Back to May 7, RC 1 Now Available for Testing

WordPress 5.2 was originally scheduled to be released on April 30, but has now been pushed back to May 7, due to the number of open tickets last week (43). There is now only one ticket remaining on the 5.2 milestone for completion of the About page and WordPress 5.2 RC 1 is ready for testing.

The upcoming release will bring major improvements to the block editor (everything released in the Gutenberg plugin prior to version 5.4). This includes the new block management capabilities and several new blocks that were ported from core widgets.

WordPress 5.2 will introduce a new admin interface for Site Health under the Tools menu. It runs tests that deliver results categorized as critical, recommended, or good, along with action items for users to improve their settings. The Information tab was added for basic debugging and provides information about the website and server setup.

A new feature called “fatal error recovery mode” is also included in this release. It pauses themes or plugins that are causing a fatal error and puts the site into recovery mode so the user can still access the admin to troubleshoot the issue. Users should experience fewer “white screen of death” situations with this new feature in place.

WordPress 5.2 brings a host of accessibility improvements to various admin screens for users who rely on assistive technologies. It also makes it easier to customize and design WordPress’ included Privacy Policy page.

Check out the 5.2 field guide for a detailed breakdown of everything that’s coming in the upcoming release. If you want to get a sneak peak and help test the release candidate, the easiest way is to install the Beta Tester plugin and select the “bleeding edge nightlies” option.

Introducing Atlassian for VS Code: Bitbucket Cloud and Jira Software Extension for Visual Studio Code

Developers spend most of their day in three places: chat, their IDE, and a code repository platform like Bitbucket. In between, a lot of hours are spent context switching between apps. At Atlassian, our goal is to cut out all of the alt-tabbing and make you more productive by bringing your work closer to where you spend the most time.

That’s why we’re excited to announce Atlassian for VS Code, a new Bitbucket Cloud and Jira Software Cloud extension for Microsoft’s Visual Studio Code. We are bringing pull requests, CI/CD, and issues where we think they should be: in your IDE, right alongside your code.

7 Steps to Becoming an Effective Leader

Leading others is not an easy task, in fact it’s quite hard if you care enough to try to do it the right way. Effective leaders aren’t born, they’re made, no matter what anyone else tells you. There are things you can (and should) learn that’ll help you get there… all it takes is for you to want to do it.

This is specially relevant for newly minted leaders, because it’s hard to find companies that present the new role with an associated training program. These people are left alone to figure out how to lead others, and that is a process that not everyone undergoes in the same way or time.

Technically Speaking, What Is Data Governance?

The term data governance has been around for decades, but only in the last few years have we begun to redefine our understanding of what the term means outside the world of regulatory compliance, and to establish data standards. This rapid evolution of data governance can be attributed to businesses looking to leverage massive amounts of data for analytics across the enterprise, while attempting to navigate the increasingly rugged terrain of worldwide regulatory requirements. 

Data governance is a critical data management mechanism. Most businesses today have a data governance program in place. However, according to a recent Gartner survey, “more than 87 percent of organizations are classified as having low business intelligence (BI) and analytics maturity,” highlighting how organizations struggle to develop governance strategies that do more than ensure regulatory compliance. 

Encryption, Part 2: Public Key/Private Key Encryption

In my previous article, I presented the concept of symmetric encryption, where the same key is used to encrypt and decrypt data. The biggest limitation of symmetric encryption is the key itself. The key used for encryption and decryption has to be kept a secret. If the key is compromised, the encrypted data is no longer secure. While you may feel that it will be easy to keep the key safe, consider the fact that the same key cannot be used to encrypt data between multiple parties. For example, if Alice and Bob agree to use a secret key X for exchanging their messages, the same key X cannot be used to exchange messages between Alice and Jane. This is because such messages can be decrypted by Bob as well. Hence, in addition to keeping the key a secret, each pair that wishes to communicate secretly will have to maintain a key for their conversation.

This problem is overcome by the concept of public key/private key encryption (also known as Public Key Encryption or PKE for short).

Things to Understand Before Implementing ETL Tools

Data warehouses, databases, data lakes, or data hubs have become key growth drivers for technology-driven businesses of all sizes. There are several factors that contribute to the successful building and management of each of these data systems. The ETL (Extract, Transform, Load) strategy is the most important of them all. Nowadays, there are several best ETL tools in the market which allow businesses to design robust data systems. They are differentiated into open source and enterprise ETL tools on the basis of their implementation. This post is not focused on the best ETL tools in the market, nor does it compare ETL tools. What should you expect then? This post intends to build your understanding of the ETL processing and parameters to be checked before investing in an ETL tool.

Understanding the Basics of the ETL Processing

When developing a database, it becomes important to prepare and store data in comprehensible formats. ETL comprises three distinct functions (Extract, Transform, and Load) that are integrated in a single tool, which aids in the data preparation and storage required for database management.

Getting To Know The MutationObserver API

Getting To Know The MutationObserver API

Getting To Know The MutationObserver API

Louis Lazaris

In complex web apps, DOM changes can be frequent. As a result, there are instances where your app might need to respond to a specific change to the DOM.

For some time, the accepted way to look for changes to the DOM was by means of a feature called Mutation Events, which is now deprecated. The W3C-approved replacement for Mutation Events is the MutationObserver API, which is what I’ll be discussing in detail in this article.

A number of older articles and references discuss why the old feature was replaced, so I won’t go into detail on that here (besides the fact that I wouldn’t be able to do it justice). The MutationObserver API has near complete browser support, so we can use it safely in most — if not all — projects, should the need arise.

Basic Syntax For A MutationObserver

A MutationObserver can be used in a number of different ways, which I’ll cover in detail in the rest of this article, but the basic syntax for a MutationObserver looks like this:

let observer = new MutationObserver(callback);
    
function callback (mutations) {
  // do something here
}

observer.observe(targetNode, observerOptions);

The first line creates a new MutationObserver using the MutationObserver() constructor. The argument passed into the constructor is a callback function that will be called on each DOM change that qualifies.

The way to determine what qualifies for a particular observer is by means of the final line in the above code. On that line, I’m using the observe() method of the MutationObserver to begin observing. You can compare this to something like addEventListener(). As soon as you attach a listener, the page will ‘listen’ for the specified event. Similarly, when you start observing, the page will begin ‘observing’ for the specified MutationObserver.

The observe() method takes two arguments: The target, which should be the node or node tree on which to observe for changes; and an options object, which is a MutationObserverInit object that allows you to define the configuration for the observer.

The final key basic feature of a MutationObserver is the disconnect() method. This allows you to stop observing for the specified changes, and it looks like this:

observer.disconnect();

Options To Configure A MutationObserver

As mentioned, the observe() method of a MutationObserver requires a second argument that specifies the options to describe the MutationObserver. Here’s how the options object would look with all possible property/value pairs included:

let options = {
  childList: true,
  attributes: true,
  characterData: false,
  subtree: false,
  attributeFilter: ['one', 'two'],
  attributeOldValue: false,
  characterDataOldValue: false
};

When setting up the MutationObserver options, it’s not necessary to include all these lines. I’m including these simply for reference purposes, so you can see what options are available and what types of values they can take. As you can see, all except one are Boolean.

In order for a MutationObserver to work, at least one of childList, attributes, or characterData needs to be set to true, otherwise an error will be thrown. The other four properties work in conjunction with one of those three (more on this later).

So far I’ve merely glossed over the syntax to give you an overview. The best way to consider how each of these features works is by providing code examples and live demos that incorporate the different options. So that’s what I’ll do for the rest of this article.

Observing Changes To Child Elements Using childList

The first and simplest MutationObserver you can initiate is one that looks for child nodes of a specified node (usually an element) to be added or removed. For my example, I’m going to create an unordered list in my HTML, and I want to know whenever a child node is added or removed from this list element.

The HTML for the list looks like this:

<ul id="myList" class="list">
  <li>Apples</li>
  <li>Oranges</li>
  <li>Bananas</li>
  <li class="child">Peaches</li>
</ul>

The JavaScript for my MutationObserver includes the following:

let mList = document.getElementById('myList'),
options = {
  childList: true
},
observer = new MutationObserver(mCallback);

function mCallback(mutations) {
  for (let mutation of mutations) {
    if (mutation.type === 'childList') {
      console.log('Mutation Detected: A child node has been added or removed.');
    }
  }
}

observer.observe(mList, options);

This is only part of the code. For brevity, I’m showing the most important sections that deal with the MutationObserver API itself.

Notice how I’m looping through the mutations argument, which is a MutationRecord object that has a number of different properties. In this case, I’m reading the type property and logging a message indicating that the browser has detected a mutation that qualifies. Also, notice how I’m passing the mList element (a reference to my HTML list) as the targeted element (i.e. the element on which I want to observe for changes).

Use the buttons to start and stop the MutationObserver. The log messages help clarify what’s happening. Comments in the code also provide some explanation.

Note a few important points here:

  • The callback function (which I’ve named mCallback, to illustrate that you can name it whatever you want) will fire each time a successful mutation is detected and after the observe() method is executed.
  • In my example, the only ‘type’ of mutation that qualifies is childList, so it makes sense to look for this one when looping through the MutationRecord. Looking for any other type in this instance would do nothing (the other types will be used in subsequent demos).
  • Using childList, I can add or remove a text node from the targeted element and this too would qualify. So it doesn’t have to be an element that’s added or removed.
  • In this example, only immediate child nodes will qualify. Later in the article, I’ll show you how this can apply to all child nodes, grandchildren, and so on.

Observing For Changes To An Element’s Attributes

Another common type of mutation that you might want to track is when an attribute on a specified element changes. In the next interactive demo, I’m going to observe for changes to attributes on a paragraph element.

let mPar = document.getElementById('myParagraph'),
  options = {
    attributes: true
  },
  observer = new MutationObserver(mCallback);

function mCallback (mutations) {
  for (let mutation of mutations) {
    if (mutation.type === 'attributes') {
      // Do something here...
    }
  }
}

observer.observe(mPar, options);

Again, I’ve abbreviated the code for clarity, but the important parts are:

  • The options object is using the attributes property, set to true to tell the MutationObserver that I want to look for changes to the targeted element’s attributes.
  • The mutation type I’m testing for in my loop is attributes, the only one that qualifies in this case.
  • I’m also using the attributeName property of the mutation object, which allows me to find out which attribute was changed.
  • When I trigger the observer, I’m passing in the paragraph element by reference, along with the options.

In this example, a button is used to toggle a class name on the targeted HTML element. The callback function in the mutation observer is triggered every time the class is added or removed.

Observing For Character Data Changes

Another change you might want to look for in your app is mutations to character data; that is, changes to a specific text node. This is done by setting the characterData property to true in the options object. Here’s the code:

let options = {
    characterData: true
  },
  observer = new MutationObserver(mCallback);
  
function mCallback(mutations) {
  for (let mutation of mutations) {
    if (mutation.type === 'characterData') {
      // Do something here...
    }
  }
}

Notice again the type being looked for in the callback function is characterData.

In this example, I’m looking for changes to a specific text node, which I target via element.childNodes[0]. This is a little hacky but it will do for this example. The text is user-editable via the contenteditable attribute on a paragraph element.

Challenges When Observing For Character Data Changes

If you’ve fiddled around with contenteditable, then you might be aware that there are keyboard shortcuts that allow for rich text editing. For example, CTRL-B makes text bold, CTRL-I makes text italic, and so forth. This will break up the text node into multiple text nodes, so you’ll notice the MutationObserver will stop responding unless you edit the text that’s still considered part of the original node.

I should also point out that if you delete all the text, the MutationObserver will no longer trigger the callback. I’m assuming this happens because once the text node disappears, the target element is no longer in existence. To combat this, my demo stops observing when the text is removed, although things do get a little sticky when you use rich text shortcuts.

But don’t worry, later in this article, I’ll discuss a better way to use the characterData option without having to deal with as many of these quirks.

Observing For Changes To Specified Attributes

Earlier I showed you how to observe for changes to attributes on a specified element. In that case, although the demo triggers a class name change, I could have changed any attribute on the specified element. But what if I want to observe changes to one or more specific attributes while ignoring the others?

I can do that using the optional attributeFilter property in the option object. Here’s an example:

let options = {
      attributes: true,
      attributeFilter: ['hidden', 'contenteditable', 'data-par']
    },
    observer = new MutationObserver(mCallback);

function mCallback (mutations) {
  for (let mutation of mutations) {
    if (mutation.type === 'attributes') {
      // Do something here...
    }
  }
}

As shown above, the attributeFilter property accepts an array of specific attributes that I want to monitor. In this example, the MutationObserver will trigger the callback each time one or more of the hidden, contenteditable, or data-par attributes is modified.

Again I’m targeting a specific paragraph element. Notice the select drop down that chooses which attribute will be changed. The draggable attribute is the only one that won’t qualify since I didn’t specify that one in my options.

Notice in the code that I’m again using the attributeName property of the MutationRecord object to log which attribute was changed. And of course, as with the other demos, the MutationObserver won’t start monitoring for changes until the “start” button is clicked.

One other thing I should point out here is that I don’t need to set the attributes value to true in this case; it’s implied due to attributesFilter being set to true. That’s why my options object could look as follows, and it would work the same:

let options = {
  attributeFilter: ['hidden', 'contenteditable', 'data-par']
}

On the other hand, if I explicitly set attributes to false along with an attributeFilter array, it wouldn’t work because the false value would take precedence and the filter option would be ignored.

Observing For Changes To Nodes And Their Sub-Tree

So far when setting up each MutationObserver, I’ve only been dealing with the targeted element itself and, in the case of childList, the element’s immediate children. But there certainly could be a case where I might want to observe for changes to one of the following:

  • An element and all its child elements;
  • One or more attributes on an element and on its child elements;
  • All text nodes inside an element.

All of the above can be achieved using the subtree property of the options object.

childList With subtree

First, let’s look for changes to an element’s child nodes, even if they’re not immediate children. I can alter my options object to look like this:

options = {
  childList: true,
  subtree: true
}

Everything else in the code is more or less the same as the previous childList example, along with some extra markup and buttons.

Here there are two lists, one nested inside the other. When the MutationObserver is started, the callback will trigger for changes to either list. But if I were to change the subtree property back to false (the default when it’s not present), the callback would not execute when the nested list is modified.

Attributes With subtree

Here’s another example, this time using subtree with attributes and attributeFilter. This allows me to observe for changes to attributes not only on the target element but also on the attributes of any child elements of the target element:

options = {
  attributes: true,
  attributeFilter: ['hidden', 'contenteditable', 'data-par'],
  subtree: true
}

This is similar to the previous attributes demo, but this time I’ve set up two different select elements. The first one modifies attributes on the targeted paragraph element while the other one modifies attributes on a child element inside the paragraph.

Again, if you were to set the subtree option back to false (or remove it), the second toggle button would not trigger the MutationObserver callback. And, of course, I could omit attributeFilter altogether, and the MutationObserver would look for changes to any attributes in the subtree rather than the specified ones.

characterData With subtree

Remember in the earlier characterData demo, there were some problems with the targeted node disappearing and then the MutationObserver no longer working. While there are ways to get around that, it’s easier to target an element directly rather than a text node, then use the subtree property to specify that I want all the character data inside that element, no matter how deeply nested it is, to trigger the MutationObserver callback.

My options in this case would look like this:

options = {
  characterData: true,
  subtree: true
}

After you start the observer, try using CTRL-B and CTRL-I to format the editable text. You’ll notice this works much more effectively than the previous characterData example. In this case, the broken up child nodes don’t affect the observer because we’re observing all nodes inside the targeted node, instead of a single text node.

Recording Old Values

Often when observing for changes to the DOM, you’ll want to take note of the old values and possibly store them or use them elsewhere. This can be done using a few different properties in the options object.

attributeOldValue

First, let’s try logging out the old attribute value after it’s changed. Here’s how my options will look along with my callback:

options = {
  attributes: true,
  attributeOldValue: true
}

function mCallback (mutations) {
  for (let mutation of mutations) {
    if (mutation.type === 'attributes') {
      // Do something here...
    }
  }
}

Notice the use of the attributeName and oldValue properties of the MutationRecord object. Try the demo by entering different values in the text field. Notice how the log updates to reflect the previous value that was stored.

characterDataOldValue

Similarly, here’s how my options would look if I want to log old character data:

options = {
  characterData: true,
  subtree: true,
  characterDataOldValue: true
}

Notice the log messages indicate the previous value. Things do get a little wonky when you add HTML via rich text commands to the mix. I’m not sure what the correct behavior is supposed to be in that case but it is more straightforward if the only thing inside the element is a single text node.

Intercepting Mutations Using takeRecords()

Another method of the MutationObserver object that I haven’t mentioned yet is takeRecords(). This method allows you to more or less intercept the mutations that are detected before they are processed by the callback function.

I can use this feature using a line like this:

let myRecords = observer.takeRecords();

This stores a list of the DOM changes in the specified variable. In my demo, I’m executing this command as soon as the button that modifies the DOM is clicked. Notice that the start and add/remove buttons don’t log anything. This is because, as mentioned, I’m intercepting the DOM changes before they are processed by the callback.

Notice, however, what I’m doing in the event listener that stops the observer:

btnStop.addEventListener('click', function () {
  observer.disconnect();
  if (myRecords) {
    console.log(`${myRecords[0].target} was changed using the ${myRecords[0].type} option.`);
  }
}, false);

As you can see, after stopping the observer using observer.disconnect(), I’m accessing the mutation record that was intercepted and I’m logging the target element as well as the type of mutation that was recorded. If I had been observing for multiple types of changes then the stored record would have more than one item in it, each with its own type.

When a mutation record is intercepted in this way by calling takeRecords(), the queue of mutations that would normally be sent to the callback function is emptied. So if for some reason you need to intercept these records before they’re processed, takeRecords() would come in handy.

Observing For Multiple Changes Using A Single Observer

Note that if I’m looking for mutations on two different nodes on the page, I can do so using the same observer. This means after I call the constructor, I can execute the observe() method for as many elements as I want.

Thus, after this line:

observer = new MutationObserver(mCallback);

I can then have multiple observe() calls with different elements as the first argument:

observer.observe(mList, options);
observer.observe(mList2, options);

Start the observer, then try the add/remove buttons for both lists. The only catch here is that if you hit one of the “stop” buttons, the observer will stop observing for both lists, not just the one it’s targeting.

Moving A Node Tree That’s Being Observed

One last thing I’ll point out is that a MutationObserver will continue to observe for changes to a specified node even after that node has been removed from its parent element.

For example, try out the following demo:

This is another example that uses childList to monitor for changes to the child elements of a target element. Notice the button that disconnects the sub-list, which is the one being observed. Click the “Start…” button, then click the “Move…” button to move the nested list. Even after the list is removed from its parent, the MutationObserver continues to observe for the specified changes. Not a major surprise that this happens, but it’s something to keep in mind.

Conclusion

That covers just about all the primary features of the MutationObserver API. I hope this deep dive has been useful for you to get familiar with this standard. As mentioned, browser support is strong and you can read more about this API on MDN’s pages.

I’ve put all the demos for this article into a CodePen collection, should you want to have an easy place to mess around with the demos.

Smashing Editorial (dm, il)

41 Best Simple WordPress Themes You Should Try (2019)

Are you looking for the cleanest, simple and easy to use WordPress theme for your website?

Many WordPress themes come with tons of options making it difficult to set up and use. However, beginners look for simple and flexible themes to get started.

In this article, we have hand-picked some of the best simple WordPress themes that you can install on your website. These themes are clean, easy to use, and relatively minimalist.

Best simple WordPress themes

Starting a WordPress Site with a Simple Theme

First, you need to make sure that you start with the right platform to build your website. A self-hosted WordPress.org site gives you the freedom and flexibility to grow your website.

Next, you will need a domain name and web hosting. This is how users find your website.

We recommend using Bluehost or SiteGround. They are one of the largest hosting companies in the world and official WordPress hosting partners.

For more recommendations, see our guide on how to choose the best WordPress hosting.

Once you have signed up for hosting, the next step is to install WordPress. Follow the instructions in our how to start a WordPress blog guide, and you will be up and running in no time.

After installing WordPress, you can select a theme from our selection of simple WordPress themes.

Need help installing the theme? Follow the instructions in our step by step how to install a WordPress theme guide for beginners.

Having said that, let’s take a look at some of the best simple WordPress themes. This list contains both free and paid WordPress themes and all of them are fully mobile responsive.

1. Essence Pro

Essence Pro

Essence is built on top of the Genesis theme framework. It is a simple and clutter-free WordPress theme for health, wellness, and lifestyle niches. It comes with a widget-ready home page layout where you can just drag and drop widgets to build your homepage. It is quite easy to use and very easy to set up.

StudioPress is now a part of WP Engine, the most popular managed WordPress hosting company. You can get this theme and all 35+ other StudioPress themes if you sign up for WP Engine hosting to build your website.

Bonus: WPBeginner users also get additional 20% off. Get started with WP Engine.

2. Astra

Astra WordPress Theme

Astra is a colorful yet simple WordPress theme with multiple ready-made websites for lifestyle, fitness, food, and personal websites. It comes with multiple page layouts, several custom widgets, and unlimited color options. It is easy to set up and can be customized using the live theme customizer.

This theme is made for the page builders to quickly create pages with a simple drag and drop. Astra is optimized for speed and performance.

3. Landing

Landing

Landing is a beautiful WordPress multipurpose theme built specifically to create simple websites. It features beautiful typography, custom background, and pre-built layouts which look great on all devices and screen sizes.

It supports the Themify drag and drop builder to create pages and add features on your website. Landing has custom header templates, portfolio post type, event post type, and WooCommerce ready to create an online store.

4. Hestia

Hestia

Hestia is a free multi-purpose WordPress theme. It comes with a companion plugin that adds testimonials, services, and a homepage section to your website.

It is easy to set up using the live theme customizer. It is compatible with popular free page builder plugins and offers out of the box support for WooCommerce.

5. OceanWP

OceanWP

OceanWP is an elegant and simple WordPress theme designed specifically for blogs, magazine, restaurants, online stores, and fitness websites. It comes with multiple layouts for your blog, powerful premium extensions, several custom widgets, and multiple post formats.

It supports custom logo, navigation menus, and social buttons. It is WooCommerce ready so you can easily add an online store to your WordPress site.

6. Atmosphere

Atmosphere

Built on top of the Genesis theme framework, Atmosphere is a simple WordPress theme for business, portfolio, and personal websites.

It has an easy to set up fully-widgetized homepage, a custom landing page, and a two column layout template. Theme setup is quite straight-forward with the help of live theme customizer and does not take much time.

7. Beautiful

Beautiful

Beautiful is a simple yet stylish WordPress beauty theme by StudioPress. It comes with a widgetized homepage with four widget areas and has multiple templates for your blog, homepage, archive, and landing pages.

It is designed to beautifully showcase your featured posts. It is optimized for speed and performance and comes with a quick and straightforward setup.

8. True North

True North

True North is a flexible and simple WordPress theme with a beautiful design. It features a beautiful grid layout on the home page with a beautiful display of images. It has multiple layout choices and a built-in portfolio section.

It also supports custom background, custom header, and has several custom widgets for social media and content discovery features.

9. Magazine

Magazine

Magazine is a WordPress theme for bloggers looking for a simple design and powerful features. It includes a built-in featured content slider with multiple styles. The theme has over 42 built-in layouts to get started.

It also has several blog layouts, multiple page templates, and multiple homepage layouts. All the theme options can be set up using live theme customizer.

10. Divi

Divi

Divi is a powerful and simple WordPress theme for all kinds of websites. It can also be used as a page builder to create pages instantly. It has a distraction-free design specifically for bloggers and writers. You can create a story with visuals by the simple drag and drop builder. With Divi, you can simply click on the screen and start typing just like that.

It allows you to fully customize each element on your website, organize the content into columns and rows, responsive editing, and more. It comes with tons of pre-built content elements to make your work easier than ever.

11. Corner

Corner

Corner is a simple WordPress theme for personal websites, blogs, and portfolio websites. It has a built-in section for portfolio and it can also be used as a personal website. It supports unlimited color variations and comes with tons of customization options.

12. Beauté

Beauté

Beauté is a clean and simple WordPress theme for salon, health, spa, photography, and lifestyle websites. It integrates with the drag and drop page builders allowing you to create your own page layouts.

It comes with an appointment booking form template to allow your customers to schedule appointments with you. It has flexible customization options, unlimited colors, post content types, and an easy to use theme control panel.

13. Tusant

Tusant

Tusant is a stunningly beautiful and simple WordPress blog theme built specifically for podcasts, music streaming, and video-based sites. It is designed to help you create engaging content using images and videos.

It uses beautiful animations with multiple page layouts and custom content discovery widgets. It also has a full-width custom background image and supports audio and video sources.

14. Writee

Writee

Writee is a free WordPress theme for bloggers and writers. It features beautiful typography and an elegant layout that looks great on all devices. Inside you will find a featured content slider allowing you to showcase your most important content at the top.

15. Presence

Presence

Presence is a great choice for a simple WordPress business theme. It is packed with features to easily build any kind of business website. Particularly, it is perfect for real estate, music bands, hotel, web design, and other service providers.

It includes 10 demo websites that you can easily import and then just replace the content with your own to create your website instantly.

16. Roxima

Roxima

Roxima is a gorgeous WordPress theme for business, blogs, and portfolio websites. It ships with an easy to set up drag and drop homepage builder and custom content modules with multiple columns and layout variations for you to choose from.

17. Breakthrough

Breakthrough Pro

If you are looking for a distraction-free theme for your blog, then you will like Breakthrough. It is a simple, sleek, and modern WordPress theme for bloggers, advertisers, and marketing agencies with the main focus on beautiful typography and gorgeous image display.

It requires very little time to set up and gets out of your way so that you can create amazing content on your blog.

18. Enterprise

Enterprise

Enterprise is a simple WordPress theme for business websites. It has a built-in portfolio and services section, beautiful image galleries, and a slider for your homepage.

Among other features, it has FAQs section, pricing tables, custom background, and many flexible customization options.

19. Libretto

Libretto

If you need a beautiful free WordPress blog theme with a distraction free layout, then Libretto is an excellent option. The main feature of the theme is its unique color scheme and gorgeous typography.

Designed in the traditional classic blog layout, this theme is perfect for long-form content, photography, and personal websites.

20. Elegant

Elegant

Elegant is a WordPress blog and portfolio theme. It features a beautiful layout with the logo and navigation menu on top with a social menu. It has multiple layout options including a grid layout.

It has a built-in portfolio content type, several custom widgets, multiple color schemes, and easy to use theme options panel.

21. Coastline

Coastline

Coastline is a simple WordPress photography and portfolio theme with a beautiful column grid layout. It includes additional layout choices that you can use with several custom widgets, page templates, and sidebar navigation menu.

It has a portfolio content post type to design your portfolio. Coastline supports Jetpack to add powerful features to your website.

22. Paperbag

Paperbag

Paperbag is a simple WordPress blog theme. It ships with 20+ color and typography schemes and different layout styles. There are several custom widgets inside that you can use for social media integration and content discovery features.

It has a built-in featured content carousel for the homepage. All the theme options can be set up using live theme customizer with lots of flexible options.

23. Neve

Neve

Neve is a free and simple WordPress blog theme. It comes with a navigation menu at the top alongside the search bar. It has built-in social sharing buttons, a featured content slider, and about us section on the homepage.

This theme is easy to customize and WooCommerce ready to create a storefront.

24. Float

Float

Float is a simple and stylish WordPress blog theme with great features. Inside you will find several layout choices, a homepage slider, Google fonts integration, social share options, and parallax scrolling effects.

It has a refreshing design which is fully customizable using theme customizer. It also supports WooCommerce out of the box.

25. Mont Blanc

Mont Blanc

Mont Blanc is a multipurpose WordPress theme that is suitable for almost any kind of WordPress site. Designed to be flexible, it includes lots of customization options, multiple layouts choices, and several homepage styles.

It can be easily used for a magazine website or as a one page theme. Inside you will find portfolio section, photo galleries, and built-in sliders with several display options.

26. Maxwell

Maxwell

Maxwell is a simplistic free WordPress theme for magazines and blogs. Designed to showcase your content beautifully, Maxwell uses featured images, custom excerpts, and beautiful typography to create an engaging experience for your users.

It has a built-in featured content slider and two navigation menus. All the theme options can be easily set up using live customizer.

27. Igloo

Igloo

Looking for a simple WordPress theme for your restaurant website? Igloo is a beautiful WordPress restaurant theme with a built-in menu management system. It also has a testimonials section where you can showcase glowing reviews left by your customers and photo gallery to showcase your most popular dishes.

Igloo features a truly unique layout and offers multiple color schemes and layout choices.

28. Baskerville

Baskerville

Baskerville is another free WordPress theme with beautiful layout and some pretty neat features. It features a full-width header image and masonry layout for the homepage. It uses beautiful thumbnails for your videos, text, and other post formats.

29. Responz

Responz

Responz is a simple WordPress theme designed for news and editorial blogs. It features a 3-column layout with social media integration and beautiful typography. It has multiple color schemes, featured posts section, 2 navigation menus, ad spaces, carousel slider, and multiple sidebars.

It’s easy to set up. All theme options can be managed from the live WordPress customizer.

30. Brittany

Brittany

Brittany is a stylish WordPress blog theme with a beautiful design. The homepage features an intro section at the top followed by your most important content.

It has several layout options and templates for different pages. You will also get several custom widgets for easy social media integration and content discovery features.

31. Futurio

Futurio

If you are looking for a WordPress theme that is incredibly fast and lightweight, then Futurio is a great choice. It is unique in a way that it does not display your featured images on the front page which makes your homepage load much faster.

It is designed for bloggers and is a great choice for long form content. It supports custom logo, custom header, welcome message, and background. It comes with homepage blurbs to display featured content beautifully.

32. Peak

Peak

Peak is a modern WordPress blog theme for portfolios, photographers, and personal blogs. It includes several layouts and color schemes, a built-in slider, and a masonry style layout. It supports mega menu, and eCommerce ready to create an online store.

33. Mesmerize

Mesmerize

Mesmerize is a free WordPress theme suitable for bloggers, magazine, and photography websites. It comes with a custom header background, WooCommerce support, homepage sections, and a navigation menu on top. Theme setup is quicker and you will get a professional looking website in far less time.

34. Nozama

Nozama

Nozama is an Amazon-inspired WordPress theme with a simple and stylish look. It focuses on beautiful typography and gorgeous display of images to make your content more engaging.

It comes with a header category menu, featured categories section, multiple layout options, and infinite scroll. It is easy to set up and includes a getting started page to help you setup theme.

35. OnePress

OnePress

OnePress is a free WordPress theme with a beautiful and stylish look. The homepage layout uses a stylish Parallax effect, featured content blocks, and WooCommerce ready. It features beautiful typography and looks great on all devices.

36. Daily Dish Pro

Daily Dish Pro

Daily Dish is a WordPress blogging theme with a professional design. The most notable features of the theme are its crisp typography and beautiful display of images.

It has a widgetized homepage layout which is quick and easy to set up. It has multiple page templates, custom header, and full WooCommerce support.

37. Beatrix

Beatrix

If you are looking for a WordPress theme to sell arts and craft, then Beatrix is a great choice for that. This beautiful multi-purpose WordPress theme has full WooCommerce support and features a gorgeous homepage layout to showcase your products.

38. Ultra

Ultra

Ultra is a simple WordPress theme designed specifically to create any type of website. It features multiple built-in layouts, flexible addons, smart layout options, custom fonts, and unlimited colors.

All the layouts will have built-in sections like the portfolio, services, team members, and partners. It supports section-based scrolling, mega menus, archive layouts, and animated colors.

39. Consulting

Consulting

Consulting is a free and multipurpose WordPress theme for bloggers with three custom featured sections on the homepage. It supports parallax slider, custom colors with multiple page templates including a custom archives page.

Designed to instantly set up a professional looking blog, Consulting is quick and easy to set up and looks stunning even on smaller screens.

40. Benson

Benson

Benson is another elegant and simple WordPress blog theme photographers. It offers large, full-width, and list layouts for your photos. Inside you will find custom widgets for author bio, social media buttons, content discovery features, video slideshow, and multiple image layouts.

It supports unlimited colors, left or right sidebar, custom logo, header, and background. It is easy to set up using live theme customizer and will help you quickly get started with your blog.

41. Allegiant

Allegiant

Allegiant is a multi-purpose WordPress theme that can be adapted for eCommerce, business, magazine, or a photography website. It comes with flexible options that allow you to choose your own layout.

It includes unlimited color choices, custom widgets, Google Fonts, and full WooCommerce support. It is designed to work out of the box with minimum effort, which makes it quite easy to use.

We hope this article helped you find the best WordPress simple theme for your website. You may also want to see our ultimate step by step WordPress SEO guide for beginners.

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 41 Best Simple WordPress Themes You Should Try (2019) appeared first on WPBeginner.

Exercising Misty’s Extensibility

Misty knows the importance of playing as hard as you work. That’s why she’s willing to risk a few grass stains in her Follow Ball skill.

In this skill, Misty employs the object recognition capabilities of a Pixy2 vision sensor to chase a soccer ball as it moves around the room. Here’s a high-level overview of how it works:

Serverless Web Apps With Knative Compared to AWS Lambda

This post originally appeared on LinkedIn and has been updated since.

It’s hard to not be overwhelmed with the hype around serverless; the term seems to be constantly redefined to mean almost anything. I wanted to look at how easy it would be to do a serverless web app (which is to say: an app that responds to HTTP requests and does some work, and when there isn’t work to be done, scales down to zero cost).

What is Selenium? Getting Started With Selenium Automation Testing

Selenium has become very popular among testers because of the various advantages it offers. When we talk about automation testing, the first thing that often comes to our mind is our favorite automation testing tool. Selenium won the hearts of many testers and developers with its simplicity, availability, and ease of use. With its advent in 2004, Selenium made the life of automation testers easier and is now a favorite tool for many automation testers. 

What is Selenium?

Selenium was invented with the introduction of a basic tool named as “JavaScriptTestRunner,” by Jason Huggins at ThoughtWorks to test their internal Time and Expenses application. Now it has gained popularity among software testers and developers as an open source portable automation testing framework. It has the capability to automate browsers with specific browser bindings for automating web applications for testing purposes. It is a suite of four tools designed for different purposes. Let’s get to know Selenium in detail and the different tools that it offers.

Build Trust With Scrum

Are We Really a Team? 

Looking back, a couple of years ago I had a chance to work with the great team. Yes! They are a great team, but not from the beginning...that was a broken team when I came on.

  • The team used Scrum but the Transparency was lost. The Development Team hid issues from the Product Owner when he came to ask. They said: “All good!", but actually, they had a ton of bugs and impediments and couldn’t deliver working software.
  • The Development Team complained that the goal was changed frequently by the Product Owner.
  • Disappointment appeared between the Development Team and Product Owner every Sprint Review.
  • The higher manager started to doubt the product's quality and progress. Therefore, they put more and more pressure on the team and asked for more reports. This didn’t help to improve the situation but only made it more terrible.
  • Every time something went wrong, people started to complain to each other and this led to "fear mode." They started to say "I", not "We."

In a tough time, I planned to do many things to support the team, but first I asked them: "As a Team, do you trust each other?"

JavaScript and Node.js Security: The Common Pitfalls [Video]

JavaScript and Node.js have shown themselves to be amazing platforms. Their sheer ease of use has empowered an entire community of creative individuals to build amazing things. As in all cases, however, amongst the goodness lurk some risks. Nobody’s perfect, including Node.js and JavaScript, and a language’s strength can quickly translate to its vulnerability if looked through an evil (or paranoid) lens.

We created a cheat sheet on 10 npm Security Best Practices that we encourage you to follow where you will find npm security and productivity tips for both open source maintainers and developers. 

Working Next to Robots

Recent estimates suggest that expenditure on robotics is set to reach $115 billion this year before rising to over $210 billion by 2022. Whereas traditionally industrial robots would be complex and heavyweight bits of equipment that worked largely in isolation from their human "colleagues," it's increasingly common to see man and machine working together.

This is resulting in a growing interest in the psychology and practicality of these interactions. For instance, a few years ago,  researchers explored how people feel about having robots for colleagues.

4 Ways to Keep Your Knowledge up to Date in the Fast Paced Tech Industry

Whether you’re a software engineer or an application developer, keeping your knowledge and skills up to date in the fast-paced field of computer science is essential. However, keeping yourself in the know of the latest developments and technological advancements is not always easy when you work in such a rapidly-developing industry. Read All About It Read More →

The post 4 Ways to Keep Your Knowledge up to Date in the Fast Paced Tech Industry appeared first on WPArena.