Author Avatars Plugin – fifteen years on

It hardly seems possible that I uploaded my first co-authored plugin, Author Avatars, to wordpress.org over 15 years ago!

That initial foray into the world of plugins was the first step that led to the creation of my premium plugin business, Matador Jobs.

It is rewarding to feel that, with 7,000+ active installations, people are still finding Author Avatars useful. Since I took over full ownership in 2011, I have continued to maintain it regularly. This includes adding Gutenberg support even before Gutenberg was included in WordPress Core.

Author Avatars makes it easy to display lists of user avatars, grouped by user roles, on your (multiuser) site. It also allows you to insert single avatars for blog users or any email address into a post or page – great for displaying an image of someone you’re talking about.

It makes use of built-in WordPress (core) functions to retrieve user information and get avatars.

Avatar lists can be inserted into your sidebar by adding a widget or into posts/pages by using a shortcode. The plugin comes with a tinymce editor plugin which makes inserting shortcodes very easy.

How to List All Authors From Your Blog in WordPress (image from WPBeginner tutorial on Author Avatars)

It is particularly gratifying to find Author Avatars featured in a WPBeginner tutorial dated March 8, 2024. Thanks guys for providing an excellent ‘How to’ guide!

Words have power – removing exclusionary language from code

Originally posted on the Matador Jobs blog, August 18, 2020

Words Have Power

Thanks to the incredible conversations the United States and World are having right now about race and inclusion, it has come to our attention, as software developers, that some of the phrases we use are based on historically racist or classist terms and that our continued use of these terms is insensitive, unwelcoming, and exclusionary.

While insignificant in the giant list of things that need to be changed to bring about true equality and inclusiveness, we at Matador Jobs nevertheless feel we can begin to impact change by stopping our perpetuation of these negative language constructs in our software.

Our changes to exclusionary terms

Based on useful and interesting discussions with other developers around exclusionary language, we found that the items below are the biggest targets for adjustment. In many cases, these changes that can be made are actually more descriptive! Here are the key adjustments we are making in our upcoming releases:

  • Changing whitelist/blacklist to “allow list”/”deny list” to explain lists of explicitly allowed or disallowed items
  • Replacing master and master/slave to main and primary/secondary to explain relationships where one is an authority or primary source to a backup or secondary source.
  • Removing the use of “grandfather”/”grandfathered” to describe backwards compatibility or rights or access given automatically to a legacy user of a feature.
  • Instead of “whitespace” use “empty space”, “blank space”, or a more descriptive term to describe areas that are purposely empty, blank, or clear for readability or design, ie: a “line break” could describe space purposely used to improve readability of code or text.

In the case removing of “whitelist,” we needed to engage our partners at Bullhorn, as one of our uses of the term is derived directly from their official API implementation documentation. After very positive discussions with Bullhorn Support, they are prepared to initially fully support our removal of the term from our documentation and code and are exploring how they too can strike it from their own documentation and code.

Most of these changes will be behind-the-scenes and specific to advanced integration a developer may do with Matador. But, since “whitelist” was a key part of the Bullhorn Connection Assistant, the following change will affect all users. The changes are:

  • “Whitelist” or “Whitelisted” (used as a verb) will become “Register” or “Registered”
  • “[API Redirect] Whitelist” (used as a noun) will become “Allowed API Redirect List”

Our next hotfix release, 3.6.2, of Matador Jobs, will include these changes, with further changes behind-the-scenes in following releases.

Resources

Resources we found helpful in considering these issues include:

https://thenewstack.io/words-matter-finally-tech-looks-at-removing-exclusionary-language/

https://www.duncannisbet.co.uk/removing-harmful-language-from-my-lexicon

Google for Jobs overview on Bullhorn’s Customer Blog

Have you heard about Google for Jobs? Bullhorn have just published an article by my fellow Matador developer Jeremy Scott on how Google for Jobs optimization can increase search traffic to your jobs website. Based on the experience of building Google for Jobs optimization into the Matador software, the article explains what Google for Jobs is, how it works and offers a high-level overview of how to optimize your company’s website.
Screenshot - article on Bullhorn Customer Blog
Read the full article on Bullhorn’s Customer Blog
We’ve put a lot of time into ensuring that Matador Jobs integrates really effectively with Google for Jobs search and we know it can make a huge difference.  We have one customer who reported a 75% increase in organic search traffic to her site in one month. Please reach out to us for more information on how Matador Jobs can help you leverage the Bullhorn REST API and Google for Jobs on your site.   (Cross-posted from our Matador Jobs website)

Privacy and your WordPress sites

Last night our local WordPress Meetup group hosted a round-table on privacy issues and the implications of the new EU General Data Protection Regulation (GDPR) that comes into force on May 25, 2018.

I think all of us rapidly became aware of how little we know and how complex it is becoming!

As a brief summary, GDPR is legislation that aims to protect the privacy of all EU citizens. It is a system of principles, rights and obligation which everyone who has a website needs to be familiar with.

If you have a website at all, it is very likely that you need to make some changes to it to comply with the legislation.

If you fail to comply with GDPR, you could be fined for up to 20 million euros or 4% of your yearly turnover, whichever is higher.

Key principles

  • Personal Data must be processed lawfully, fairly and in a transparent manner in relation to the individual
  • You must be honest, be open about who you are and what you are going to do with the personal data you collect
  • personal data must be collected for specified, explicit and legitimate purposes and not further processed in a manner incompatible with those purposes
  • personal data must be adequate, relevant and limited to what is necessary in relation to the purposes for which it is processed
  • personal data must be kept in a form which permits identification of individuals for no longer than is necessary for the purposes of the processing
  • personal data must be processed in a manner that ensures appropriate security of the data using appropriate technical or organisational measures

You may think that this doesn’t affect you or apply to your website. But if you ever ship or sell products to the EU or offer a digital service that’s used by EU-based customers, then it is likely that it will.

Examples of things to consider

  • You should already have a page that sets out your privacy policy on your website, but this in itself is not enough. Privacy information must be clear, concise and explicit.

Best practice suggests a ‘layered’ approach, with headings that can be expanded to provide more detailed information that is backed up by a dedicated Privacy Policy page.

Perhaps an even better alternative is clear pop-up notices whenever you are asking a user for personal information, explaining how this will be used and linking to further information. For example, if you collect an email address on a contact form, you might add an explicit message as to why you need this information and how you will use it, e.g. ‘to allow you to access your account and so that we may contact you with important information about any changes to your account’.

  • The default for any ‘opt in’ box must be un-ticked. Individuals must actively give consent.
  • If you use cookies, you will need users to opt in explicitly.
  • If you have pages, say on a blog, where people can comment, you will need to get their explicit permission to retain (store) a connection between their comments and their identity in the form of their email address.
  • If you are using analytics, there may be implications about what data you can legally collect and store.
  • If you are running an e-commerce store, you will need to be clear about what information you may legally hold. This gets complicated in that most countries require that you retain a copy of all invoices for a certain length of time. So you may find you have to delete copies of orders, but retain copies of invoices for the prescribed time, with an effective process for deletion when that time expires.

 

There is a great deal of good information available about GDPR and how to tackle compliance. Below are some links to resources we have found useful, including information about the work WordPress is doing to help users with compliance.

Links

Site Owner’s Guide to GDPR – a really excellent resource manual is available, whether or not you download the plugin it supports. (Codelight)

GDPR: How to write a Privacy Notice – Best Practices – very helpful article with some practical examples. (Hashed Out)

Worried about WordPress and GDPR? Start Here – a good starting point (Pagely)

GDPR Compliance Tools in WordPress – what WordPress is doing to support users with GDPR compliance. If you want to see a bit more of the background to this, you may want to look at Roadmap: tools for GDPR compliance

 

 

 

Systematic Holistic Speed

Slides as presented at WordCamp Toronto, 2015

We all have created the odd WordPress site that has turned out to be fast but how do we do this each and every time?

In this talk I explore some of the techniques and choices that will make your site feel fast and also talk about how to automate / streamline your development process so that you can do this each and every time, no matter how rushed you are.

Learning Outcomes:

  • Understand what slows code down.
  • Realise how an SQL calls slow the site.
  • Understand that perceived speed can be more important than real speed.
  • Learn how to automate deployment.
  • Discover that it’s the small items that count.
  • Know what caching is, know how cache works in WordPress.
  • Understand the problems that caching causes and how to work around them.

Fitt’s law

I discovered Fitt’s law back in 2011. It states that:

The farther you are and the smaller the target, the longer it takes to move the cursor and point at said target.

Tom Stafford said it best:

“Although the basic message is obvious (big things are easier to select) it is the precise mathematical characterization that is exciting, and that this characterization includes a logarithmic function – which means that the shape of the relationship between size and reaction time is curved so that small increases in size for small objects make it much easier to select them (whereas small increases in size for big objects don’t make that much difference). And the same applies for changes in target distance.”

Size and selection times: Fitts’s Law

 

or in maths speak    MT = a + b log2(2A/W)

I first came across this rule in the this post, The Opposite of Fitts’ Law by Jeff Atwood:

Unintended ejection seat lever consequences
Unintended ejection seat lever consequences

Jeff talks about not putting the the “Delete Forever” button too close to the “Save” button . . . just like you wouldn’t want to put the ejector seat switch next to the radio!

Here’s another good article on Fitts’s Law: Vizualizing Fitt’s Law