Keyboard navigation
Every link, button, form field, and expandable section is reachable and operable by keyboard, with a visible focus outline. A "skip to content" link is the first thing in the tab order on every page.
Accessibility
We aim to meet WCAG 2.2 Level AA. We are not claiming full conformance — anyone who claims that without an audit is guessing — but here is exactly what we have done and what we know is imperfect.
Accessibility is a build practice, not a plugin. Retrofitting it after a complaint costs several times what designing for it costs, and the result is worse. So it goes in from the start on this site and on the sites we build for clients.
We target WCAG 2.2 Level AA. We deliberately do not publish a conformance claim, because a genuine claim requires an independent audit and this site has not had one. What we can tell you is precisely what has been implemented and what has not.
Tell us and we will fix it. Email [email protected] or call (865) 888-9809. Please include the page and what went wrong — and what you were using, if you know, since a screen reader problem and a keyboard problem get different fixes.
We will acknowledge within two business days and tell you either when it will be fixed or, if it cannot be, what the alternative is. If you need information from this site in another format, ask and we will send it.
If you are procuring on behalf of a city, county, or agency and need accessibility documentation, get in touch — we can talk through how we approach it on government projects and what evidence you need for your file.
Implemented
Several of these are enforced automatically — the build fails rather than shipping a page that breaks them.
Every link, button, form field, and expandable section is reachable and operable by keyboard, with a visible focus outline. A "skip to content" link is the first thing in the tab order on every page.
Text can be enlarged to 200% and beyond. We do not set user-scalable=0 or cap maximum-scale, which is a common failure of WCAG 1.4.4 and one the previous version of this site had on every page.
One <h1> per page, headings in order without skipping levels, real landmark elements, and lists marked up as lists. Our build fails if a page has the wrong number of top-level headings.
Meaningful images have descriptive alt text; decorative ones are marked so screen readers skip them. The build fails if an image has no alt attribute at all.
Body text, headings, and interactive elements are checked against WCAG AA contrast ratios. Color is never the only way information is conveyed.
If your device asks for reduced motion, all animation is disabled rather than merely shortened.
This site ships no JavaScript. Every page, including the expandable question sections, works with scripting disabled or unavailable.
Pages work down to a 320px viewport without horizontal scrolling. Wide content such as code samples scrolls inside its own container rather than forcing the whole page sideways.
Known limitations
Publishing this list is the point. A statement that admits nothing is not a statement.
Some images on posts from 2014–2017 have brief alt text rather than full descriptions. We are improving these as we revisit each post.
Long lines in code examples on blog posts scroll sideways within their box. This is a deliberate trade — wrapping code changes its meaning — but it is less convenient on a narrow screen.
If a form submission fails validation, the error is shown on a separate page rather than inline next to the field. It is readable and keyboard accessible, but inline errors announced in place would be better, and we intend to improve it.
Last reviewed August 18, 2026
Start here
It costs far less to design for this than to retrofit it. Tell us what you need and who has to be able to use it.