Looking for developers for My Calendar customizations

I get a lot of feature requests and customization requests for my event management WordPress plug-in. These requests range from minor tweaks, which I can add as features in less than 10 minutes to major re-skinning and behavioral changes. When I get a request which can potentially be worked into the calendar software as a permanent part of the plug-in, I’m usually happy to take on that work — but I only have so much time, and I’d rather put that time in on making a better plug-in rather than doing new styling and custom behaviors.

So, I’m in need of a few people who are skilled developers with strong CSS, JavaScript and/or WordPress/PHP experience. I’ll maintain this list as people I trust to do high-quality customization work with My Calendar (or with other work, potentially).

Mostly, this will be CSS/JavaScript work. There may be occasional needs to PHP customizations, but that will probably be more rare.

If you’re interested in being on this list, please contact me. Provide a couple of work samples where you’ve done CSS/JavaScript work. If possible, an actual instance of customizing My Calendar would be very beneficial.

This isn’t likely to be a flood of work – but what I’m getting is more than what I can do.

Thank you!

How to structure an accessibility review

Somebody recently contacted me with a fundamental question: they were undertaking an accessibility audit, and didn’t know how to structure the process. They knew web accessibility well enough — but from the perspective of setting out to perform an audit, they weren’t sure where to go.

As a result, I’m putting together this article to talk a little about how to structure an accessibility review, in all the practical ways — how you address coming up with a quote or estimate, ways to structure your research and site inspection process, and dealing with long-term follow-up.

Figuring out scope

Although the ideal is to perform an accessibility review which identifies every problem on a site and specifies solutions, that’s not always practical. In fact, it’s sometimes utterly pointless — it depends on the ultimate goal of the review. The review process for a site which is considering a redesign is radically different than for a set of templates intended for a web site still in development.

Setting goals at the outset is key. Are we looking to identify key areas for improvement? What are the resources available for fixing problems? If an aspect of the site is rife with major problems, is it best to identify every problem within that area, or simply describe the general issues and recommend finding a new solution?

An initial review does not need to identify every problem. One route I’ve frequently used is to specify a multi-stage review process: an initial review, in which I note major issues and provide guidance on fundamental principles of web accessibility, and a follow-up in which I re-check the site and, if desired, provide further guidance and detail for continuing development.

Identifying “show-stoppers”

What’s a “show-stopper”? Essentially, that’s a function of the site which is so completely inaccessible that there is no value to identifying the problems — instead, you should just describe what would constitute a good solution and recommend replacement.

It’s not uncommon for this to arise at the very earliest stages of the review, when discussing scope. If a site is using a CMS or a framework which is fundamentally rendering it inaccessible, you may want to begin by recommending redesign of the site. However, due to the common usage of external resources to provide video, interactive widgets, or social media (to provide a few examples), it may be that there are elements in use which won’t stand out right from the beginning.

Rather than performing a detailed exhumation of a fundamentally broken aspect of the site, it may be in the best interest of all parties to simply flag it for replacement and discuss that possibility with the client.

Why is this section part of the business structure? Because spending hours reviewing replaceable services is a poor use of your time and your client’s money. You should be looking for ways to improve your client’s site without costing them an arm and a leg!

Coming up with a fair estimate

It’s difficult to provide a good estimate on what a large-scale accessibility review is going to require, in terms of hours or dollars. The larger the project, the harder it is to quote. Keep in mind, however, that what you’re quoting is not generally going to be based on the number of documents on the site — rather, it will be based on the number of unique templates, forms, and navigation structures found on the site.

It is entirely possible that the site you’re reviewing will have 12,000 pages, most with images containing improper alt attributes. However, as an accessibility consultant your time is better spent identifying one or two representative examples and explaining how to properly use the alt attribute than it is painstakingly identifying every single inappropriate attribute throughout the site.

For this reason, you should be looking at the site as a process, not as a collection of pages. The ideal process of the site can be described, greatly simplified, in four steps:

  1. The visitor arrives at the web site, which can happen at any place in the site.
  2. The visitor will attempt to move to another point on the site, which may be another part of the same document
  3. The visitor will begin a goal, which may be a purchase, a form submission, or the acquisition of information
  4. The visitor will successfully complete that goal, and be notified of the results.

This general outline describes any visitor to a web site — as a consultant, your job is to identify each barrier they may encounter while completing the process. You don’t need to look at every single page of the site in order to see the shape of the problems — if you can’t navigate using a keyboard on one page, you probably won’t be able to on any other page, either!

With this knowledge, it becomes readily apparent that a web site which has 12,000 pages but uses only one navigation structure, one template, and has only a single form will be much more quickly reviewed than a site with 120 pages which uses 5 templates, provides ecommerce, and has different navigation structures depending on what area of the site is being used.

A 100% complete audit must allow for the possibility that each page may exhibit different problems. After all, if you haven’t looked at a page, you have no way of knowing how different it may be from what you’ve already seen. However, in all probability, pages of a site will be at a fairly consistent level of accessibility. The pragmatic approach — mindful to your client’s budget needs — is going to be a selective audit, not a complete audit.

Plan your Accessibility Audit Process

Now, once you’ve done this a few times, you’ll probably have the basic approach down cold. Every web site is different, however, so that isn’t going to completely free you from doing some planning. You still need to decide what your approach will be. Two example starting approaches could be process-based testing or issue-based testing.

If you’re going with a process-based testing procedure, you’ll start by selecting a process – any process. The path to make a purchase; getting to the Privacy link in the footer; sending a contact message. Follow that process all the way through in painstaking detail, isolating the accessibility issues encountered along the way.

With issues-based testing, you’ll instead pick an issue – such as keyboard accessibility. Work your way through the entire site, noting keyboard-relevant issues as you go. Then move on to the next issue and start your hunt over.

It may seem like I’m describing a very pedantic way to thinking about conducting an audit — you know that you will ultimately do both of these in their entirety. However, the reason for having a plan is simple: you need to avoid the trap of the scatter-plot approach. If you don’t have a system, you’re far more likely to end up missing problems – either because you failed to consider keyboard accessibility over here; or because you forgot to check the contact form when you were reviewing contrast. Having a plan and a process will help you avoid these gaffs.

Schedule a Follow-up

It would be nice to believe that when you’ve written and sent your painstakingly thorough accessibility audit to the client you are done with the project. Sadly, we don’t always live in that pleasant fantasy world. (Although, to be honest, in my fantasy world an accessibility audit would consist of nothing more than a smiley sticker and the phrase “Good Job!”)

Unfortunately, no matter how detailed you made your report — the report doesn’t fix the web site. The client’s developers need to do that. Or, as is sometimes the case, the client’s developers will fail to absorb the principles of the document…and while fixing the problems you described, will create new accessibility issues. Or, they’ll implement a fix which shunts the problem somewhere else, rather than resolving it entirely.

This isn’t a guarantee – there are developers working out there who don’t know accessibility, but immediately catch on to the concept once the issues are presented to them. But there are also developers who…don’t.

Planning at least one follow-up review is important. You’ll also need to make yourself available to answer questions from the development team while they work through your suggestions.

The follow-up review should be a quicker task than the initial review. You can spot-check to see how the developers worked with your suggestions. If you like what you see, you can probably be fairly satisfied. If you see problems, you may need to keep going. If you see a lot of problems, you may need to give the client a call before continuing.

In Summary

Performing an accessibility audit requires many skills: an eye for detail, a strong sense for when an accessibility issue requires fixing, and when it requires replacement, and the ability to describe accessibility concepts in language developers can respond to. Join those skills with sound business planning and a personal investment in your clients’ success, and you’re ready to go!

Accessible WordPress Plug-ins: what does it mean?

I’ve been writing WordPress plug-ins for a while now — I launched my first plug-in a little more than 3 years ago. I’ve been involved in web site accessibility for about seven years. Naturally, when I started writing WordPress plug-ins, making them accessible was part of my goal. But accessible software extensions have two aspects: the interface, and the output: and I don’t have complete control over either.

Is it possible to make a plug-in with accessible output, guaranteed, every time? Is that compatible with a desire to provide flexible software which developers can use for a wide variety of possible needs from a design and functionality perspective?

What I’ve found is that I can unquestionably make a plug-in which is capable of creating accessible content. However, I’ve also discovered that in order to really make a plug-in flexible, it can’t have too rigid of an output: it needs to allow the user to customize the structure and content at a pretty significant level.

As a web site developer, this is certainly something I always want: whenever I find myself using a plug-in which doesn’t have built-in templating for the output, I can be pretty certain that I’ll be making edits to the core plug-in files. The HTML produced is rarely what I really want. My conclusion from this is that if I want to create plug-ins which will be used by sophisticated developers, then they need to be very, very flexible.

The downside to this, of course, is clear: if you can change the output, you can break it. As a result, every one of my plug-ins which creates web site output has equal potential to be accessible or inaccessible: and I can’t guarantee the results. Additionally, the core content of the site can only be as accessible as the theme surrounding it — so even if the plug-in is configured with my defaults, that doesn’t guarantee any particular level of accessibility.

I’ve had to accept that. But it does mean that I’m constantly seeing implementations of my plug-ins which, while well-done in general principle, just don’t meet my ultimate wishes for accessibility.

But I wouldn’t turn back. I’d like very much to be able to enforce accessibility; but realistically, I can’t do it. There are too many factors.

My User’s Guide to My Calendar includes a short section on the principles of Accessibility; hopefully, a few people will gain from that fact. The fact is that accessibility requires education: you can’t force accessibility on somebody by providing accessible software unless you also take total control over the look, feel, and function of that software, and that’s not the way the web works. With education, you can help move people towards making their own decision to support accessibility in how they customize their software; so that’s what I’m hoping for.

So, what does it mean to write an accessible plug-in for WordPress? I can’t control the administrative interface entirely; because the fundamental interface is the WordPress core, and I can’t just evade that. I can’t control the output, in either structure or design; and even if I could control what exists within the parameters of the plug-in’s output, I can’t control what surrounds it.

So an accessible plug-in is just a plug-in which is able to used accessibly; a plug-in which doesn’t actually implement a specific lack of accessibility. Somehow, that’s a little depressing, but you take what you can get.

The overall lesson to take from this is that no plug-in is actually going to give you an accessible web site. But hopefully, it’ll give the possibility of an accessible web site.

Two new content development plug-ins for WordPress

At the end of October, I took a very needed vacation. Naturally, I couldn’t just go on vacation, so while I was taking a break I developed two new WordPress plug-ins: My Content Management and Content Progress.

These are plug-ins designed primarily for developers, really — although a novice user can probably get something out of them, even so. They aren’t terribly complicated; they’re just designed as plug-ins which are used for developing new web sites.

About My Content Management

The first of the two, My Content Management, is a tool which creates a suite of custom post types intended to fulfill a variety of special content needs which are common to many web sites. Obviously, these can be done using normal pages, as well — or dedicated plug-ins for the specific content, but I like to have the option to use a standard, common interface. Using this plug-in, you can have an FAQ, Testimonials, Staff Members, an artist’s Portfolio, etc. — all using the same interface.

If you normally develop web sites and then train your client’s to maintain the site themselves, it’s a tremendous help to have a standardized interface for all the content they need to add!

The plug-in features highly customizable templates for three different views of each content type; shortcodes to display the content; widgets for lists of content; special custom field support for the content; and custom taxonomies for each content type.

About Content Progress

This is really a simple plug-in, but particularly useful during the early content development stages for any web site. Content Progress adds a flag to the posts list view which allows you to easily pick out which pages have not been completed. For large sites, this can be particularly handy when you need to keep track of what has and hasn’t been taken care of.

There are two automatic labels: marking pages which have no content or which have very little content, since these are common indicators that content still needs to be completed. Since these are obviously not a complete picture of the site, there are also two manual flags, to specifically mark pages as completed or incomplete.

Hopefully, developers and content creators will find these plug-ins useful!

My Calendar Version 1.9.0 is almost released

My Calendar version 1.9.0 has been released!

Download My Calendar Version 1.9.0

Note for upgraders: During the automatic upgrade process, My Calendar makes a copy of your stylesheet and re-installs it in place of the copy in the package. However, if you are uploading the plug-in manually, this process will not happen. You should either move your current stylesheet into a custom styles folder or choose not to upload that stylesheet in order to retain your styles.

There has been a problem with My Calendar upgrading settings properly in this update — if you’re finding major problems after upgrading, please check your settings; you may need to reset a number of them. (This is the reason I haven’t released officially yet.)

In point of fact, My Calendar version 1.9 is ready to go. It’s packaged up, ready to be shipped out. (Well, promoted to the subversion repository. Whatever.)

However, I’m not ready to launch it yet — and this is just because I’ve been very short of time recently, and I don’t anticipate this changing soon. I don’t believe that there are any major bugs in the release — I’m sure there are small ones, despite the time I’ve spent on testing, but probably nothing earth-shattering. However, I have to be realistic — I don’t know this for sure. And because of that, I need to delay the full launch. This isn’t because I’m worried about the possibility of problems, particularly. Rather, it’s because on the off-hand chance that there are problems, I simply don’t have the time right now to be able to deal with them responsibly.

That’s a worrying position – if I launch, and there’s a major problem, I may not be able to fix it promptly. No matter how confident I am in the preparation of this version, that’s clearly grounds to delay. Unfortunately, I’ve been delaying for a long time; partially because I keep adding new features, and partially because I’ve been too busy for a while.

So I’m making this available here, now — version 1.9.0 can be downloaded now. I’m launching it here, instead of through the WordPress repository, because I know that many, many fewer people will get a hold of it here. This means fewer potential problems, and it’s much more likely I’ll be able to deal with any problems responsibly.

Since you don’t have easy access to the changelog, like you would at WordPress.org, here are the changes which apply to the new version:

Additions:

  • template editing for list, grid, mini, and single event output.
  • pop-up box is now draggable.
  • date format option for grid mode, week view.
  • templating for details link text.
  • templating for event URL link text.
  • location filtering from shortcode.
  • image upload option for events
  • day class to calendar date headings and cells
  • individual instances of repeating events can be edited
  • feature to add multiple occurrences of an event simultaneously. (concept from Dave Heitzman)
  • feature to mass edit information for groups of events (concept from Dave Heitzman)
  • stored URL for locations (contrib by John Colvin)
  • recurring daily events on weekdays only (based on contrib by John Colvin)
  • optional templating for all event output formats
  • individual event occurrence iCal export
  • numerous additional template tags
  • Option to use custom location filter fields as data control
  • Shortcode to generate list of saved locations
  • Network administrators can control whether sub-site calendars contribute only to a central calendar, only to their own calendar, or whether site administrators can make that choice.
  • Upgrade notice information in dashboard for future upgrades.
  • implementation of WordPress text diff to compare your styles and scripts against my current released versions
  • Option to skip a defined number of events in upcoming events lists.

Bug fixes:

  • jump box was displaying in week/grid view.
  • some potentially repeatable IDs (code validation).
  • Administrators see all options’ did not work.
  • Fixed timestamps on main calendar objects
  • Squashed e_notice errors.
  • category limiting did not work without permalinks due to GET variable conflict with WordPress core
  • Missing nonce in database upgrade routine
  • Mini calendar simultaneously displayed single event view when visited.
  • Link generation for details view did not work if calendar link parameterized
  • Issue with weekdays only calendar if day of week set to start on Sunday
  • Issue with retrieval of user-specific settings
  • Issue with accessing styles and javascript if My Calendar installed in non-standard directory.
  • Problem in Today’s Events widget when Holiday restrictions are enabled.

Changes:

  • replaced all default icons with 24-bit transparent PNGs
  • jumpbox output to automatically scope to the oldest dates in the database.
  • iCal output to output event for complete current month
  • RSS output to prioritize newly added events
  • holiday skipping/fifth week customization moved into event manager function
  • new ‘close’ icon for pop-up box; added close icon and scripting to mini calendar pop-up
  • copy in several places; updated template tags.
  • location lists sorted by location label (contrib by John Colvin)
  • Eliminated calendar heading option
  • default style resets no longer stored in global variables, instead stored as files.
  • Map links now trigger the driving directions dialog in Google Maps
  • New default stylesheet, refresh.css

Book Review: WordPress 3 Plugin Development Essentials

WordPress 3 Plugin Development Essentials

by Brian Bondari and Everett Griffiths

Read more about this book at Packt Publishing » or Buy it at Amazon

At root, this book is an excellent overview of the techniques and issues which will be encountered by any developer — however experienced — when they are authorizing a plug-in using the WordPress plug-in API in WordPress 3. In particular, I appreciated the emphasis on organization and coding best practices. I’ve worked with plenty of plug-ins, and there’s a lot of ugly, unmaintainable code out there. (And I’ve written some of it, too!) The fact that anybody looking to develop a plug-in who uses this book as a major reference will also get a guide to some best practices in writing software is a definite bonus.

The authors are very realistic about the limitations and benefits of the WordPress plug-in system. They observe that WordPress has a great deal of flexibility when it comes to coding style and organization — and the result is that there’s a low resistance to entry. Great for beginners, but it does mean that trusting the code you find is something you shouldn’t do blindly. Clearly the authors want to emphasize that anybody looking to begin developing plug-ins should give some significant thought to the sustainability and quality of their work. Kudos to them!

The book doesn’t cover an enormous number of different API functions, but it does give a good overview of the key hooks that are needed to get started programming for WordPress. Given the scope of what can be done in WordPress, it’s really a better solution to solidly introduce some of the core techniques rather than try and cram a huge number of concepts down the throats of their readers.

I found the systematic approach taken by the book to be extremely effective — I appreciated that the book intentionally had the reader introduce common errors into their plug-ins. Having encountered most of those issues by accident somewhere along the line, it’s tremendously valuable to already have been made aware of some key elements.

I do think that this is a good book, and very worthwhile for the beginning plug-in developer. There are a few additional areas which I would have liked to have seen covered, however.

Although the book is very thorough in addressing programming best practices, it doesn’t address the quality of output code at all. Valid HTML, consistent use of elements, semantics, and accessibility are all issues which deserve a significant mention in the programming of a WordPress extension — however easily the plug-in can be maintained, if it doesn’t produce high-quality output, this can be a major disadvantage for the plug-in. It is very dissatisfying to install a plug-in which does exactly what you need it to, but produces output which can’t easily be styled or doesn’t meet the standards required for your web site.

Nonetheless, there are no other issues which I felt were truly missed — the book is well-written, thorough, and methodical. I can highly recommend it to anybody looking to start authoring WordPress plug-ins.

Note: although this review was not paid, I was provided with a free review copy by Packt publishing in exchange for the review. It was definitely a worthwhile trade!

The Vocal Minority

As an accessibility consultant and passionate standards advocate, I’m generally in the position of appreciating the concerns of the minority. As a WordPress plug-in developer, I have a much harder time with it. In fact, as a WordPress plug-in developer, I find the vocal minority very, very frustrating.

So I’m just going to whinge a little bit. You can stop reading now if you’re going to be a dick about it.

I recently released a new version (version 2.3.x) of my plug-in WP to Twitter, which does exactly what it says — posts status updates from WordPress to Twitter. This release included a couple of heavily demanded features, including support for custom post types and for tweeting updates on comments.

I’ll admit that there were a couple minor bugs in that release — as a result, I’ve released two updates since then, cleaning up those errors.

Some people, in reading this post, will quibble with the statement that they were minor bugs — and I’m sure that those who were affected by them don’t think so. That’s perfectly fair.

What really bugs me, however, is that if I look at the only real metrics I have for estimating the success of a new feature release, then I’d have to judge that this was a complete and utter failure. Since that release, I’ve had dozens of support requests because of bugs, a handful of small donations adding up to at most $45 (if I include all contributions which weren’t attributable to a specific project), and on the WP to Twitter page at WordPress.org, the “works” gauge has been hovering between split towards broken. And the only working vote was mine.

However, I know that this isn’t really accurate. The reason that I know this is because about a year and a half ago, give or take a few months, I did release a version of the same plug-in that was *really* broken. That was a definite screw-up. At the time, WP to Twitter was a much less popular plug-in, so the impact was dampened, but in the first few hours after release I had several dozen e-mails and support requests informing me of the problem.

In this case, there’ve been 20,000 plus downloads of the updated version with a handful of people (about 10-12) complaining of problems. In my estimation, this is a very small number of issues given the apparent numbers of users.

But I don’t really know that, because I don’t hear very much from those who have a good experience.

This is actually pretty intentional. WP to Twitter is supposed to work quietly in the background — it’s not supposed to be an “in-your-face” plug-in. So when it works, people don’t notice it. However, from my seat today, it seems somewhat demoralizing. It makes me very seriously wonder why I continue to work on WP to Twitter. (For the record, I get a lot more positive feedback on My Calendar, which does help.)

Nonetheless, I have no intention to discontinue support for WP to Twitter. Maybe it’s just an ego trip, but it’s certainly helped me build a thick skin…

Page 1 of 39123102030Last

Return to Top