Ben Lobaugh, Author at WebDevStudios https://webdevstudios.com/author/blobaugh/ WordPress Design and Development Agency Mon, 15 Apr 2024 16:03:36 +0000 en-US hourly 1 https://wordpress.org/?v=6.6.2 https://webdevstudios.com/wp-content/uploads/2022/07/cropped-wds-icon.white-on-dark-60x60.png Ben Lobaugh, Author at WebDevStudios https://webdevstudios.com/author/blobaugh/ 32 32 58379230 Tapping into the New WordPress Core Privacy Hooks to Ensure GDPR Compliance https://webdevstudios.com/2018/06/07/wordpress-gdpr-compliance/ https://webdevstudios.com/2018/06/07/wordpress-gdpr-compliance/#respond Thu, 07 Jun 2018 16:00:34 +0000 https://webdevstudios.com/?p=18708 With all the hullabaloo around the General Data Protection Regulation (GDPR), we are seeing several custom GDPR frameworks being built for WordPress, each of which has its own strengths. However, with the release of version 4.9.6, there are now powerful new tools built right into the core of WordPress to handle GDPR compliance that nobody Read More Tapping into the New WordPress Core Privacy Hooks to Ensure GDPR Compliance

The post Tapping into the New WordPress Core Privacy Hooks to Ensure GDPR Compliance appeared first on WebDevStudios.

]]>
With all the hullabaloo around the General Data Protection Regulation (GDPR), we are seeing several custom GDPR frameworks being built for WordPress, each of which has its own strengths. However, with the release of version 4.9.6, there are now powerful new tools built right into the core of WordPress to handle GDPR compliance that nobody seems to be talking about. In this article, I am going to explore with you how we can tap into WordPress’s new GDPR features in our existing plugins to let it handle the heavy lifting for us. I’ll walk you through a sample project below. You can get the code and database on GitHub here.

About the sample project

For this sample project, I am choosing to go a little outside the typical realm of WordPress and create some new database tables that will hold a to-do list. This could easily be accomplished (and perhaps should be!) with a custom post type (CPT), however, I am choosing to use custom tables to illustrate the flexibility of the new WordPress core GDPR compliance features. Additionally, this to-do list will be open to the general public and not tied to any specific WordPress user. Simply supply an email address to create and view the to-do item.

High-level project requirements:

  • Create a to-do list with custom database tables
  • To-do items can be created by supplying an email address and text of the to-do
  • No login is required
  • To-do lists will be viewable per the email address they are attached to
  • Must use WordPress core GDPR features for data export and deletion

With this sample project, we will not be creating any UI elements to manage the to-do list. You can view, add, and edit items directly in your favorite database client (mine is Sequel Pro or the command line!). Note, too, that if this were a production app, it would also have a public facing UI.

The database

The custom database table will be named ‘todo_list’ and have a structure of:

  • id
  • email
  • status
  • todo
  • created

You can import a sample SQL file to use in your own sample project here.

Initial plugin set up

Our next step will be to set up the plugin. For this sample, I am going to keep it stupid simple (KISS) and will not be using plain functions. This is done intentionally to keep the focus on the what and how of working with the WordPress core GDPR functionality instead of focusing on PHP concepts. You are welcomed to use these functions however you would like in your own projects.

Our plugin is going to be called GDPR Todo List Sample, and the plugin folder that I will be referencing here is ‘wordpress-gdpr-todo-list-sample’.

Here is my plugin stub in: wordpress-gdpr-todo-list-sample.php

“`<?php

/**

* Plugin Name: GDPR Todo List Sample

* Description: Sample project using core WordPress GDPR functionality.

* Version: 1.0.0

* Author: Ben Lobaugh, WebDevStudios

* Author URI: https://webdevstudios.com

*/“`

New privacy hooks

WordPress has introduced new hooks for GDPR management called privacy hooks. Here is the full list of new hooks. We will only be focusing on the hooks in bold.

Actions

  • wp_privacy_personal_data_export_file_created
  • wp_privacy_personal_data_export_file
  • wp_privacy_personal_data_erased

Filters

  • wp_privacy_export_expiration
  • wp_privacy_personal_data_email_content
  • wp_privacy_personal_data_exporters
  • wp_privacy_personal_data_erasers
  • wp_privacy_personal_data_export_page
  • wp_privacy_personal_data_erasure_page
  • wp_privacy_anonymize_data
  • wp_privacy_exports_dir
  • wp_privacy_exports_url
  • wp_privacy_export_expiration

Data exporter

First up, let’s set up the data exporter. This will add data from our to-do list to the export file when a user requests to download their data. We will be tapping into the wp_privacy_personal_data_exporters filter. The filter needs to return an array with a new entry that includes a name and a callback function as elements.

The following will set up the filter callback. The second parameter is the name of our function that will be called when an export is requested.add_filter( ‘wp_privacy_personal_data_exporters’, ‘register_todo_list_exporter’ );

Now, we need to set up the callback that will set up the exporter itself. This is accomplished in two steps. the first will set the name of the exporter and the second will be another callback function. This function will contain code that performs the actual export of data. It accepts an array of currently registered exporters as a parameter. We will add our exporter to this list:

function register_todo_list_exporter( $exporters ) {

   $exporters[‘todo-list’] = array(

       ‘exporter_friendly_name’    => __( ‘Todo List’ ),

       ‘callback’                  => ‘todo_list_exporter’,

   );

   return $exporters;

}

Next up, we need to write the function that creates the data to export. We will be doing a custom database query to retrieve the results. Please note that we are not including any SQLprotection here in order to keep the sample simple. You should always ensure you properly sanitize, escape, and otherwise clean up data before use in a real application.

The function definition
function todo_list_exporter( $email_address, $page = 1 ) { }

The first parameter will be the email address of the export request. This is how we will determine what data to retrieve from the database. The second parameter is optional and can be used for paging. In our simple example, we will not be using it.

Build the query
We will need to tap into $wpdb to retrieve data from our custom table. Be sure to retrieve only data associated with the email address provided by the exporter!

$sql = “SELECT * FROM `todo_list` WHERE email=’$email_address'”;

Create the export data
From here all we have to do is pass back an array of data for the exporter to put into the export file. This is where things get slightly complex. The exporter is going to pass back an array of arrays containing an array of data. Clear as mud? Good, let’s kick this beast.

Export item
A single element winds up looking similar to:
$export_item[] = array(
‘group_id’ => $group_id,
‘group_label’ => $group_label,
‘item_id’ => $id,
‘data’ => array()
);

To break that down some…
group_id is the id of the group of data for the exporter. It is simply a way for the exporter to ensure it keeps all similar data together. It is a freeform id field. We will use “todo-items” as our group id.

group_label is similar to the group_id except that it is the human readable version. This is what the person reading the export will see when they open it. It can also be global to this export. We will use “Todo List Items”.

item_id is the id field from the database for the individual todo enty.

data is an array of arrays of the data for the row with two elements, name and value. Name is the human readable version, value is of course the value. Here is an example:
$item_data = array(
array(
‘name’ => __( ‘Todo Item’ ),
‘value’ => $item->todo
),
array(
‘name’ => __( ‘Status’ ),
‘value’ => $item->status,
),
array(
‘name’ => __( ‘Created’ ),
‘value’ => $item->created
)
);

Putting that whole hairy mess together gives you
$export_items = array();
$group_id = ‘todo-items’;
$group_label = ‘Todo List Items’;

foreach( $list as $item ) {

$item_data = array(
array(
‘name’ => __( ‘Todo Item’ ),
‘value’ => $item->todo
),
array(
‘name’ => __( ‘Status’ ),
‘value’ => $item->status,
),
array(
‘name’ => __( ‘Created’ ),
‘value’ => $item->created
)
);

$export_items[] = array(
‘group_id’ => $group_id,
‘group_label’ => $group_label,
‘item_id’ => $item->id,
‘data’ => $item_data
);
}

Full code for the exporter
add_filter( ‘wp_privacy_personal_data_exporters’, ‘register_todo_list_exporter’ );

function register_todo_list_exporter( $exporters ) {
$exporters[‘todo-list’] = array(
‘exporter_friendly_name’ => __( ‘Todo List’ ),
‘callback’ => ‘todo_list_exporter’,
);
return $exporters;
}

function todo_list_exporter( $email_address, $page = 1 ) {
global $wpdb;

$sql = “SELECT * FROM `todo_list` WHERE email=’$email_address'”;
$list = $wpdb->get_results( $sql );

$export_items = array();
$group_id = ‘todo-items’;
$group_label = ‘Todo List Items’;

foreach( $list as $item ) {

$item_data = array(
array(
‘name’ => __( ‘Todo Item’ ),
‘value’ => $item->todo
),
array(
‘name’ => __( ‘Status’ ),
‘value’ => $item->status,
),
array(
‘name’ => __( ‘Created’ ),
‘value’ => $item->created
)
);

$export_items[] = array(
‘group_id’ => $group_id,
‘group_label’ => $group_label,
‘item_id’ => $item->id,
‘data’ => $item_data
);
}

return array(
‘data’ => $export_items,
‘done’ => true
);
}

Removing data
The second half of this post deals with removing data. We will again be using the new WordPress core privacy filters. This time the filter we will tap into is wp_privacy_personal_data_erasers.

You will notice the eraser filter set up looks very similar to the exporter. Here is the filter we will use:
add_filter( ‘wp_privacy_personal_data_erasers’, ‘register_todo_list_eraser’ );

Now, we need to set up the callback that will set up the eraser itself. This is accomplished in two steps. the first will set the name of the eraser and the second will be another callback function. This function will contain code that performs the actual deletion of data. It accepts an array of currently registered erasers as a parameter. We will add our eraser to this list.

function register_todo_list_eraser( $erasers ) {
$erasers[‘todo-list’] = array(
‘eraser_friendly_name’ => __( ‘Todo List’ ),
‘callback’ => ‘todo_list_eraser’
);
return $erasers;
}

Next up, we need to write the function that erases the data. We will be doing a custom database query to retrieve the results. Please note that we are not including any SQLprotection here in order to keep the sample simple. You should always ensure you properly sanitize, escape, and otherwise clean up data before use in a real application.

The function definition
function todo_list_eraser( $email_address, $page = 1 ) { }

Build the query
To erase the data we need to tap into $wpdb to query our custom table. Be sure to delete only data associated with the email address provided by the eraser!

$removed = $wpdb->delete( ‘todo_list’, array( ’email’ => ‘sally@example.com’ ) );

Return the result
Finally, we return the result of the eraser.

return array(
‘items_removed’ => $removed,
‘items_retained’ => false,
‘messages’ => array(),
‘done’ => true,
);

The return array elements are:
items_removed: this is a boolean on whether items are removed. In this example I am passing back the result of $wpdb->delete() which could be an integer.WordPress interprets it properly for the truthiness.

items_retained: this is a boolean check as to whether any records were not removed from the database.

messages: an array of string messages that can be presented to the user if needed.

done: boolean on whether the erasure process has finished.

Wrapping it up
That is it! I hope this example has been useful to show you how you can implement code in your plugins to tap into the new privacy hooks in WordPress. It can be used for nearly anything stored in the database that can be referenced back to a user or email address.

You are now equipped to confidently go forth and tackle all the new GDPR compliance needs using only WordPress core functionality.

The post Tapping into the New WordPress Core Privacy Hooks to Ensure GDPR Compliance appeared first on WebDevStudios.

]]>
https://webdevstudios.com/2018/06/07/wordpress-gdpr-compliance/feed/ 0 18708
9 Critical Concepts for Leading High-Performance Teams https://webdevstudios.com/2018/05/24/leading-high-performance-teams/ https://webdevstudios.com/2018/05/24/leading-high-performance-teams/#respond Thu, 24 May 2018 16:00:20 +0000 https://webdevstudios.com/?p=18464 I just returned from WebDevStudios’ (WDS) 2018 WDS Camp, a company-wide, weeklong retreat. The annual event provides face time for a team that is distributed across the entire geographical region that is the US. As I sat on the six-hour flight home, I reflected on the past week and noticed that nine concepts continued to Read More 9 Critical Concepts for Leading High-Performance Teams

The post 9 Critical Concepts for Leading High-Performance Teams appeared first on WebDevStudios.

]]>
I just returned from WebDevStudios’ (WDS) 2018 WDS Camp, a company-wide, weeklong retreat. The annual event provides face time for a team that is distributed across the entire geographical region that is the US. As I sat on the six-hour flight home, I reflected on the past week and noticed that nine concepts continued to come up in my reflection. I believe these concepts to be critical to leading high-performance teams and would like to share them with you here in hopes you will be able to implement them in your team and see the same success that I have seen utilizing them.

If you want to be a better leader, shut up

World-renowned leadership expert, John Maxwell, says:

Good leaders ask great questions.

He even wrote of a book by that title that I highly recommend. As a leader, you have a big vision but only one brain. You may be highly skilled but there will always be areas you have not considered. Sharing your vision with your team, and then asking them great questions amplifies the possibilities. By yourself, your vision is just another work item for your team. Engaging the team in your vision by asking questions taps into their creativity. The result will always enhance your vision. It may also identify additional opportunities along the way you would have never seen alone. When your team is actively engaged in your vision, they gain a sense of ownership and are motivated to get it done in the best ever way it can be done.

You can build better software by turning OFF your computer

What do you mean turn off your computer? How can a software company build better software without a computer? It seems counterintuitive to suggest this, but there are major benefits to turning off your computer. I will focus on just one.

Turning off your computer allows you to connect with your team members.

There are no distractions, no pings, no more doing “just one more thing.” Face-to-face, distraction-free communication establishes a deeper rapport with your team. It creates stronger connections. It allows them to get to know the real you and discover more about each other. This adds immeasurable value to each team member. The next time computers are turned back on, your team will be stronger together and WANT to help push your product to the next level. There is no external substitute for the power and motivation that comes from inside yourself.

A walk on the beach can make you a million dollars

Get away from the formalities. Create an open invitation for your team to join you doing something enjoyable, like taking a walk on the beach. Being away from the structure and processes of the company encourage your team members to dream about what would make the company the best ever for them. All it takes to start the ideas flowing is a simple question like, “What would this company look like if you had full control to change or improve it any way you like?” Then ask, “What would it take to get there?”

Encouraging your team to dream in a no holds barred way shows how much you value their ideas and you may very well come back from your walk with an idea that will make you a million dollars!

Let the ideas flow

Never shoot down an idea from your team! An idea may not make sense to you, but your team has boots on the ground. They are daily in the trenches. They see things you do not. The idea may not make sense at first but there is always a reason someone suggests a change. Instead of shooting it down, dig into it. Ask lots of questions. Seek understanding. Be curious. Really consider what they are saying and how it could fit into the overall picture. To help it fit into the bigger picture suggest small tweaks in the form of encouraging questions. Such as, “This sounds really interesting. I am wondering, what would it look like if we slightly altered the idea with… [insert tweak]?”

Allowing and encouraging your team to bring you ideas will create a sense of openness, trust, and respect. All of which are key building blocks of a strong team and leader.

Be an enabler.

Do not be the roadblock preventing your team from moving forward. Do whatever it takes to enable your team to move forward with ideas that will push the company forward.

Empower your people

Years ago, my friend and missions director at Churchome, Joanne Ramos, was speaking to a crowd on raising children when she said something that has stuck with me ever since. She said:

Kids need infinite freedom within definite boundaries.

This same idea can be applied to your team with powerful results. Provide the vision; provide the boundaries, then unleash your team. Give them the power to make decisions for the team/company/product/etc., within those boundaries. It may seem like this will make you obsolete as the leader but the reality is that 10 out of 10 times your capacity will increase. The skill and power of your team will increase. Your position as the leader will be strengthened, and you will be more valuable to your own leadership.

Play with your people

It is impossible to be in work mode all the time. Make sure you take time to relax. Play a game. Get a coffee. Go to lunch. Do something that is fun with your people. Let them see that you are still human and approachable. Learn what brings them joy and go do it with them. It is particularly easy to do this at a company retreat. Just make sure you do not overdo it! You never want your people to feel like it is a requirement or it will have a detrimental effect, the exact opposite of what you intended. Pay attention to your team. They will let you know when it is time to play and when they need space.

Be smooth as a baby’s bottom

Friction is a great thing. Friction indicates a definite point where you and your team have a learning and growing experience. Embrace it. Do not get upset. Most importantly do not lash out. Keep your calm. This is an excellent time for you to learn. Remain as smooth as a baby’s bottom.

How should you handle the friction? Activate your coaching mode. Ask your team questions to help identify the friction. Ask questions to determine where it came from and how it got there. Ask questions on how to eliminate the friction.

Do you see a common theme of asking questions? Asking questions is so important! Humans do not always respond well to being dictated to. In fact, even in a great relationship being told to do something may make you feel like a robot and not motivated. Asking questions of your team creates ownership and internal motivation. They will solve their own problems. It will get your people moving in a way simply telling them will never accomplish.

Practice leadership yoga

Standard operating procedure (SOP) is necessary across an organization to keep everyone working together smoothly, especially when teams may not have direct interactions. But remember, your SOP is made up. It should never be set in stone. Use your vision as a leader to see where it could be improved. Engage the team to ferret out weak points. As the people in the trenches, allow the team to help mold SOP. It will only create more value for the company and everyone on the team.

Always know why you are there

Your people are THE ONLY asset to the company that is invaluable. Without them, there would be no you. Filter everything through the lens of adding value to them. If you consistently value and add value to your team members they will move heaven and earth for you and will be a source of great joy for you.

The post 9 Critical Concepts for Leading High-Performance Teams appeared first on WebDevStudios.

]]>
https://webdevstudios.com/2018/05/24/leading-high-performance-teams/feed/ 0 18464
What You Need to Know About General Data Protection Regulation https://webdevstudios.com/2018/03/30/general-data-protection-regulation/ https://webdevstudios.com/2018/03/30/general-data-protection-regulation/#comments Fri, 30 Mar 2018 17:00:28 +0000 https://webdevstudios.com/?p=18256 As an agency whose primary focus is building digital experiences, it makes sense that the 2016 rulings to roll out the General Data Protection Regulation (GDPR) would be a subject on which we need to be well-educated. We know first-hand that one of the main benefits of having a website is the ability to process Read More What You Need to Know About General Data Protection Regulation

The post What You Need to Know About General Data Protection Regulation appeared first on WebDevStudios.

]]>
As an agency whose primary focus is building digital experiences, it makes sense that the 2016 rulings to roll out the General Data Protection Regulation (GDPR) would be a subject on which we need to be well-educated. We know first-hand that one of the main benefits of having a website is the ability to process data, whether it’s for eCommerce, entertainment, or a slew of other reasons.

Business owners, including WebDevStudios, and customers conduct transactions online. The laws governing those transactions directly affects our business and those of our clients. This is why we thought it was imperative to put together this article to bring you up to speed on the latest information and resources to help you navigate how this law may apply to your organization.

If you’re interested, we perform site audits and can work with you on ensuring your website and data processing are GDPR compliant.

What is GDPR?

General Data Protection Regulation is a European personal data privacy law. GDPR was approved in 2016 but had a grace period for implementation until May 2018. It will affect any business based in the European Union (EU) as well as citizens of the EU.

It is going to be absolutely binding throughout the EU and will have extraterritorial effects beyond its borders. The GDPR regulates, among other things, how individuals and organizations may obtain, use, store, and eliminate personal data.

It should be noted that the GDPR replaces Directive 95/46/EC, which is the current privacy law that has been around since 1995. The reason we’re bringing this to your attention is because Directive 95/46/EC is commonly found on sites across the internet today.

Disclaimer: Please note that this guide is for informational purposes only, and should not be relied upon as legal advice. We encourage you to work with legal and other professional counsel to determine precisely how the GDPR might apply to your organization.

When does it come into effect?

The GDPR has been in effect since April 2016, however, it had a grace period of enforcement till May 25, 2018. All organizations are expected to comply with GDPR after May 25, 2018.

Who does GDPR affect?

If you are familiar with the current Directive 95/46/EC throw out everything you know about where it needs to be enforced. GDPR dramatically expands the scope of enforcement to include:

  1. All organizations established in the EU
  2. All organizations involved in processing personal data of EU citizens

The second provision established an extraterritorial principle, which means that:

GDPR will apply to any organization processing data of EU citizens, regardless of the location of the organization.

Whether or not your organization is in or has servers in the EU, GDPR could apply to you if your business website contains personal data.

Please be sure to analyze what data your organization collects and whether it could contain data on EU citizens. It is also highly recommended you seek legal counsel to understand the full ramifications of GDPR to your organization.

What is considered “personal data?”

GDPR loosely defines personal data as any information relating to an identified or identifiable individualmeaning, information that could be used on its own or in conjunction with other data to identify an individual.

Some data known to be identifiable (this is not a complete list!):

  • IP address
  • Name
  • Email
  • Physical address
  • Phone number
  • Social security numbers

It then goes a step further and includes any data that could potentially link back to a person, such as, but not limited to:

  • Financial data
  • Religious views
  • Political views
  • Behavioral data

What does it mean to “process data?”

While “processing data” is still an ambiguous concept within the stated regulations of GDPR, broadly, it can cover any electronic interaction with personal data. That could include:

  • Collecting
  • Recording
  • Storing
  • Organizing
  • Adapting
  • Altering
  • Disseminating
  • Retrieval
  • Consultation
  • Usage of
  • Transmission
  • Publishing

In essence, if your organization is touching data of an EU citizen in any way, it will most likely fall under GDPR.

How is GDPR different than my existing cookie compliance?

GDPR expands rather than eliminates what already exists in Directive 95/46/EC. Here are a few of the key provisions worth noting:

  • Expands scope: GDPR has expanded the scope of the law to include any data of any EU citizen anywhere in the world.
  • Redefines what personal data is: Previously letting a user know they were being tracked via cookies was enough, but no longer. GDPR casts a much larger net to include any data that could possibly be linked back to the real identity of a person.
  • Expands individual rights: EU citizens will have several important new rights under the GDPR, including the right to be forgotten, the right to object, the right to rectification, the right of access, and the right of portability. You must ensure that you can accommodate these rights if you are processing the personal data of EU citizens.
  • Creates stricter consent requirements: With Directive 95/46/EC, it was often enough to get implicit consent through displaying a banner telling the user that continued use of the site implies consent. This is not so under GDPR. Users must provide explicit consent for use of their personal data. Furthermore, each type of data used is required to be spelled out and consented to.

While we have outlined some of the major changes, GDPR has far-reaching effects. We highly recommend you seek legal counsel as to its specific impact on your organization.

What are the expanded rights of individuals?

GDPR introduces several new individual rights that are important. These new rights may require alteration to your organization’s service.

  • Right to be forgotten: An individual may request that an organization delete all data on that individual without undue delay.
  • Right to object: An individual may prohibit use of any particular data.
  • Right to rectification: Individuals may request that incomplete data be completed or that incorrect data be corrected.
  • Right of access: Individuals have the right to know what data about them is being processed and how.
  • Right of portability: Individuals may request their personal data in a downloadable digital format that can be utilized by another organization.

But my business is not located in an EU country, why should I follow it?

As always, you should consult with legal counsel to determine the effect the GDPR will have on your organization. Per GDPR if you are located in the EU or processing any data on an EU citizen it is likely that GDPR will be applicable to your organization.

It is important to understand how GDPR affects your organization as the penalties for non-compliance are staggering:

Fines can be up to 20 million Euros or 4% of your annual revenue!

Enforcement is not consistent across the board either. Each EU member state is able to enforce compliance and levy fines as they see fit. Some countries, such as Germany, take privacy very seriously and are likely to be less forgiving in their tactics.

How do you prepare your site for GDPR?

In addition to seeking legal counsel, you should do a full audit of your site to determine where and what personal data is being processed.

Once you have identified all the areas data is collected on your site, determine what data is absolutely necessary for proper operation of your organization. If the data collected is of no real use/value, it would be an easy win for compliance to simply remove the data and its processing points. If the data is necessary, you will need to write it into the list of data collection and processing details for the user’s consent.

Next, you will need to implement measures that allow the user to provide consent, view, delete, update, and download their personal data.

How can WebDevStudios assist my site in GDPR compliance?

Here at WebDevStudios, we are passionate about partnering with you to create a high-quality site that your stakeholder, customers, and government regulators will enjoy. We happily work with your legal requirements to ensure your website meets and exceeds expectations.

We are having internal discussions and planning sessions regarding how this might impact our customers. This has led us to work on internal solutions that we’ll be bringing to our clients based on their specific needs and requirements.

Site audits can be onerous. Let us take that headache off your hands. WebDevStudios is well-versed in site audits. We would be happy to partner with you to audit your site for personal data collection points and any other audit requirements you may have.

Get in touch with us today to schedule your site audit!

Disclaimer: Please note that this guide is for informational purposes only, and should not be relied upon as legal advice. We encourage you to work with legal and other professional counsel to determine precisely how the GDPR might apply to your organization.

Additional Resources

Are you the type of person who loves getting into the dirty details? Here are some additional resources to dive deep into GDPR. Be sure to bring your diving gear and a flashlight. It gets murky in there!

The post What You Need to Know About General Data Protection Regulation appeared first on WebDevStudios.

]]>
https://webdevstudios.com/2018/03/30/general-data-protection-regulation/feed/ 1 18256
What Is WordPress Multisite and How Can It Help You? (Part 3) https://webdevstudios.com/2017/08/30/wordpress-multisite-can-help-part-3/ https://webdevstudios.com/2017/08/30/wordpress-multisite-can-help-part-3/#respond Wed, 30 Aug 2017 16:00:31 +0000 https://webdevstudios.com/?p=17507 Editor’s Note: The following is the final article in a three-part series titled, “What Is WordPress Multisite and How Can It Help You?” Read Part 1 here and Part 2 here. Part 3: Can WordPress Multisite Help You? In the previous two parts, we introduced you to new concepts in WordPress Multisite that a single Read More What Is WordPress Multisite and How Can It Help You? (Part 3)

The post What Is WordPress Multisite and How Can It Help You? (Part 3) appeared first on WebDevStudios.

]]>
Editor’s Note: The following is the final article in a three-part series titled, “What Is WordPress Multisite and How Can It Help You?” Read Part 1 here and Part 2 here.

Part 3: Can WordPress Multisite Help You?

In the previous two parts, we introduced you to new concepts in WordPress Multisite that a single site installation does not have. In this final part, we will guide you toward an understanding of when using WordPress Multisite is the best option, and help you determine if it is the right fit for your organization.

So far, I have provided a lot of information on what WordPress Multisite is and the benefits it contains, but what about the practical application of it? You came here wondering if WordPress Multisite might be the solution for you. This section will outline key things to consider when deciding whether or not to use WordPress Multisite.

When You Should Use WordPress Multisite

There are some instances when it makes perfect sense to use WordPress Multisite. Multisite typically works best when the sites on the network all run along a similar theme or have a limited differential in terms of required functionality. Let’s take a look at a few prime candidates.

Multilingual Network

If your site needs to be translated into additional languages, using WordPress Multisite can quickly get you there. The theme and plugins will likely be the same across all sites with only content differences. Each language would be its own subsite that could be configured with access only for the translators who need to be able to touch the content. This is a strategy we utilize here at WebDevStudios (WDS) with a subdirectory install that winds up looking like:

  • English – http://acmecorp.com/en
  • Spanish – http://acmecorp.com/es
  • French – http://acmecorp.com/fr

Blog Network

WordPress can be a high-performance blogging engine. If your use case is to put together a group of basic blogs, WordPress Multisite in the answer. WordPress.com is a prime example of a blog network. Users have a limited set of functionality available to them and several different themes they can choose from. The variety in look and feel of sites hosted by WordPress.com is impressive.

While we are on the topic of WordPress.com’s service, I want to mention some of its staggering statistics

  • 21.7 BILLION page views per month
  • 79.2 million new blog posts each month
  • ~74 million sites hosted (this number is questionable as the full number is not released)

Wow! That is a huge amount of data and traffic for one WordPress installation, and guess what? Nobody has ever reached the limit of Multisite’s capabilities. As long as you have the hardware to support it, there is theoretically no limit to the number of sites you can host on a WordPress Multisite install. WordPress.com proves that.

Multi-Department Corporate Sites

Earlier, I shared a multi-department Acme Corp example. It is a common scenario we see at WDS, wherein companies desire to have departmental websites in which each department controls its own content and has some limited ability to manage the look and feel from a common style guide.

One such client we worked with tapped WordPress Multisite for their intranet. It was not even a public facing site! It was one of the more creative uses I have come across and included:

  • A couple dozen departmental sites
  • Centralized file management for forms, memos, etc.
  • HR/personnel management
  • Employees’ corner
  • Monthly corporate newsletter
  • Classified similar to Craigslist
  • Employee blogs

When You Should NOT Use WordPress Multisite

As awesome as WordPress Multisite is, there are also times when it does not make sense to use. Take a look at these examples.

Each Site Needs Significant Custom Development Work and/or Plugins

When you have a group of sites, even within the same organization, that need a significant amount of custom development work, WordPress Multisite may not be a good idea. One tiny mistake in the code for another site can have implications across the entire network—possibly crashing it.

Even when the “significant custom development” is nothing more than installing a bunch of plugins, WordPress Multisite can cause issues. Some plugins alter network operations in ways that only a super admin should be altering. Ideally, the network will have a well-defined purpose that limits the amount of customizations to functionality that will be needed per site.

A great example of this scenario is my own personal site https://ben.lobaugh.net. Being a developer, I have the ability to go in and tweak the code on my site as often as needed. I know that I can bring down the site if I screw up, but it will not affect anyone else. I am also not worried about ensuring the code I write is safe for a Multisite environment.

Each Site Needs Its Own IP Address

WordPress Multisite aims to make running a network of sites as simple and painless as possible. When you have a network of sites that all need their own IP addresses, a lot of complexity is introduced. It is absolutely possible to make it work, but it will require significant time investment in development operations to configure the servers properly. For a small network with a few sites, this may not be a big deal; but when you get into dozens and thousands of sites, it is simply not feasible.

Ecommerce

Ecommerce is a sticky wicket with WordPress. In recent years, ecommerce support on WordPress has improved dramatically for single site installs; however, Multisite ecommerce support has largely been neglected. This is in part due to the overhead needed to run a proper ecommerce site. There are additional database tables, relationships, and processing power needed to run an ecommerce site, in addition to things such as payment systems and SSL certificate requirements. Though it is possible to run WordPress Multisite in this manner, it requires a significant investment in time and architectural knowledge that usually makes it more time and cost-effective to use multiple separate WordPress single site installations.

You made it!

Congratulations on getting through all three parts in this series on WordPress Multisite. Multisite is a powerful tool that I hope you will be able to utilize. WDS loves WordPress Multisite, and we are always interested to see how others are using it. We would love it if you dropped us a line in the comments. If you would like to chat about your implementation or work with us on your project, head over to the contact page.

Looking forward to hearing about your projects!


Photo by rawpixel.com on Unsplash

The post What Is WordPress Multisite and How Can It Help You? (Part 3) appeared first on WebDevStudios.

]]>
https://webdevstudios.com/2017/08/30/wordpress-multisite-can-help-part-3/feed/ 0 17507
What Is WordPress Multisite and How Can It Help You? (Part 2) https://webdevstudios.com/2017/08/29/wordpress-multisite-can-help-part-2/ https://webdevstudios.com/2017/08/29/wordpress-multisite-can-help-part-2/#respond Tue, 29 Aug 2017 16:00:18 +0000 https://webdevstudios.com/?p=17503 Editor’s Note: The following is Part 2 in a three-part series titled, “What Is WordPress Multisite and How Can It Help You?” Read Part 1 here. Read Part 3 here.  Part 2: Why Does WordPress Multisite Matter? If you have not read it already, go read Part 1 in this series, as it introduces the new terms WordPress Read More What Is WordPress Multisite and How Can It Help You? (Part 2)

The post What Is WordPress Multisite and How Can It Help You? (Part 2) appeared first on WebDevStudios.

]]>
Editor’s Note: The following is Part 2 in a three-part series titled, “What Is WordPress Multisite and How Can It Help You?” Read Part 1 here. Read Part 3 here

Part 2: Why Does WordPress Multisite Matter?

If you have not read it already, go read Part 1 in this series, as it introduces the new terms WordPress uses for its Multisite environment. It also provides a high-level view of what WordPress Multisite is. In this part of the series, we will go over the why WordPress Multisite matters.

WordPress Multisite takes the hassle out of maintaining several individual WordPress installations, each hosting only a single site. It comes in handy in organizations with several brands, departments, or business units that need to share functionality, or data, in a convenient manner. It helps IT teams spend less time maintaining multiple hosting environments, patching security issues, and ensuring sites are kept updated. In my example (see Part 1), WordPress Multisite allows me to create a platform as a service (aka, PaaS) hosting environment for family and friends.

Let’s delve a bit deeper into some of the powerful features of WordPress Multisite.

Centralized Management

Because WordPress Multisite is running from a single installation of WordPress, it brings all the sites together into one centrally managed location. This has several benefits, including:

  • Shared core/plugin files
  • Shared updates
  • Super admin management

Let’s look at each of these in more detail.

Shared Core/Plugin Files

Maintaining multiple individual WordPress installations can be a pain, as you are required to ensure the WordPress core files, plugin files, and theme files are available for each installation. WordPress Multisite simplifies this to a single copy of all the files. Let’s use the following illustration as an example.

  • Acme Corp has four departments that each need a website: HR, Engineering, Products, Support.
  • Acme Corp has a standardized style guide and required functionality for each site.

With a typical WordPress single site setup, Acme Corp would normally be responsible for four completely separate sites, including all the developmental operations that go into it, such as hosting plans, DNS management, and remembering which plugins need to be installed for consistency.

WordPress Multisite flips that situation on its head. In the Multisite paradigm, Acme Corp will now save time and money with one installation, one DNS entry, one hosting plan. Plus, all themes and plugins are available to every site out of the box.

One Place to Update All the Things

That brings us to updates and security patches. Getting updates processed and completed in a simple and efficient manner is important. In the Acme Corp example above, it would take four times the effort to get all the sites updated. As the number of sites you run expands, so do the efforts of maintaining these sites.

WordPress Multisite simplifies this down to the same amount of effort it takes for a single site. With just a couple of clicks, updates are applied to all sites on the network. There is no need to remember account information for multiple sites, or run the risk of forgetting an important security patch on one of the sites, and thus compromising potentially sensitive data.

Site Administration Made Easy

Providing proper access levels is paramount in any organization. Users should only have the level of access that they need to do their job and nothing more. The person in charge of administrating the site will need administrative access over all things. In WordPress Multisite, the administrator role remains, but it is limited to the site on which the user has been assigned the administrator role. For users who need access to all of the sites, a new role called super admin is introduced. Super admins have the ability to manage network level actions as well as get into the dashboard on any site. This allows super admins to not only control the network, but to also help site administrators when they have questions or need assistance running their site.

By now, you should understand what WordPress Multisite is and why it it is such a valuable tool. In the next and final part of this series, we will cover when using WordPress Multisite is a good idea, and if it could be the right fit for your organization.


Photo by Carl Heyerdahl on Unsplash

The post What Is WordPress Multisite and How Can It Help You? (Part 2) appeared first on WebDevStudios.

]]>
https://webdevstudios.com/2017/08/29/wordpress-multisite-can-help-part-2/feed/ 0 17503
What Is WordPress Multisite and How Can It Help You? (Part 1) https://webdevstudios.com/2017/08/17/what-is-wordpress-multisite-and-how-can-it-help-you-part-1/ https://webdevstudios.com/2017/08/17/what-is-wordpress-multisite-and-how-can-it-help-you-part-1/#respond Thu, 17 Aug 2017 16:00:32 +0000 https://webdevstudios.com/?p=17447 Editor’s Note: The following is Part 1 in a three-part series titled, “What Is WordPress Multisite and How Can It Help You?” Read Part 2 here. Read Part 3 here. Introduction to WordPress Multisite There is a good deal of information on the web about WordPress Multisite, but most of it dives too deep technically, Read More What Is WordPress Multisite and How Can It Help You? (Part 1)

The post What Is WordPress Multisite and How Can It Help You? (Part 1) appeared first on WebDevStudios.

]]>
Editor’s Note: The following is Part 1 in a three-part series titled, “What Is WordPress Multisite and How Can It Help You?” Read Part 2 here. Read Part 3 here.

Introduction to WordPress Multisite

There is a good deal of information on the web about WordPress Multisite, but most of it dives too deep technically, or quickly shows you steps to set up a Multisite environment. I am going to tackle it from another angle, from the point of view of an outsider looking in (with possibly no technical background) wondering if WordPress Multisite will fit the needs of their organization. To help facilitate the discussion, let’s start with some terminology.

New Terminology

WordPress Multisite introduces new ideas into WordPress, and there are several new terms that come along with it. Below are the various Multisite terminologies defined to help provide a foundation in communication for the rest of the article.

  • Network: The Network refers to a group of sites created on your Multisite instance. Though it is technically possible to run multiple networks on a single Multisite instance, we will focus on the basic single network that comes with Multisite. To keep things simple, you should be aware that some older literature referred to a Network as a Site.
  • Site: A site refers to a single site within a network. These are sometimes also referred to as subsites, or blogs. Over the years, the term site has changed meaning to refer to the individual sites on a network. You may see reference in older literature that use the term site in the context of network.
  • Blog: Another name for a single site on the network.
  • Subsite: Another name for a single site on the network.
  • Network Admin: This is a new section of the wp-admin area that appears in the Admin Bar after enabling Multisite on your WordPress installation. The Network Admin is where you will control the sites, plugins, and themes available to your sites.
  • Super Admin: Super Admin is a new role that is available specifically for Multisites. Users with Super Admin access are allowed to access the Network Admin area and manage the entire network. Super Admins can access the dashboards of any site and administer them as well. The traditional Administrator account only has access to the sites it has permissions on.
  • Subdomain Install: Network setup option that creates new sites with a subdomain of the primary domain. For example:
    • Primary domain: example.com
    • Site for Bob: bob.example.com
    • Site for Sally: sally.example.com 
  • Subdirectory Install: Network setup option that creates new sites with a subdomain of the primary site. Useful when creating sites that all need the same look and feel such as corporate or language sites. For example:
    • Primary domain: example.com
    • Site for Bob: example.com/bob
    • Site for Sally: example.com/sally

What is WordPress Multisite?

You are undoubtedly familiar with WordPress. A content management system you install to manage your website content. Perhaps you have multiple websites, each with their own installation of WordPress running the site. Enter WordPress Multisite; WordPress Multisite transforms a single site into a powerhouse that can run an unlimited number (nobody has found a max number yet!) of websites from a single WordPress installation. In essence, it could combine all the individual WordPress installations you run into one single installation that supports all the sites. Each site can have its own domain, theme, and set of plugins utilized.

As an example of how I use the power of WordPress Multisite, I have several family members who have basic blogs set up to post their random thoughts. There are also several organizations that I have helped support over the years and test beds for new corporate sites running. Each of the site owners are able to manage their own content, while I ensure the network stays up and running efficiently with WordPress, and that all plugins are kept up to date.

Feel free to take a peek at a couple sites on my network:

You will notice there are subdomains and custom domains. WordPress handles both with elegance. By default, new sites on my network are created as subdomains of lobaugh.us and then a custom domain is applied when ready. Subdirectories are also supported. Subdirectories make it look like all the sites are part of the same domain. For example, in my network, my sister’s site could be http://lobaugh.us/raeann. There are good reasons to run WordPress Multisite in subdomain mode that I will get into in Part 3.

In Part 1, you were introduced to new terminology used by WordPress Multisite and provided a high level view of what WordPress Multisite is. In the following parts, we will cover why using WordPress Multisite matters, and how to determine if it could be the right tool for your organization.

The post What Is WordPress Multisite and How Can It Help You? (Part 1) appeared first on WebDevStudios.

]]>
https://webdevstudios.com/2017/08/17/what-is-wordpress-multisite-and-how-can-it-help-you-part-1/feed/ 0 17447
Level Up Your Team with a Few Simple Leadership Principles https://webdevstudios.com/2017/04/20/level-up-your-team-with-a-few-simple-leadership-principles/ https://webdevstudios.com/2017/04/20/level-up-your-team-with-a-few-simple-leadership-principles/#respond Thu, 20 Apr 2017 13:00:06 +0000 https://webdevstudios.com/?p=16827 Look across the world today, and it is astounding to see what humanity has built. All humans have amazing creative capabilities that can be tapped into to take yourself and your business to the next level. Tapping into that potential requires good leadership and can seem intimidating, but I would like to challenge that preconceived notion Read More Level Up Your Team with a Few Simple Leadership Principles

The post Level Up Your Team with a Few Simple Leadership Principles appeared first on WebDevStudios.

]]>
Look across the world today, and it is astounding to see what humanity has built. All humans have amazing creative capabilities that can be tapped into to take yourself and your business to the next level. Tapping into that potential requires good leadership and can seem intimidating, but I would like to challenge that preconceived notion with a few simple principles that you can utilize today to level up your people.

It is all about your people.

Your people are your most important asset. Without people your company will not achieve much, therefore before you are a company that does XYZ you need to be a people-building company. What does it take to be a people-building company? While salary and work benefits are important, you might be surprised to learn that they are not the most important. A sense of purpose, belonging, and a feeling of effectiveness in an organization are the primary drivers that will keep people engaged and growing in your business.

Get to know your team.

Creating time to meet with and listen to your people in a relaxed one-on-one environment will build their trust and establish feelings of self worth. During these one-on-one sessions, it is important to listen often and speak little. The purpose is to hear the dreams and passions of your people. Validate their feelings and encourage their ideas and creativity, especially in areas that may challenge you, as that will encourage bonding and create growth within the company. Find out why they are working at your company and what they envision their role looking like over the next one, five, and more years. Help them achieve their dreams, and build them up as leaders in their own right.

Learn the strengths of your people and play to those strengths. Everyone at some point will need to perform tasks in skill sets they are weak in. If they are consistently asked to work in areas of weakness, they will not last long on your team. Find ways to build on your team’s strengths to take them to the next level.

Allow and encourage people to become subject matter experts in their areas of interest and encourage the rest of the team to learn from them. Allowing them to share their knowledge with the team will provide the recognition all humans crave and create great team collaboration opportunities. Additional side effects of this are increased confidence and leadership skills building. Both of which provide immeasurable benefits to your company and the individual.

Trust your people.

Trust is another critical component and it must go both ways, but it starts from the top. Good relationships require implicit trust; and as the leader, it is your job to step up and provide the first offering of trust. Trust is not given if feelings of respect and safety are not also present. Both require time and consistency to build, but it will happen.

As a leader, if you are in a situation where you do not trust or feel safe with your own people or there is a lack of trust among the team, it is a prime opportunity to step up and lead. Noted leadership and business coach Simon Sinek says, “If the leader does not feel safe from their own people, it is because the leader is not taking care of their people.” Change yourself first, and your people will follow.

Failure does not exist.

Humans are humans, and humans are not perfect. If we were perfect, there would be no innovation and the word “sorry” would not exist in our language. No matter how good your people are, at some point, they will come up short. How you react as their leader in this time will define the relationship far into the future. Speak positive, encouraging words, and your people will follow you anywhere. Speak negatively, and you will cause damage that will take significant time and energy to repair.

In my own personal life, I have adopted a motto, “If I am not winning, I am learning.” What do you notice about that statement? I replaced a negative word, failing, with a positive action: learning. Negativity shuts down the brain and brings out defensive instincts. Eliminating the negative aspect and replacing it with a positive causes the brain to open up and think about new possibilities and ways to overcome the issue at hand.

Negativity breeds negativity. If you have a negative attitude towards your people, that negative attitude will be reflected back at you. Luckily, positivity also breeds positivity. By staying positive as the leader, your people will be positive with you.

Overcoming negativity is possible and will require you to change and become the positive person first. At first, people will be suspicious; but with time and consistency, the trust and respect will be earned back.

Celebrate success and partner in weakness.

One of the very best ways to create a positive atmosphere of trust and respect is to celebrate your people’s successes and partner with them in weakness (remember, there is no failure!). The human ego constantly wants stroking. It is very natural that when a project goes off successfully, you want recognition for the success. This applies to your people, too.

Good leaders become transparent during success. Instead of taking glory for yourself, a good leader will elevate and brag about the people responsible for helping create success. This simple action releases feel-good chemicals in your people’s brains that will drive them to more success in the future. Any ego-stroking or glorification you may think you lose in the process will be made up for and magnified in the form of goodwill that you will receive from your team. Your people will strive for even better results in the future, which will increase your team’s standing in your organization and elevate your status as a leader among your own leadership.

On the flip side, in times of weakness, the presence of the leader is most visibly seen. These are the times when your people will be looking to you for your reaction and guidance through the storm. Instead of reacting negatively, a good leader will join the person or persons struggling as a partner alongside them, helping them through the situation and back to success. These times should be seen as times of learning, both for the person and the leader.

At the end of it, the person will have learned new problem-solving skills and gain insight into how to quickly resolve the matter in the future, should it happen again. The leader will have earned greater trust and respect from their person and acquire powerful insight into how to prevent such issues from evolving before they even start. Celebrating the person’s success after one of theses times may be more important than during a completely successful time. Be sure not to skip it at this juncture.

Stay positive in tough times.

In the midst of a tough time, it is easy to lose focus on the big picture and only focus on the negative happening now. A good leader will not get sucked into this mindset and will instead focus on staying positive. Tough times are temporary and should be treated as such. Keeping that in mind and finding the silver lining will do much to boost the morale of your people and will teach them how to react in other tough times. Your people will look to you more than ever during moments of challenge. Stay steady, do not despair, and your team will become a source of inspiration for you just as much as you are for them. By keeping a positive attitude, your team will win together and have some great learning opportunities along the way.

Give lots of compliments.

The final thought I will leave you with promotes not only leadership, but good will in general. That is to give lots of compliments. People love hearing positive things about themselves. A quick compliment here and there can do a lot for morale. It does not even have to be business-related. Maybe they have a cool new pair of shoes or did something helpful for a coworker. Compliments are the bread and butter of happy people!

Wrapping it up.

I hope the above has helped you see that being a good leader is not difficult. Following these few principles will level up both you and your team and you will become a powerhouse in any organization you are part of:

  • People are of primary importance
  • Get to know your team
  • Trust your people
  • If you are not winning, you are learning. Failure does not exist
  • Celebrate success and partner in weakness
  • Stay positive in tough times
  • Give lots of compliments

Now go forth, and lead the world to greatness!

The post Level Up Your Team with a Few Simple Leadership Principles appeared first on WebDevStudios.

]]>
https://webdevstudios.com/2017/04/20/level-up-your-team-with-a-few-simple-leadership-principles/feed/ 0 16827
Winning With Code Reviews https://webdevstudios.com/2016/08/25/winning-code-reviews/ https://webdevstudios.com/2016/08/25/winning-code-reviews/#respond Thu, 25 Aug 2016 17:36:34 +0000 https://webdevstudios.com/?p=13339 Here at WebDevStudios we put a lot of emphasis on code quality. After handing off a product to a client, we never know who may be looking at and/or maintaining our code. We want to be proud and confident that the next person will not have an OMGWTFBBQ-head-smashing-into-keyboard moment, but one of delightful surprise. How Read More Winning With Code Reviews

The post Winning With Code Reviews appeared first on WebDevStudios.

]]>
Here at WebDevStudios we put a lot of emphasis on code quality. After handing off a product to a client, we never know who may be looking at and/or maintaining our code. We want to be proud and confident that the next person will not have an OMGWTFBBQ-head-smashing-into-keyboard moment, but one of delightful surprise.

How do we consistently create and maintain a high level of quality code? Through peer code reviews.

All developers at WebDevStudios are encouraged to request code reviews and to provide their own feedback to others on their code review requests.

Peer code reviews have enhanced the code quality at WebDevStudios by leaps and bounds. Now instead of coding in a hole, all the developers are actively striving to write good, clean code that will pass a code review the first time. Instead of feedback coming in the form of correction from a (busy) lead it has become a game amongst the developers to see who can write the most elegant and bug free code the first time out the gate. As a result, the coding standards and practices at WebDevStudios have grown and enhanced.

This all sounds good, but how does it work in practice?

When we receive a new project, it goes through an architecting phase that identifies all the key elements that will be required. These elements are then further broken down into their respective features. We utilize the Git code versioning system and its branching model to create a unique branch per feature, which we have detailed in a previous post titled An Alternative Git Flow for Client Work.

After a developer has finished a feature and before merging it back into the main branch, a code review is requested. Doing the code review at this step allows the reviewer to see all of the changes made on the feature branch compared to the main branch quite easily. The reviewer can then switch between branches to verify the feature code works and, if so desired, merge the feature into other branches to review against.

Reviews may be done by more than one other developer and have sometimes spurred incredible conversation and debate on the merits of performing an operation this way versus that way.

Code reviews promote healthy culture

As developers we are very proud of our code. Code is our form of art–where we express our inner Rembrandt. As such, critique of our artistry can be a stinging blow to our egos. I have seen instances where developers have nearly come to (virtual) blows when one suggests a change to the other’s code. Creating a healthy culture for code reviews counters any negative feelings that may arise.

We are all on the same team and we all have the same goal: To deliver the highest quality product to the client. When I was young my mother used to tell me, “If you do not have anything nice to say do not say anything at all.” We have applied the same motto to our code reviews. Feedback is never negative, but always constructive. By using positive language and helpfully showing each other new tricks and techniques, the skills of WDS devs have increased across the board and we have grown closer as a team.

Code reviews enhance security

Let’s admit it: All of us have written some code with a vulnerability issue. The most common of which is SQL injection points through unsanitized input. While coding, it is easy to become wrapped up in getting the feature done and lose sight of all the security implications of what you are writing. Having another set of eyes review the code can help to identify weaknesses.

This is further backed up by looking at a few of the major exploits that have been found in the WordPress ecosystem this year alone. Many of them were not found by probing the application, but by looking at the released source code and finding some place allowing unsecured input.

Code reviews increase social recognition and a feeling of self-worth

This may sound strange but there is powerful psychology behind code reviews. Providing code reviews causes us to feel good about helping out another, and receiving a code review that does not indicate anything needs to be updated in your code becomes almost a drug unto itself. Developers tend to amp up their game to “beat” the reviewers. Even us lead developers have our code reviewed, and I can tell you that nothing excites the team more than poking holes in code of the “best” developers on the team. (…Yeah, I had a code review only critiquing my use of white space…).

aziz ansari gif, code reviews, the importance of code reviews, why do code reviews, what is a code review, should lead developers do code reviews, how to do a code review, what's the point of a code review

Is it really worth the extra time?

When working on client projects time is of the essence, so we had to ask ourselves, “Is this worth the extra time it will take to develop a feature?”

The resounding answer is YES!

The increase in code quality and skills of the developers alone makes code reviews worth it, and the added benefit is finding bugs to be squashed well before being introduced in production.

According to a 2002 report by the National Institute of Standards and Technology a bug found post-production takes 18.7 hours to find and fix while a bug found during a code review takes just 3.2 hours to fix! That is 15.5 hours saved! What “extra time” are you worried about!?

Go forth and review thine code

As you can see, the idea behind code reviews is a simple one but it has BIG benefits. I want to encourage you to begin integrating code reviews into your workflow.

You may not have a team like we do here at WebDevStudios, but if you are reading this, you are part of the team of the community. WebDevStudios is just one fish in this pond that we call WordPress. Together, we are all striving to enhance this product that we use and love. Now get out there and start doing those code reviews!

I would love to hear about your experiences with code reviews in the comments and how your company or organization has implemented them.

The post Winning With Code Reviews appeared first on WebDevStudios.

]]>
https://webdevstudios.com/2016/08/25/winning-code-reviews/feed/ 0 13339
Unexpected Practical Applications of Programming Skills https://webdevstudios.com/2015/12/08/unexpected-practical-applications-programming-skills/ https://webdevstudios.com/2015/12/08/unexpected-practical-applications-programming-skills/#comments Tue, 08 Dec 2015 18:35:21 +0000 http://webdevstudios.com/?p=11965 Years ago, I worked in the electronics department of the Kmart in the city where I grew up. I was a young fresh teenager attending college for both Computer Science and Music Theory. Each day I interacted with dozens of customers, coworkers, management, products, and store processes. I did not particularly like working at Kmart, Read More Unexpected Practical Applications of Programming Skills

The post Unexpected Practical Applications of Programming Skills appeared first on WebDevStudios.

]]>
Years ago, I worked in the electronics department of the Kmart in the city where I grew up. I was a young fresh teenager attending college for both Computer Science and Music Theory. Each day I interacted with dozens of customers, coworkers, management, products, and store processes. I did not particularly like working at Kmart, but something happened during my time there that provided an unexpected practical application of the programming skills I had been taught in school.

Objectify the world
As I sat at the electronics counter of Kmart day after day, my brain began to unconsciously assimilate patterns–patterns of customers, product layouts, when and what people were purchasing, etc. Eventually these patterns broke into my conscious mind and were a curiosity. As I endeavored to understand these patterns better, I fell back on my programming skill to build a model.

In the programming world, there is a paradigm called Object Orient Programming, or OOP. In OOP, you create an object to represent a “thing.” That “thing” has attributes (information about itself) and methods (actions it can take). An object represents the entirety of what a thing is and can do.

Based on observation, and some clever deduction, I began to break the “things” in the store down into their associated methods and attributes. I have always had a thirst for knowledge and breaking down the “things” helped me better understand their purpose, how to use them, and what they were for.

By performing this exercise many times over, I acquired an innate ability to quickly look at a “thing” and break it down programmatically in my head. I gained a valuable life skill that has enabled me to confidently step into new situations, hobbies, projects, and more and have a level of immediate comfort and knowledge in how things work and why they work that way.

Create better relationships
Objects are cool! They can have fun attributes, such as how far you can shoot that water gun and soak your little sister, and relaxing methods, such as “play latest smooth jazz compilation”, but objects by themselves are boring. Objects, much like us, need relationships to flourish. Objects interact with each other through their methods, with methods often being defined by the user and relationship. For example, animals drink water. An object may have a “fill with water” method and a “drink water” method.

If the object was designed for a dog, it may look something like:

bella

object WaterHolder
    attribute type = bowl

    method fill_with_water:
        find_human
        show_big_puppy_eyes
        human_pours_water_into_bowl
    method drink_water:
        stick_head_in_bowl
        lick_water
        rub_wet_face_on_human

Whereas an object designed for a human may be

object WaterHolder
    attribute type = bottle

    method fill_with_water:
        spin_off_cap
        pour_water_from_faucet
        screw_on_cap
    method drink_water:
        spin_off_cap
        use_hand_and_place_on_lips
        tilt
        swallow
        screw_on_cap

As you can see the methods and attributes of an object can help determine the purpose of object and how it relates to other objects. As I observed customers moving about the store, relationships between their attributes (age, gender, appearance, etc) showed in which products (“things”) and how they interacted with (used methods) them. It also helped me relate to them better.

Understanding how objects are built and relate to each other in a programming scenario has helped me look at the world around myself and identify the types of objects and how they relate to each other. This has been invaluable when learning a new skill, such as sailing, as I have at least an implicit understanding of how I need to interact with the people and gear around me.

Level UP
Whenever objects get together, they form a system. In the programming world, good systems have a very precise logical flow to them. As we look at the world around us, we see objects interacting inside of systems everywhere. At Kmart, that system started as soon as the customer drove their car onto the parking lot.

All of us have had experiences using applications that left us with a positive or negative feeling. Applications with positive experiences contain a well ordered system, or in programming terms, a good architecture. A developer should constantly be striving to create a better experience for users of the application. This comes through observation of usage patterns, user feedback, and other ways.

The world around us is built up of systems inside systems alongside systems. Programming taught me that the success or failure of any system is whether or not users will use and enjoy using the system. I have been able to reflect this knowledge into every area of my life, be it something small as to when and what food my dog likes to organizing a 700 person conference.

Give back
The next step, which we as open source developers embrace, is giving back. Systems, objects, and relationships are constantly being iterated on. New objects are created and inefficient objects discarded. As I have matured in my programming experience, how I code has changed. It is more concise, well written, and efficient. It interacts with other objects and systems better too.

Built into each of us is an innate desire to build and grow–to make systems and relationships better. I am no longer working at Kmart; now I enjoy my job and have even contributed to improving the system that is WebDevStudios. The things in my life that I am passionate about have/are improving as well. A few years ago I could sail a sailboat in good conditions fine; now I compete in any conditions against other very serious sailors and often come out on top.

The programming skills we have acquired on our journeys do not just have a few practical applications to our lives; they are the practical application of our life. If you let it, programming will change the way you perceive the world around you. It can provide a greater depth of understanding in how things operate and give you greater insight into how relationships work. Heck, it may even help you improve the relationship with your in-laws!

The post Unexpected Practical Applications of Programming Skills appeared first on WebDevStudios.

]]>
https://webdevstudios.com/2015/12/08/unexpected-practical-applications-programming-skills/feed/ 4 11965
Basic WordPress Terminology: What the Layperson Should Know https://webdevstudios.com/2015/10/05/basic-terminology-layperson-know/ https://webdevstudios.com/2015/10/05/basic-terminology-layperson-know/#respond Mon, 05 Oct 2015 20:36:31 +0000 http://webdevstudios.com/?p=11835 WordPress proudly touts its user first design for ease of use, but on other end of the spectrum are the website owners. Even the owner of a simple website is instantly barraged with the seeming jumble of terms, acronyms, and phrases that make up a typical WordPress installation. An experienced WordPress website owner may not Read More Basic WordPress Terminology: What the Layperson Should Know

The post Basic WordPress Terminology: What the Layperson Should Know appeared first on WebDevStudios.

]]>
WordPress proudly touts its user first design for ease of use, but on other end of the spectrum are the website owners. Even the owner of a simple website is instantly barraged with the seeming jumble of terms, acronyms, and phrases that make up a typical WordPress installation. An experienced WordPress website owner may not give a second thought to this jungle of words, but a new WordPress website owner may be daunted by terms like ‘taxonomy’ and ‘shortcode.’

Here at WebDevStudios, we commonly work with newcomers to WordPress and non-technical stakeholders that do not have time to trek through the jungle of jargon, so we have put together a helpful list of some of the most common terms a website owner may run into.

Out of the Box

WordPress is designed to be customized and expanded upon, and there are a slew of terms that go along with that. When WordPress is first installed, though, there are still plenty of new terms you will encounter right out of the box. Let’s start with the basic frontend and backend terms:

Frontend vs Backend – Simply put, the frontend is what visitors to your website will see. The backend is where you, as the website owner, will login to manage content, users, customizations, etc.

The term backend is often used interchangeably with dashboard, admin, admin area.

Posts and Pages are two types of content that you manage with WordPress. A page is generally representative of a single piece of content, such as an About Us page. A page can stand by itself and have a different layout than any other page. A post is generally part of a group of entries about a topic. E.G: A corporation my have several pages providing information on products and many posts about is products such as new product releases, product updates, and news about the company.

While editing content you will be presented with a WYSIWYG. WYSIWYG is a scary looking acronym that expands to What You See Is What You Get. In human terms, it is the box where you enter content. The box has a toolbar on top of it that allows you to mark up your content with headers, bold, italic, etc. When using the toolbar to mark up content that markup displays in the box. So if you click the bold button your text will display in bold, WYSIWYG.

Sometimes you will want to put thing into your content other than text or an image. This is where a shortcode comes into play. Shortcodes allow you to embed other forms of data into your content, such as a tweet from Twitter. Shortcodes are typically surrounded by square brackets and, building upon the Twitter example, will look similar to

Shortcodes allow developers to create a nearly unlimited set of data that can be inserted into your content.

Content gets grouped together with Tags and Categories. Tags and Categories operate under a similar premise; Categories are used to create more structured groupings of content whereas tags are often used to group elements inside the content of the current post with content in other posts. E.G: You may have a sports website with a category for tennis and in a tennis post you may have tags TeamUSA and Venus Williams. Clicking into the tennis category will show you all the posts about tennis. Clicking the TeamUSA tag will show you all posts about TeamUSA regardless of their category. Tags and categories are both taxonomies, which we will get into later.

Comments provide a simple way for visitors to your website to interact with your content, often as a response or followup question. Comments can be used as a simple form of discussion about the topic in the content and are often used to drive social interactions and create loyal users who will return to interact with your site content in the future.

The Media Library is where all the non-text content you upload to your website lives. This can be images, videos, or regular files from your computer. When editing your content, if you upload an image you will be able to find that image in the Media Library after saving the content.

Customizing WordPress

Another strength of WordPress is the ease with which it can be customized. With tens of thousands of customizations available online, both in free and paid form, you begin to get a picture of the scope of power available through WordPress.

Probably the first thing you will do with your site is change the theme. The theme is what controls the look and feel of the frontend of your site. WordPress comes with a few themes out of the box. These themes can be customized with the theme customizer available in the backend under Appearance > Customize on the left menu, or an entirely new theme can be chosen under Appearance > Themes. If you are working with a developer or designer to create a brand new theme you will find it here as well.

Where themes effect the display of your site plugins effect the functionality of the site. Plugins allow you to add functionality such as backups, additional security, payment processing, data analytics, basically anything you can imagine. Plugins can also be utilized by your site to tap into external resources such as research databases.

A website disseminating information may only need pages and posts; however, any site with additional data needs will use Custom Post Types. A Custom Post Type, or CPT for short, is a new type of data within WordPress. A CPT will be used when the data about a post is significantly unique, such as in an ecommerce site. An ecommerce site will need a Products CPT. This new CPT will contain all the properties unique to a product, such as SKU, Price, Description, Availability, etc.

Custom fields allow you to extend your posts and custom post types with additional information. This information can be nearly anything. In the example of an ecommerce site, additional information requiring custom fields is part of the product properties. Custom fields would be utilized for information such as price, quantity, size, color, etc.

Mentioned previously, taxonomies allow you to group posts by category or tag. Taxonomies in WordPress can be extended to create custom taxonomies. Custom taxonomies allow you to create unique groupings of your content. Continuing the ecommerce example, you may have a taxonomy called Product Types. Inside of this Product Types taxonomy you my create groups like t-shirts, DVDs, motorcycles, etc. Any time content needs to be grouped together a taxonomy should be used.

Some themes have built in widget areas. These areas allow you to insert pre-built elements into your theme called widgets. A widget can be anything that alters the display of your theme. Some common widgets include: search filters, promotional ads, social network links, related content, or additional information about the post.

You may have noticed some websites have an easily readable URL structure like: http://example.com/products/tshirts/dragon-rider-longsleeve. These pretty URLs are created with permalinks. Without setting a pretty permalink the previous URL may look more like http://example.com/?type=product&cat=tshirts&p=872295. Not very attractive or readable, but it is the way your website knows how to reference the product. Under the hood, WordPress matches the pretty permalink to the not so pretty permalink automagically to direct your visitor to the proper page.

Advanced tricks of the trade

You now have a high level view of WordPress! Let’s get down into what makes WordPress go.

Every time you interact with software on a computer you are seeing the result of something built in a computer language. Just like math has a language to show you a solution, computers have languages to show you an app or website. There are many different computer languages. Each language was created with a specific goal in mind. WordPress is made up of four primary languages: PHP, HTML, CSS, and Javascript.

PHP is the base language of WordPress. PHP is used on the computer that serves the website. PHP puts together all of the information about the page the website visitor wants to see. This information gets translated into HTML. HTML is a language that your computers web browser uses to display the web page on your screen. A CSS file is referenced by the HTML to make the website pretty. CSS tells your browser where elements on the page should be arranged in the layout, what colors they have, text fonts, and more. Finally Javascript comes into play by adding special interactive elements to the page that do not require the visitor to click a link to another page.

The next three terms deal with the performance of your website. They are add-ons you can get but that are not necessary to make your site operate. Your target audience and number of visitors will determine how much value they have for you.

If your site is experiencing long load times you may need to enable caching. Caching works by saving the HTML sent to your web browser on the server to be sent on subsequent requests. It can make your site faster because a cached page does not need to load WordPress or PHP. All of the elements on the page are already built and available for the visitor. When and how to use caching is beyond the scope of this document and you should ask your developer about the pros and cons of running it on your website.

If you are expecting your website to receive traffic from a wide geographical or international area you may want to look into utilizing a Content Delivery Network or CDN. A CDN will copy your website assets, such as images and cached files, to a server that is physically closer to your visitors. This can not only provide speed benefits when loading assets for the visitor, it will also reduce the amount of resources visitors are using on your server by sending them to the CDN instead.

When your website traffic reaches a point where a single server can no longer provide the resources to support your visitors you will need to scale the site to multiple servers. This can be accomplished in a variety of ways that are out of the scope of this document. An easy way to understand the power of scaling is to imagine a single server can support 1,000 visitors at once. Two servers will support 2,000 visitors, three servers 3,000 visitor, etc. Scaling has complex requirements based on your site traffic and you should consult with your developer on the best method for your use case.

The Server Side of Life

The server hosting your website is that magical thing that lives up in the cloud. The following are generally set it and forget it unless you are moving to a new server. Your developer or IT manager should be able to handle this process for you, but it is good to have a high level picture of how things work.

Your server has an IP Address associated with it. The IP is a numerical way to find your server on the internet. Every device connected to the internet has its own unique IP representing it. A domain is an easy to remember and human readable way to get to the server. Think of it like the contact list on your phone. Your mother has a number you could input directly to get to her but it is much easier to simply call her by name from your contact list.

DNS stands for Domain Name Server. Your computer does not automatically know the address of your server. To find it when you type in a domain in your browser, your computer will first ask a DNS server what server your domain belongs to and then direct you there. Just like asking your sister for your mothers phone number.

If you run an ecommerce site, deal with personal information, or like extra security then SSL is for you. SSL provides a securely encrypted connection from your browser to the website. This prevents others from snooping sensitive information during your visit, such as credit cards or passwords.

Other Terms

That was a broad overview of some of the most commonly questioned terms in WordPress.

If you are a website owner: What other questions do you have?

If you are a developer or site creator: Are there other questions that you frequently run into?

The post Basic WordPress Terminology: What the Layperson Should Know appeared first on WebDevStudios.

]]>
https://webdevstudios.com/2015/10/05/basic-terminology-layperson-know/feed/ 0 11835