While WCAG 2.0 outlines specific requirements for contrast between text and background colors, these can sometimes be difficult to test.

Fortunately, there are some basic tests you can use to identify potential contrast issues.

Print the page without color

I know, noone has just a black and white printer. But printing your page without color is an excellent way to find out how it’s going to look when viewed by someone with color blindness. Alternatively, you can temporarily graysccale your site to get the same result. Just make sure you put everything back when you’re done.

Decrease your screen brightness

A second quick way to test color contrast is to look at your page with your screen brightness decreased. This is particularly helpful on mobile devices.

Take off your glasses

If you wear corrective lenses, taking them out of the picture will give you a quick and easy way to find out how a site’s going to look in regard to color contrast. If the contrast is bad, you’ll be forced to squint to get everything. If it’s good, the site will be easier to read.

Resources for checking color contrast

Finally, here are some resources you can use to either check the contrast of your site’s existing colors or to determine a good color scheme to use when designing your site.

The Color Contrast Spectrum Tester

The Color Contrast Spectrum Tester by Joe Dolson wil let you enter a color’s hex value, and then it will provide a selection of contrast colors that you can use to make sure you’re following the WCAG 1.0 or 2.0 guidelines.

Color Contrast Tester

If you want to simply test whether or not two colors are going to mesh well in regard to color contrast, this color contrast tester will let you do that. It asks for a foreground color and a background color, and tests to make sure they meet WCAG 1.0 or 2.0 color contrast success criteria.

What about color theory?

I think it’s important to note that, while accessibility is extremely important, it doesn’t mean that everything else goes out the window. For instance, if you’re a blind person trying to design a site, you need to make sure that your color scheme meets WCAG guidelines, and, if you or your client are aiming for a particular goal, like readability or sales or email subscribers, good design still matters. If you’re a sighted designer, good color contrast and general web accessibility doesn’t mean that what you create has to be ugly. You can still have functional, pleasing design while keeping it accessible and meeting your client’s goals.

Lots of people have lots of questions about WordPress.

Sometimes, the answer is quick, and only requires a little bit of direction to get you on the right path.

Enter: Ask Me Anything

Ask Me Anything is a weekly chat session that will take place every Wednesday at 7PM Eastern using both the TeamTalk conferencing system and the hashtag #wpama on Twitter. The server address for TeamTalk is 4.onj.me, the ports are 10334, and Ask Me Anything will take place in the “Ask Me Anything” channel. You can ask me anything on the following topics:

  • General WordPress setup and configuration
  • The Genesis framework and StudioPress child themes
  • WordPress.com
  • Finding the right WordPress plugin to meet your needs
  • Finding the right WordPress theme for your site
  • Finding the right hosting
  • General hosting questions
  • Finding the right domain for your site
  • Web accessibility

What’s Not Included?

There’s only a few things that aren’t included, mainly because they would limit the ability of others to get their questions answered:

  • Specific plugin or theme setup/configuration
  • Code snippets
  • Specific hosting configuration instructions

What’s it going to cost?

The only thing Ask Me Anything is going to cost you is the time it takes to ask your question and the time it takes to answer it. Other than time, it’s completely free.

What if I can’t make it for the live sessions?

If you can’t make it for the live sessions, no worries. Each Friday, the session notes wil be posted with links to participants’ websites if they exist. Plus, any questions we can’t get to during the sessions will be posted as free tips/tutorials on this site that you’ll be able to browse through and implement when you have the time.

How long will AMA sessions last?

AMA will last one hour each week, and I’ll answer as many questions as I can get to. Any questions I don’t get to will be answered in upcoming sessions.

Can I ask questions outside AMA?

Yes, you can. Just use the #wpama hashtag and I’ll answer your questions during AMA sessions.

I’m looking forward to sharing knowledge with you during Ask Me Anything. Let’s make this fun, informative and engaging together. Until Wednesday.

Sometimes, when you’re using WordPress, you’re just trying to get one thing done.

Build that one thing.

And then, you find yourself googling for hours, cobbling tutorials together to achieve your goal.

You don’t have time for all this, but you also don’t have the time for a full-length WordPress course that’s going to teach you everything except how to build what you’re building.

Introducing the Working with WordPress online workshop series

what if there were short courses that focused on a topic, did so in-depth, and didn’t break the bank in the process? Enter this series.

The Working with WordPress workshop series are four-hour mini courses that cover a specific topic with hands-on demonstrations you can use to build a specific type of site. They feature instruction, question and answer time, notes that walk you step-by-step through how what we’re covering happens and how you can put into immediate practice what you’ve learned. They also feature a copy of the recorded workshop once it’s done so you can replay it if you’d like and follow along with the notes.

Something for Everybody

These workshops range from the technical and not-so-technical, so there’s something for everybody. They’ll take place on Friday afternoons from 1PM to 5PM Eastern U.S. time. The first in the series is Podcasting with WordPress, which will teach you what a podcast is, and how to use the PowerPress plugin to add your own podcast to your WordPress website. It will also teach you how to create a separate feed for it, and how to get your podcast listed on various networks such as iTunes.

This workshop will take place this Friday at 1PM Eastern. Other workshops will run on a weekly basis, and all of these will be available for purchase after the workshop has ended in case you want one you missed.

The great thing about these workshops is that they can be flexible. I’ve got a few planned, like Content Marketing with WordPress, Storing Recipes with WordPress, and Building an Accessible Shop with WordPress, but if there’s demand for a particular topic, there’ll be room for that too.

Normally, these workshops will run for $97. But as an introduction, the first three will run for $47. There’s no lower limit, so whether there are two or ten attendees, it doesn’t matter.

Podcasting with WordPress takes place this Friday at 1PM Eastern. Once you register, you’ll be sent instructions on how to attend. We’ll use the TeamTalk voicechat client so both blind and sighted can participate. After registration, you’ll be sent a setup guide and, should you need assistance with setup, I’ll be more than happy to schedule a time to help you get TeamTalk up and running.

I’m looking forward to teaching you how to use WordPress to meet your needs. If you’re interested in running your own podcast from your own site, join us for Podcasting with WordPress.

How to Post to WordPress using Windows Live Writer and a Screen Reader

There’s been some discussion happening on Twitter about different ways to post to WordPress powered sites. one of the recommendations that came in was to use Windows Live Writer to do this. So I thought I’d post a tutorial on the basics of using Windows Live Writer with a screen reader in the hope that it will make writing and posting easier for those who are blind and who don’t necessarily want to use the standard WordPress add new post screen.


What’s wrong with the editor that comes with WordPress?


There’s nothing wrong with the standard editor, but sometimes it’s easier to write in a truly distraction-free space, which is something that can’t be offered by the WordPress content editor due to the fact that you have to enter forms/browse mode if you’re using a screen reader. This means that you’re stuck writing in what is normally viewed as an input field, which has the effect of limiting your writing, even if it is just psychological.


Having a distraction-free writing space means you can focus on your writing and not on the unintended distraction of an input field. So in this tutorial, I’m going to show you the basics of Windows Live Writer, and how to get around it with a screen reader. I’m using Jaws in this case, but it will work reasonably well with NVDA as well. I haven’t tested with Window Eyes or System Access. It also goes without saying that this is a Windows-specific application. For the Mack, there’s MarsEdit.


Getting Started with Windows Live Writer


The first thing you’ll need to do, if you haven’t done so already, is download Windows Live Writer and install it. Next, you’ll need to set up your blog. This screen is useable with Jaws, although if you want to read the whole dialog you’ll need to do some cursoring. You’ll enter in your blog/site’s address, without the we-admin, and then the username and password for the site.


Next, Windows Live Writer will ask you if you want to download your blog’s theme so that you can preview what your post is going to look like. You can try this, but I didn’t have any luck, and the preview doesn’t appear to be accessible at all.


Once you’ve gone through all the setup, you’re ready to start writing. There are a couple of things to note. First, the title and body fields aren’t labeled, but you’ll be able to arrow up and down to get in and out of them. Yeah, this is weird. At first I assumed I could tab between the two, and you actually can’t. So first, you’ll type your title, and if you want to change that at any point, you can arrow up from the body section and change that, which will then reflect in the title bar of the window. The next thing to note is that you have ribbons, just like you would in any other modern Microsoft application. These are completely navigable with the keyboard, and you can insert hyperlinks, images and everything else, as well as interact with everything else in the ribbons.


To deal with categories, tags, and scheduling, you’ll need to use your screen reader’s specific cursor to navigate above the title field, and find the “categories”, or “tags” or whichever field you want to modify and then left-click on it. Once you’re in the field, everything is tabbable and you can edit away.


After you’ve done all your writing/editing, you can either save as draft or publish from the ribbons. If you’re using WordPress SEO by Yoast, you’ll probably want to save as draft so you can go back and enter your keywords and further optimize the post. But for the writing aspect, Windows Live Writer does the trick, and it’s not as heavy as Microsoft Word when it comes to the system resources it consumes. I haven’t tested this on Windows 8 yet, but it works at least up to Windows 7.


So far, the only thing I don’t like is that there doesn’t seem to be an easy way to see the word count of the post. But I suppose this isn’t a deal-breaker.


This tutorial should get you started on using something other than the standard WordPress post editor to write, and hopefully, it will encourage you to write more and write/post more often.

The obverse of an Olympic gold medal from the 1920 Olympic games
By: Naval History & Heritage CommandCC BY 2.0

One of the most important things we can do for ourselves, either in our business or personal lives, is to create a “yay” file. It doesn’t matter how this file takes shape, but what it contains. Our “yay” files should contain any positive comments from clients or friends or coworkers, summaries of goals we’ve achieved, or anything else that makes us feel good about ourselves.

We need to keep a “yay” file around not so we can enlarge our egos, but for rainy days when it seems like life is spinning out of control, or when things just suck, and especially when things seem to be going horribly for a very long time.

Our “yay” file serves as a pick me up when we’re in the midst of trouble or bad days and we feel like giving up. It’s not meant to solve any problem other than the one we have with ourselves. We’re still responsible for doing what we can in the present to fix the messes we make. But even while we’re fixing the messes, we still can’t fall into the trap of beating ourselves up continuously, even for mistakes or screw-ups we make.

I’m including myself in this advice, which is why I’m saying “we” instead of just “you.” I have a hard time recognizing my accomplishments, and I know I need to remind myself more of them. So to create my “yay” file, I’m going to open up a text file, start copying the positive things I can find from social media and email and all the other places they show up, and make it a point to add some time to my daiy schedule to take a look at the file, because I need to constantly remind myself.

Now it’s your turn. Do you plan on creating a “yay” file, and if so, how will you do it? Is adding time to your schedule to look it over something you’ll consider doing? Let me know in the comments.

And thank you, Curtis McHale, for a totally awesome tip that’s applicable in multiple situations.

Hang around the WordPress community long enough, and you’ll eventually run into a prospective client who needs something you can’t offer. For instance, in my case, if a prospective client is looking just for design work, or graphic design, I know that’s completely outside of my territory and not something I can legitimately offer and call myself honest. But in cases like that, there’s still something I can do to help that prospective client. I can help that prospective client by giving them a referral to someone who’s better suited to handle those tasks.

By giving that referral, I provide value for the client, strengthen my relationships within the community, and create the likelihood that someone else will refer work to me that either they don’t have the time to handle, or don’t have the requisite skills for. Everybody wins.

Whether you’re an implementer, (someone who knows just the right plugin and theme combination to build what your client needs), a developer, or a designer, the referral technique applies. And regardless of where you fit in the WordPress community, it can be a winning strategy for both you and your clients.

Picture frame
By: Max StanworthCC BY 2.0

I’ve written before about how important it is to add images to your content, even if you’re totally blind. In that post, I recommended Flicker as a great source for free images, and also cautioned that attribution has to be given when someone’s image is used. Those tips still apply, but there’s an easier way to find those free images and make sure they have proper attribution.

The Flickr – Pick a Picture plugin will allow you to search for free images to use from within WordPress itself, so you can avoid the mess that is the Flickr website if you’re using assistive technology.

Once you’ve installed and activated the plugin, you’ll see a new settings screen under the “settings” section of your WordPress administration panel, and you’ll also see a “Flickr – pick a pic” bchoice in the toolbar above the content area of your WordPress post/page editor. When you want to add an image, select that and a new window will open. If you’re using a screen reader, the window will appear at the bottom of the page.

Search for the kind of picture you want, and the plugin will return search results with your search term either in the caption, description, or name of the image. The plugin will also make sure that only Creative Commons images are searched so you don’t accidentally use someone’s copyrighted work. Each image will have a “choose” button near it. For screen reader users, it will appear underneath the link labeled “graphic” with a whole bunch of numbers. If you’re sighted, and you want to see a larger version of the image, click on the thumbnail to see a larger version. If you’re blind, this isn’t going to matter.

Once you press “choose,” you’ll see some options to edit the filename, alternative text, (and we all know how important the alt attribute is), the caption and the description. The caption already contains the attribution for the image, and you can leave this be or add to it. Don’t remove it though. The description is there so that in regard to the WordPress media editor, you have descriptions you can see for each image that gets uploaded.

The plugin will upload the image you choose to your own media library, so you’re not stuck if the image gets deleted. Its screens are also much easier to deal with than the standard WordPress media editor.

Hopefully, by installing this plugin, you’ll find it easier to add images to your content. They’re a great way to enrich your site, and they can make or break the content you’ve put all that hard work into. So next time you’re writing, or next time you pan to write, install Flicker — Pick a Picture and add some free images.

WordPress post revisions can be useful when you’re writing content. It’s what allows WordPress to auto-save drafts while you’re in the post editor so you don’t lose your work should something go wrong, like when your browser crashes. Every time you press “save draft,” a new one is created.

But over time, WordPress post revisions can add some serious overhead to your database, which can

  • Make your site slow and unresponsive
  • Take up needed space in your database
  • Decrease your search engine rankings


Why does the time it takes my site to load matter?

The time it takes your site to load matters because visitors will decide to stick around for your awesome content based on how long it takes to get to their screens. Visitors like times around three seconds. So, for that matter, do search engines. So if your site loads slower than that, you’re losing readers.

While WordPress post revisions aren’t the only thing that can slow down your site, they are a contributing factor. they’re also one of the easiest aspects of site performance to manage.

Have questions about WordPress site performance? click here to get answers.

Why does the size of my database matter?

The size of your WordPress database matters because it effects your site’s performance, and it also effects the amount of work your web host’s server has to do to casche resources, no matter what casching method you use. Also, if you’re on a smaller hosting plan, you are often limited significantly by the database size your web host will allow. Finally, the size of your database can also effect how hard it is to move your site from one web host to another, and switching hosts is something that happens throughout the lifetime of every website. On most web hosts, especially if you’re using PHPMyAdmin instead of the command line, the database size is limited to 8MB. That means if your database is bigger than that, you’re not moving it over. PHPMyAdmin does offer the option of breaking up imports into smaller pieces, but even it doesn’t recommend this. And web hosts don’t often increase the size limit, even for a short time.

Once again, while WordPress post revisions aren’t the only thing that contributes to the size of your database, they are a factor.

As I said above, search engines and visitors like sites that load in three seconds or less. So if you make sure your site loads within that time, you’ll keep both your visitors and the search engines happy, which is a win-win. Site performance isn’t the only thing that makes people and search engines happy, but as with everything else I’ve mentioned so far, it’s a factor. You can write the best content in the world, but if site speed is slow, your efforts are wasted.

OK, you’ve convinced me. How do I manage my WordPress post revisions?

Now that we’ve gotten all of the “whys” out of the way, I’m going to show you what WordPress post revisions are, how you can prevent them from being saved if you want, and how to remove them so that your database contains less clutter.

How do WordPress post revisions work?

WordPress creates a post revision in one of two ways. It creates one when the post auto-saves, and this happens once for each post for each user. It also creates a post revision every time you press “save draft.” WordPress lets you compare post revisions so you can track changes to a post, which is great for editors, and you can restore a revision if you need to undo a change and you don’t want to spend time manually doing it. This is useful if you’re deleting paragraphs of text. By default, WordPress keeps all post revisions. You have to give it instructions by way of wp-config if you want to either turn the feature off completely, or limit post revisions.

If you’re using WordPress.com to host your site, they’re taking care of things for you, which includes keeping your database free from clutter. If you’re using managed WordPress hosting, post revisions are also managed for you. But if you’re self-hosting, either on your own VPS or on a shared hosting account, you’ll have to manage them on your own.

I want to limit the number of post revisions WordPress keeps. How do I do this?

You can limit the number of WordPress post revisions by adding the following snippet to your wp-config file.

define( 'WP_POST_REVISIONS', 3 );

The number after the comma in the above example tells WordPress how many post revisions to keep. You can set this to whatever you want, but remember to keep it at the low end.

What about disabling post revisions altogether?

You can also use something similar to the above example to disable WordPress post revisions completely. To do this, you’ll need to change the example in the following way.

define( 'WP_POST_REVISIONS', false );

Removing the number and replacing it with “false” will tell WordPress not to save post revisions. Once you’ve added one of these constants to your wp-config file, you can now deal with the WordPress post revisions that are already in your database.

How do I get rid of WordPress post revisions that are already saved?

Even though you’ve added one of the above constants to your wp-config file, your database still contains any post revisions that were created as you’ve added content. In WordPress, each revision is a copy of the entire post, with the content that’s there when the revision is saved. So the next step is to remove the ones that are already in your database. By doing this, you’ll make your database smaller and easier to optimize. You can remove WordPress post revisions by running an SQL query, but if you’re not comfortable doing that, a simpler way to do it is with a plugin.

The Optimize Database after Deleting Revisions plugin will allow you to remove the WordPress post revisions you don’t need, and it will also let you keep them for a specific post should you decide to do that. It also optimizes your database after the revisions have been deleted, thus saving space in your database.

If you’re using this plugin to get rid of all revisions, and you know you’re not going to keep any, be sure to deactivate and delete it once you’re done using it so you don’t have unnecessary code hanging around your WordPress installation.

Managing WordPress post revisions is an easy way to make sure your website does not become slow or unresponsive, and if you’re on a small hosting plan, it’s also a great way to make sure you don’t reach your database size limits before you planned to. It’s also an excellent way to keep both your visitors and the search engines happy. If you have questions about anything in this tutorial, click here to get one-on-one support and I’ll be happy to walk you through any part of it.


This lightning talk was given at WordCamp San Francisco last year. I’m sharing it because I’m pretty sure I’m not the only one who’s a raging perfectionist, and I also know that I’ve had some ideas or even just things to say that I’ve left unexecuted or unsaid because I didn’t think they were good enough, and we all need a reminder not to let that happen. The takeaway from this talk is to not let the perfect be the enemy of the good. We all tend to be the most critical of ourselves, and if we let whatever we’re working on or want to work on not make it to the light of day because it’s not perfect, then we’re missing opportunities to help ourselves and more importantly, to help others.

Just pressing publish, (writing something and getting it out there, shipping a personal or client project, or just reaching out to someone we’ve never talked to before), doesn’t mean we won’t fail. But it also means if we don’t publish, we won’t succeed either. So don’t let “it’s not good enough” determine whether something you’ve created gets out there.

Mika Epstein has a post on why you shouldn’t use copy protection to try to protect your content. This of course applies to websites. I think you should go read the post, but the short version is this: It doesn’t work.

If you look at the post, you’ll see some very easy ways to get around said protection: Developer tools. These are the tools developers will need to bring up if we’re going to help you fix problems with your site, especially when we’re answering questions in the WordPress support forums. By disabling right-clicking, (which is what copy protection relies on), it’s harder for us to open those tools. But it’s not impossible.

One of the other methods used in copy protection is disabling copy/paste capabilities. This breaks things for adaptive technology users in all kinds of ways, basically resulting in “We can’t read your content.” If we can’t read your content, we’re not going to visit your site. And we’re going to tell our friends about it. Who will also avoid your site, tell their friends, you get the picture.

Stealing content is not cool. We all pretty much agree on that, content thieves obviously excluded. But given that the standard methods of copy protection don’t work in the first place, people who create websites have a really good reason not to use it.

Nothing can replace the eyes of a skilled professional when it comes to web accessibility testing. This is because so much of determining a website’s accessibility is subjective enough that an automated tool cannot help you when it comes to making definitive judgments about whether disabled people who visit your site and interact with it can actually use it.

But before I tell you why automated web accessibility testing is bad in more detail, I want to tell you what it’s good at, because despite not being a complete solution, there are some aspects of accessibility testing they excel at.

Piles of Code

A good web accessibility audit involves an in-depth, manual look at all the generated source code that makes up a website. Doing this is the best way to find out if problems exist, where they are, why they’re occurring, and how to fix them once they’re found. Doing everything manually is great if the website I’m working on is small. But once websites started becoming larger, web accessibility professionals needed a way to quickly scan through thousands of lines of generated source code to get a basic idea of where things stood.

This is where automated tools come in. They help by providing a general layout of the accessibility landscape, and they provide a list of things which need further attention in a manual audit. When you’re staring at a page that contains hundreds or thousands of lines of JavaScript, HTML and CSS, (like, for example, the Yahoo homepage or the Facebook homepage), automated tools can be a great help. On large sites, there really is no other way to find all the errors than automating the task. This includes sites that are using a templating system, such as WordPress sites. When conquering these, you’ll need to use an automated tool that crawls the entire site to get the assessment done. When I began working on Utility Pro, running it through an automated tool was the first thing I did in order to find out what I needed to start work on first, and in what priority.

Some errors don’t need human inspection

One of the best examples of errors that an automated tool can save time on is images without alternative text. In cases where there is no alternative text, an automated tool is used to document every occurrence, instead of an auditor manually going through and finding each one. But in cases where images have alternative text, and it’s not meaningful, a manual audit will find these and suggest meaningful text.

An automated tool lays the groundwork for a manual audit

The most appropriate way to use an automated web accessibility tool is not to generate a comprehensive list of pass or fail judgments on the site being tested, but to give an auditor a list of things that need a closer look. A good tool will provide a list of errors with line numbers and snippets of code that’s causing them. This information helps an auditor decide whether the problem really is a problem, so they can then tell the client why it’s a problem and suggest ways to fix it. More importantly, it’s a good way to find patterns of errors, which then helps an auditor determine the best way to help the client integrate accessibility best practices into their workflow.

Automated web accessibility tools can also help find exceptions in an otherwise accessible site. I’ve created sites or added content which contained good markup, but since underlying tools may change what happens to that markup, I’ll run the site through an automated tool and sometimes find errors I hadn’t realized were introduced. So in short, automated tools are great for sanity checks, and make sure that a manual audit doesn’t miss the obvious.

And now, the bad

Most of the bad things that get mentioned about automated web accessibility testing are related to the subjective nature of accessibility. There are also numerous ways to make a site more useable for people with disabilities that an automated tool will never alert you to. Automated tools can offer false positive and false negative results, and they have a lot of trouble with dynamic features, which have become more and more prevalent on the web and are not going away any time soon.

Now for some statistics

While working with WordPress and the Genesis framework, I’ve found that automated tools give me about twenty percent accurate results when it comes to web accessibility best practices. Thirty percent of what the tool finds I can use as guideance for further manual review. That leaves fifty percent that is straight up manual review. That fifty percent includes everything related to forms, and, since automated tools can only test HTML and CSS, also includes JavaScript, AJAX, and any other client-side scripting.

Does this mean you shouldn’t use automated tools?

I don’t mean to suggest by any of the above that you should never use an automated tool. But the thing to keep in mind is that an automated tool is just that, a tool. It can help with productivity, and helps with the accuracy of the final report. They also help with getting started with the basics of accessibility and can help developers and designers begin learning about it. But when using automated tools, in order to get the most milage, you’ll need to be well-trained in accessibility, understand how to read their results, and remember that what that tools tells you is not the final say in determining whether your site is accessible.

One thing that often comes up when performing an accessibility audit of a website, is the lack of the alt attribute when it comes to images. Fortunately, this is something that can be easily fixed, and you can start adding it to your images right now and see an immediate improvement in the accessibility of your site. In this tutorial, I’m going to explain what the alt attribute is, how and why to use it, and how you can do so using WordPress.

What is the alt attribute?

The alt attribute is part of the HTML tag which is used to insert images into web pages. Alt is short for alternative, and it defines text that is displayed as an alternative in case an image doesn’t display correctly in a browser. It also gives search engines and screen readers an idea of what the image contains. For screen reader users, it means the difference between “graphic img1000000000” or something similar and “graphic man holding a football” or other similar descriptive text.

What kinds of images need alt attributes?

You may be thinking that if there’s an image, it needs an alt attribute. However, this is not always the case. For example, if an image is decorative, such as images used solely for creative effect, the alt attribute should be left blank, like this:

In the case of an image that’s used as a bullet, you can use this:

Two ways to add an alt attribute in WordPress

If you’re using WordPress, you have two options for adding the alt attribute to your non-decorative images. The first is to manually add it to the tag. If you’re using the text editor, and manually inserting your images, it looks like this:
brief description of your image
If you’re inserting media using WordPress’s built-in media library, this gets a little easier. When adding the details for your image, there is a field that allows you to enter an alt attribute. Adding some meangful text to this field will ensure that your alt attribute is added without much work.

What counts as meangful text and how long should the text be?

The final thing to keep in mind when you’re adding alt attributes to your images is to make sure the text is meangful. For instance, if you have an image of a woman standing at the check-in counter at an airport, instead of labeling that image “woman,” try labeling that image something like “woman standing at airport check-in counter.” Also, keep your descriptions brief. Don’t use any more than fifty characters. If you need to add a longer description, in WordPress you can add this longer description to the caption field. There’s also a caption attribute you can use if you’re adding it by hand.

The alt attribute is an easy way to increase the accessibility of your website and content, and it’s also an easy way to help the search engines and other people get a better idea of what you’re saying with your images. If you’re going to use images as part of your content, (and you should), make sure that everyone can enjoy them. After all, you’ve spent a lot of time either finding those images or creating them yourself. With an alt attribute for each one, you can ensure the widest possible reach for your work.

If you’re using the Genesis Framework and a and a child theme, you may have noticed that there are some credits appearing at the bottom of every page in the footer. You can change these credits so that they appear exactly how you want them to, with the links you want. In this tutorial, I’m going to show you how.

This tutorial uses a customized version of the Centric Pro Theme, but this code snippet will work on any Genesis child theme.

First, the original code

Here is the original code with the original credits from StudioPress:

//* Customize the credits
add_filter( 'genesis_footer_creds_text', 'sp_footer_creds_text' );
function sp_footer_creds_text() {
echo '

echo 'Copyright © ';
echo date('Y');
echo ' · My Custom Link · Built on the Genesis Framework';
echo '


Next, the modified code

And here is that same code with my modifications:

//* Customize the credits
add_filter( 'genesis_footer_creds_text', 'sp_footer_creds_text' );
function sp_footer_creds_text() {
echo '

echo 'Copyright © ';
echo date('Y');
echo ' · Customer Servant Consultancy Inc. · Backed by WP Engine, · Built on the Genesis Framework · using a highly customized version of the Centric Pro Theme';
echo '


What is this doing and how do I change it?

This code is made up of a filter, and a function with some echo statements. A filter is a function that changes another function. Instead of having to rewrite the function you want to change, you can use a filter to change the function by taking a piece out or adding a piece, and it’s one line of code instead of an entire function.

So in this case, we already have a function called genesis_footer_creds_text, and we want to make some changes to that function with our new function, sp_footer_creds_text. The original function lives in the core of the Genesis framework, and changing it this way saves us the time we’d spend finding the original function, copying it to the child theme, and then changing it. We can use sp_footer_creds_text to make only the changes we need while leaving the rest of the genesis_footer_creds_function intact.

As part of the sp_footer_creds_text changes, we have some echo statements. Echo statements are used in PHP to output text to the screen. In our case, they’re being used to output the copyright statement and some links. As you’ll notice in the code samples above, they can take HTML markup.

The first statement echoes, (or outputs) the beginning of the HTML with classes from the CSS so the credits will display properly with their appropriate styling. The second echo statement uses PHP time and date parameters so that the current year is automatically generated, which means we don’t have to change it every year manualy. It also includes the link to the copyright holder, and it can also include text with no link. There’s also some code that generates some punctuation. You can’t just write the punctuation in because PHP uses half the punctuation marks in the English language to do other stuff. So we have to tell PHP that we actually want to output the punctuation to the screen, not interpret it.

A note on copyright

According to U.S. copyright law, (here), the year of first publication also has to be visible in order for copyright to be valid. There is a shortcode you can use that will help with including the first date of publication: [footer_copyright first="201x"] where “x” is the last digit of the year of first publication. Thanks Gary Jones for the tip.

The rest of the echo statements contain links to the Genesis framework, and, in my modification, the link to the child theme I’ve modified. You can add as many of these as you like.

The final echo statement outputs the closing HTML markup so that we don’t end up with open tags and break the display. Finally, we close the function with a curly bracket.

If your child theme already contains a function that customizes the credits, you can remove that function and use this one, or customize the function that’s there. And of course, all of this goes in your theme’s functions.php file, since it controls how something is displayed on your site.

An Alternative Function with Shortcodes

As I mentioned in the copyright note above, there is a shortcode you can use to generate your copyright statement. There are also shortcodes you can use to generate the link back to StudioPress and the Genesis framework, as well as the child theme link. Here’s a function using those example shortcodes.

add_filter('genesis_footer_creds_text', 'custom_footer_creds_text');
function custom_footer_creds_text($creds) {
$creds = '[footer_copyright]' . get_bloginfo('name') . ' • Built on the [footer_genesis_link] powered by [footer_wordpress_link]';
return $creds;

In the above function, shortcodes are being used to generate the current year of the copyright statement, the blog name, the Genesis framework link, and the WordPress link. All of these shortcodes have attributes that can be used. For instance, for the [footer_copyright] shortcode, you can use the “first” attribute to specify the first year of publication, like this:

[footer_copyright first="20xx"]
Within the quotes, add the first year of publication, such as 2005.

Customizing the credits at the bottom of your Genesis powered site lets you add a more personal touch, and gives you just a little bit more control. If you have any questions about this tutorial, feel free to leave them in the comments.

The short answer to this question is no, and there are two reasons.

  1. It violates the WordPress trademark
  2. It confuses users

The Trademark

The WordPress Foundation, the organization tasked with protecting the WordPress trademark, has set very specific guidelines about when and where the WordPress trademark can be used. Using WordPress as part of a top-level domain, (for example, WordPressisawesome.com or anything that is not WordPress.example.com), is strictly prohibited. Strictly prohibited as in “under no circumstances.”

It Confuses Users

Users know, (or learn) that they can go to any site with WordPress as part of the domain name to find information and resources that are part of the official WordPress project. If other business use WordPress as part of their domains, this creates confusion for users because the confuse the business with actual WordPress.

What if I Didn’t Know?

If you’re reading this post, or if someone else has made you aware of what’s here through other means, you know that you have to do something with your WordPress domain. You can redirect it to another non-WordPress domain name, but you can’t promote that domain. You have to promote the new one. Ideally, you should turn the WordPress domain over to the foundation, or at the very least, let it expire.

Offering WordPress-based products and services is a wonderful thing. There’s plenty of work to be had, and if your product or service is a good one that helps others and/or benefits the community, it will get noticed. Just ensure that you do right by the trademark.

If you google “WordPress expert,” you’re going to get About 371,000 results. That’s a lot of results. And if you don’t know anything about WordPress, or know very little about it, there’s no way you’re going to be able to sift through those results and find a true expert. Especially since anyone can slap a label on themselves, do some slick marketing, and get you to fork over the cash.

This makes me angry and sad.

There really are WordPress experts out there who can help you with whatever you’re creating. In this post, I’m going to show you what you should be looking for so that you can hire the person or business that’s right for you.

Do they care about WordPress?

Before you look for anything else, find out if the person or business you’re wanting to hire cares about WordPress. Do they contribute to the project in any way, like writing WordPress code, writing and supporting themes or plugins, writing documentation for the Codex, and answering questions in the official WordPress forums? Are they involved with the community and interacting with it, giving and taking as an integral part of it? Are they writing tutorials so that others can learn? And are they honest enough to admit that they don’t know something about WordPress, but also expressing and demonstrating a willingness to learn more and increase their skill set? These qualities are foundational to any WordPress expert’s pedigree.

Now let’s get technical

Does the person or business claiming WordPress expertise have intimate familiarity with WordPress’s underlying and surrounding technologies: HTML, CSS, PHP, JavaScript and libraries such as JQuery among others, coding standards specific to WordPress, MySQL, Apache and other web servers like Nginx, and can they explain how all the pieces fit together in understandable language that is devoid of buzz words? If no, then they’re not WordPress experts.

Letting you Know when WordPress Might Not Fit

WordPress is great. It can do pretty much anything you want it to with the right amount of work. But it’s not always right for every project, and anyone who is an expert and works with it on a daily basis will be honest enough to tell you when it might not be the best fit for your project. They’ll also explain why, in language you can understand and that is empty of all the jargon. If they can’t do that, they’re not an expert.

What if I Still want to Build it with WordPress?

If your WordPress expert has explained to you why WordPress as it stands might not be a good fit for your project, and you still want to build it with WordPress, the next answer should never be “You can’t do that with WordPress.” This is different from “WordPress might not be the best fit.” You can build anything you want with WordPress and make it do whatever you want, given the right amount of work. That work may include theme customization, plugin customization, or completely custom plugins and a completely custom theme. It also might be outside your budget. Any WordPress expert should be able to explain all of this to you as it relates to your project. They should also be able to tell you whether or not they are the right fit for you or your project, and if they aren’t, refer you to someone who is.

Becoming a WordPress expert is hard work. It doesn’t happen overnight, and you don’t become a WordPress expert by reading one book, finding a page builder, and throwing together one or two sites. It requires eating, sleeping and breathing WordPress and being surrounded by the community. it requires constant learning. And the work never ends. Things change on a pretty frequent basis within the WordPress ecosystem, and any WordPress expert worth their salt has to be a part of that. So when you’re looking for a WordPress expert, don’t just go with the first one you find on Google claiming that title. Don’t just go with the cheapest, but don’t go with the most expensive either. Don’t be afraid to ask lots of questions. Doing this initial work will save you in the long run and could be the start of a wonderful relationship between you and your expert.

I like to spend New Year’s Day pondering the year that just left and cementing goals for the new one. Last year was both strange and wonderful for me. The one that’s just arrived seems so full of promise, and I want to capitalize on that. I usually do this kind of stock-taking privately, but this year I’m taking it public and bringing it over to the professional blog so that I have some accountability to go with the introspection. I think it’ll help with turning more goals into reality.

Goals Realized

2014 was actually pretty great considering (a)I didn’t do a lot of marketing, and (b) I spent two months out of action while dealing with what turned out to be Bell’s palsy. I started out the year with some theme customizations, and I also filed the paperwork to create the company that is Customer Servant Consultancy. This is a huge achievement for me, because in my mind it lends some legitimacy to what I’ve been doing full time for the last five years; Working with WordPress. I’ve also conducted two successful semesters of the WordPress course through the Cisco Academy for the Vision Impaired. In September, I got serious about my business hosting and moved all sites over to WPEngine so I no longer need to worry about site performance or my own security or whether or not things will scale when I add new services or features to the site.

The next big achievement for me last year was going to WordCamp San Francisco. This one’s been on the bucket list ever since WordCamp first started happening. But it was also a huge achievement because I almost didn’t get on that plane. The day before while I was getting ready to leave, I had a serious case of Impostor Syndrome, and I was convinced that I would meet all the WordPress people I interact with online, and some I don’t but look up to, and they’d all figure out that I have no idea what I’m talking about and that I’ve spent the last sixteen years faking my way through web technologies and accessibility, and the last ten years faking my way through WordPress and leading everyone down a path ending in catastrophy, all while playing the blind card. So I muddled my way through packing and didn’t sleep because I was also afraid I’d sleep in and miss the plane. Yeah, completely irrational. The trip was amazing though, and I met all sorts of great people who influence me in ways too numerous to count. I of course learned a lot, both during the camp and the summit and contributor days afterwords, tried new beer, (come on, everybody knows no year is complete without at least one new beer), and cemented the connections I have online with three-dimentional ones.

I’ve also made some stronger connections within the Genesis community which I think are professionally promising. Which leads me to my goals for 2015.

Looking Forward

Passive Income

Affiliate Marketing

In 2014, I started dabbling in affiliate marketing, and made a few sales. In 2015, my goal as far as that’s concerned is to make affiliate marketing part of my overall passive income strategy. My strategy has four pillars: Support at three varying levels, maintenance at three varying levels, affiliate marketing as part of the content I write for this site, and courses, which I’ll touch on in a bit. A note about affiliate marketing: Yes, I’m going to sell. No, I’m not going to be a douche about it. I will continue to write tutorials for the sake of teaching people how to do new things. But I’m going to be a little more aggressive about adding affiliate links as part of the linky goodness. There are some specific products I use on a regular basis, and as long as I’m writing about them and spreading the word, I may as well earn a little from it. Plus, twenty percent of all commissions from affiliate links will go to support the NVAccess Foundation, which develops a free and open-source screen reader for the blind.


Regarding courses, there are two planned for now: How to clean up a hacked WordPress site accessibly, which is scheduled to land in February, and a course on making Genesis child themes accessible, which is scheduled to land in May. Both of these will be pre-recorded with notes and appropriate exercises with grading and everything.


I also have a few goals that are related to getting noticed/self-promotion. First, I’ll be co-hosting a podcast on WordPress that reaches out to those outside the WordPress community who have accessibility concerns. I’ll be hosting that with Laura Legendary of elegant Insights, and Elle Waters of Simply Accessible. The podcast will run on the Cool Blind Tech network, as well as being archived here. I can’t speak for the other two co-hosts, but my goal with the podcast is to demonstrate that there’s a lot more you can do with WordPress than just run a blog, and that you can do most of it with very little sighted help.

Speaking of podcasts, related goals for 2015 include co-hosting Genesis office Hours, as well as the Dradcast. I listen to several podcasts on various topics, but these are the two I try to make it a point not to miss.

Getting Listed on the WordPress Credits Page

I love contributing to the wordPress project. Up until this year, I’ve been doing that in the forms of testing and providing tips to other developers as part of the Accessibility Team, as well as answering questions in the WordPress and Genesis support forums. I will continue to do both of these. But I also want to start sharing the code I write on both GitHub as well as here, and I also want to start submitting patches to tickets I test. I benefit from the code snippets shared by others, and I appreciate their sharing of said snippets. But I often have to modify them so that the output they generate is accessible. That is not a stab at developers/designers. and why is a discussion for a later post. But during this year, I’d like to start contributing those modified code snippets back to the community. This will take some adjustment to my workflow. It’s not that I’m purposely stingy with code, I just write the code to solve a particular problem I’m having and then stash it away for later use if necessary. This benefits me and the people I work with, but I think it could also benefit the wider community.

I also plan to continue working with Slack to improve the accessibility of their product. I have a few things to test currently, and will be making steps throughout this year to make that relationship a closer one, without being creepy, of course.

Then there’s the WordSesh Transcription project. I haven’t forgotten about this, and have started transcribing the first talk. But I’m changing up the workflow on this so I can spend an hour transcribing instead of trying to knock it out in one sitting. I have twenty-five minutes left to go in the first talk, and after transcribing I will finish the editing and post it.

These are my concrete goals for 2015. As you can see, I’ve got a ton of work to do. But I think as long as I take these goals in small, bite-sized chunks, with a lot of self-examination thrown in to ensure that I’m staying on track, I can achieve them by the end of 2015. I wish everyone success in whatever they’re trying to do in 2015, and I sincerely hope this is a great year for everyone.

Carrie Dils wrote a post on why mixing email with hosting is a terrible idea. She’s getting some glory from it, and frankly, I’m a ittle jealous. 😛 I also know that the biggest follow-up question is going to be something like “yeah, but how do I separate them?” So in this post, I’m going to show you how by giving you a step-by-step tutorial on how to migrate your email to a provider like Google Apps.

I don’t want to click. So tell me why this is a bad idea.

The TL. DR. version is this.

  • If one goes down, they’re both going down
  • Your host may not prioritize email delivery
  • Things may not always be rosy between you and your developer
  • Changing hosts is easier when email’s not involved
  • Email might not be your host’s biggest strength

OK, that’s not exactly the TL. DR. I added an extra in there. But that extra is something important to consider.

So how do I move my email?

I’m going to assume you clicked the link and read the post, have decided that it’s a good idea to separate mail and hosting, and have picked one of the choices Carrie recommended. Now, here’s how you move your email.

I’m using Google Apps for this example, but the process is typically the same no matter which service provider you choose.

It boils down to MX entries and priorities

Wwhen migrating your email, you’ll be provided with a series of MX records that you need to add to your domain via your DNS settings. Here’s Google’s list. There are two parts to these entries. The server address and the priority.

MX stands for “mail exchange,” and these records tell the Domain Name System (DNS) which mail server or servers are responsible for accepting mail on behalf of a recipient’s domain. If multiple servers are available, they are prioritized according to preference as part of the record.

When you send an email, a piece of software called a mail transfer agent queries DNS to find out where that email is supposed to go. the mail exchange records provide that information. They also provide, in the form of a preference, which server should be tried first and, if there are multiple servers, the order in which they should be tried. The lowest number is the highest priority.

To configure your MX records, you’ll first need to get your mail provider’s records and priorities. Then, you’ll need to log into your DNS provider’s website (in a lot of cases, it’s the same as your domain registrar, such as Godaddy or Namecheap, for example), and add the records and their priorities. In some cases, you’ll need to add a “time-to-live” value which is typically one hour or 3600 seconds. Then, save the new entries and wait for propagation. This can take up to 72 hours at maximum but can also happen sooner.

Doing this ensures that your email stays tied to your domain while giving you the advantages of separating your email from your hosting, thus avoiding all the bad things I listed above. So if you haven’t done so already, start that move. It’ll save you a lot of headaches in the long run.

Maybe one of your goals for 2015 is to start blogging. After all, you have stories to tell, or you want to help people, or you want to grow your business, or you want to do all three.

Or maybe someone’s convinced you that blogging more in 2015 is a good idea, and you’d like to try it out.

So where do you start? Once you’ve decided you want to blog, how do you make that more than just a great idea that never sees the light of day? Here are ten free resources you can use to make your blogging idea into a reality.

1. Don’t just write when the muse strikes

Whether you publish every day or not, spend some time writing every day. Start with five minutes. don’t worry about correcting anything. Just write. Or dictate. Don’t worry about whether or not you’re sitting at your computer. I like to take my phone out with me in the morning while I drink my coffee and either write down ideas or hit record and just start talking. I’ll also do this while I’m cooking or doing laundry. Then, I take those files and sift through them later to see if I have ideas that I can turn into posts. After you’ve become comfortable with writing for five minutes a day, then bump that up to ten. Then fifteen. Keep bumping up that time until you get to the longest amount that will work with your schedule and won’t become something that you put off because other things get in the way. make sure it’s a set time every day, but also be flexible so that you can move that time around or split it up so that writing doesn’t become a time vampire or that you’re skipping it because of prior engagements.

2. Think about the stories you have to tell

Everyone has a story to tell, and everyone has some knowledge or experience that can help someone else solve a problem. Maybe someone’s asking on Twitter how to do something with a particular piece of software. Instead of answering them on Twitter, write a post on how to perform that task. Or give a short answer on Twitter, and then provide a link to a post you’ve written. As long as it meets the need, they’ll be thankful and share what you’ve given them with someone else.

3. Read posts by other people. Then, write your own from your perspective.

Sometimes, you’re looking at social media and you come across one of those great posts. But maybe you think they’ve left something out, or you can cover the same thing from a different angle. Write that post on your own blog, and link back to the original to provide context. At first, this may seem difficult, because you want to make sure you don’t just regurgitate what the other person has written. Admittedly, it’s hard for me sometimes too. So I’ll often read a post more than once so that I can tease out my own angle.

4. Turn Questions into Answers with Posts

I touched on this above when I mentioned Twitter interactions, but it deserves a section of its own. In the blind community, discussion mailing lists are still popular, and they generate a lot of questions. If you’re on one of those lists, and you run a blog, consider answering some of those questions in posts and then sending the link to the list as part of the discussion. It gives people another place to look for the answer, share and bookmark, along with the list archives which can be overwhelming depending on how long the list has been around. If you’re not part of a mailing list, and you see a lot of questions being asked in comments, (several Genesis tutorial sites get a lot of that), consider answering the question on your own blog and then pointing to it in the comments of the post where the question is asked. Make sure not to be spammy with either of these methods. When you link to something you wrote on a list or in someone else’s combox, make sure it’s relevant to the discussion going on.

5. Now let’s talk about the actual schedule

Eventually, you should come up with a fully fleshed-out editorial calendar. But for now, focus on how often you’d like to write and that will be consistent. That might be every day, every week, or every month. The point isn’t how often, but how consistently you publish. Admittedly, if you space out your publishing more, it’s easier to write long-form content, and you can make good use of wordPress’s scheduling feature. But you can also make use of that feature if you want to blog every day. Once you’ve started working on the daily writing I mentioned above, start thinking about how that writing can be turned into posts. Then, start scheduling. You can also write those perspective posts and schedule them so they don’t get published the same day as the original, thus not intruding on the other post’s limelight. Same with the question and answer posts. the point is, while you’re writing, spread the ideas out. You may have three great ideas in one day. Instead of publishing those three ideas on the same day, schedule them.

6. Join a Blogging Challenge

Sometimes blogging can feel like a lonely task. But there’s a strategy you can use to gain more exposure for your content, along with support from other bloggers. You can get both by joining a blogging challenge. There are challenges running at just about any time of the year. National Blog Posting Month runs, well, every month, and anyone is welcome to sign up, post, read and share. It’s a great way to make connections. There are prompts provided, but you don’t have to stick with those. There’s also the Daily Post, which shares writing prompts and runs free writing and blogging courses and has a community to go with it that you can join and participate in. Most challenges have a presence on social media as well that you can use by hashtagging your posts or sharing on Facebook as part of groups set up for the particular challenge.

7. Join a Blog Carnival

Blog carnivals are round-up posts focused on a particular topic. Bloggers submit posts on the topic and then the blog that runs the carnival links to the posts submitted as part of the round-up post. Every carnival runs on a different schedule, but they can also be a great way to gain exposure and traffic, plus make connections. They’re also great if you don’t want to join a challenge but you do want to participate in something similar or support other people doing the same thing you are. They’re also free and focus on one particular prompt or topic at a time. Sometimes the topic/prompt never changes, but other times the carnival runner may pick subtopics for each episode of their carnival while focusing on the wider theme. You can find a list of blog carnivals at the Daily Post. They have a page devoted to blogging events and you don’t need to blog at wordpress.com to participate.

8. Don’t be afraid to share your opinion

Everybody has an opinion on something. If handled with care, opinion posts can be an excellent method to further your blogging goal. You won’t always get a positive response, but that’s fine too. Responses and whether or not you agree with them can be posts in themselves. So can reflections and revisions of oppinions. You can also write posts to persuade others to share your opinion. As long as you do this sparingly, it can fit in nicely with everything else you’re writing.

9. don’t just write

Since I’ve focused a lot on writing, you could be forgiven for thinking this is the best or only way to blog. But sharing photos, video or audio content are also great strategies. If you use a service like AudioBoom to chronicle your thoughts or participate in discussions, you’re already blogging. The next step is to share your audio or video posts to your own site. They can either stand on their own or compliment what you write. And sometimes they can be easier than writing.

10. Just because it’s not long doesn’t mean you shouldn’t publish it.

Long-form content takes, well, a long time to write, edit, and polish. If that kind of content is your thing, and you’re focusing on a less-frequent blogging schedule, then go ahead and stick with that kind of writing. But you may be able to express an idea in one hundred words. if so, then post that too. Post it along with your long-form writing. But don’t avoid it just because it’s not a two thousand word essay.


Blogging is an excellent idea for all the reasons I’ve mentioned above and more. If it’s one of your goals for 2015, use it freely, or use another guide. Either way, I wish you the best of successes and I’m looking forward to what you have to share.

Hotlinking is what’s happening when someone links to resources such as images, video, or audio files you host without your permission. It’s equivalent to someone using your utilities by plugging into your electrical outlets and then running up the bill, which you then have to pay. Even if your web host is selling you unlimited bandwidth, it still has consequences. First of all, the bandwidth (and storage or anything else unlimited they’re selling you) is never unlimited. If you’re hosting a lot of images or audio, and other people are linking to those files, your host is serving them every time someone else clicks on links from other websites, or every time someone else visits those websites that are using your images.

If your bandwidth usage is going through the roof, or even if your bandwidth usage seems out of the ordinary, your web host will do one of two things: Politely upsell you to get you to buy a more robust hosting package or shut you down.

It’s not a pleasant spot to be in when you either have to spend more money to deal with the hotlinking plague, or move hosts. But there are ways to protect yourself.

Stop Hotlinking with .htaccess

If you google hotlink protection, you’re going to find a ton of resources. This can become very confusing very fast if you’re new at this and you don’t know what to look for. it’s also mind-numbing if you do. Fortunately, there’s a very thorough resource with code examples you can use. I recommend you read the whole article, and so I’m not going to post any shortcuts. It will give you an understanding of what you’re doing when you choose to copy and paste the relevant code into your .htaccess file. I will tell you, however, that the file you need to be adding the code to goes in the root of your website. This is probably the most comprehensive strategy I’ve found and I use it myself. This strategy will work on any web host that gives you FTP access. So free hosts are likely out. Also, this only works on hosts running Apache, which is most of them.

Hotlink Protection Using Nginx

Since Nginx doesn’t use .htaccess files, you have to go about protecting against hotlinking differently. One method of protection is to add a location directive to your Nginx configuration file. Here are some example directives.

Depending on your setup, either of these methods will save you a lot of trouble in the long run. And if you’re thinking of taking a shortcut by linking to someone else’s files without permission, please consider doing something else like hosting any images or audio or video you intend to use on your own hosting account.

A word about embeds

Of course, if you’re embedding a video from Youtube or somewhere similar, you have permission. Services such as Youtube or Instagram or AudioBoom or anyone that offers embed code does so specifically to allow people to embed content on their websites. They also bear the costs of the bandwidth. Hotlinking is only a problem when you find websites that don’t offer embed codes or otherwise give permission to link to their files, and you link without asking first. So don’t worry about using your favorite Youtube video. And if there’s an image you want to use, contact the site’s author and ask. Odds are they will probably not host the image for you, but they will freely allow you to download it and use it on your site as long as there’s no copyright involved.

Christmas time is here again, and with that comes a ton of “ultimate list posts” full of tips for decorating your site for the season.

probably the most popular decoration tip is to let it snow all over your site. As a matter of fact, WPMU Dev just pushed one out the door that contains mostly snow plugins for WordPress that are completely free.

I promise. Even though I’m Jewish, I don’t hate Christmas. But snow on your site, (specifically the moving variety) is bad.

It creates a horrible experience for a lot of people, causing things like seizures and migraines, and dropping screen reader users into screen-refresh-hell.

If you must let it snow on your website, please do it responsibly. An even better option would be to forego the snow altogether and consider something a little less flashy like Christmas-themed still images with alt attributes.

Be as decorative as you want. Just don’t make it snow. By not doing so, you’ll ensure that all your readers and customers can enjoy a festive season.