The city next to the town I grew up in had a shopping center that was built atop a sanitary landfill. For those unfamiliar, creating a sanitary landfill involves taking landfill waste, spreading it into thin layers, compacting it, then paving over it. It enjoyed popularity as a practice in the 60s and 70s. I’m all but sure this shopping center was built in the mid-to-late 70s. It was the 90s when…
I have complicated feelings about LLMs. I mean, a lot of people I know do. But this is also my blog, so I get to pontificate on those feelings and people… willingly read about them? When it comes to vibe coding, I have to separate my personal thoughts and feelings from my professional. It’s not fun. Emotionally, I feel like someone is holding a gun to the back of my head, and that gun is somehow…
I made an app! What Can’t I Press? is an app that allows you to: Read, search, and filter through screen reader keyboard shortcuts. Scan open apps and add their keyboard shortcuts to the collection. Copy a keyboard shortcut to your clipboard, with modifier keys to format the keyboard shortcut in different ways. Export the list of keyboard shortcuts in its current state as JSON. It is intended to…
I think about evolved antennas a lot. If you’re not familiar, an evolved antenna is created when you set an evolutionary algorithm on the task of producing a structure that is as efficient at its intended function as possible. Past that there’s no human input, the algorithm just does its thing. It: Modifies elements of the initial design, Evaluates how well the design would perform according to a…
A bold first sentence that draws you in. A steering second sentence to set you further down the path. A third sentence that tantalizes and alludes to content to follow. Following is an initial explanatory paragraph. It serves to help back up the previous paragraphs, and start to ground it in more applicable information. Expectations are set, and potential skepticism is addressed. A link to prior…
Say you’re working with a LLM and training it to write good frontend code. Good frontend code is accessible code , so of course you want to instruct the LLM to produce it. However, the bulk of frontend code on the web is inaccessible to some degree. Also know here that LLMs are trained on the majority of the world’s frontend code. Similarly, many contemporary LLM-friendly UI libraries claim to be…
Hey there, fellow designer! Chances are good you’ve been linked to this after doing some annotation work on a design you've been creating. First off, I want to thank you for taking the time to address accessibility considerations in your work. No, seriously. I mean it. Accessibility-oriented annotations are still a relatively rare thing in our industry. I applaud your efforts to buck that trend,…
This is another window into the sometimes unglamorous-yet-vital tasks that being an accessibility designer demands. Keyboard shortcuts occupy a strange area for web design. Most websites don’t have them, and that’s totally fine. However, it makes more sense for web apps to utilize them. Web apps utilize keyboard shortcuts for speedier navigation and operation, for people who want or need to spend…
I was kindly approached by Fable with an offer to evaluate their new pay-per-project model. It is a project-based option for accessibility practitioners, champions, and product teams that delivers quick feedback from disabled people who use assistive technology. This service offering addresses a gap left by organizations and individuals who cannot use a more longterm subscription-based engagement.…
I am not a big fan of personas . They’re oft-abused tools whose utility is far too frequently not interrogated, and consequently create more harm than good. Recently, the accessibility arm of a government web services team put their “inclusive personas” out onto the internet. These personas were a set of hypothetical people, each with a different disability condition. The goal of this resource was…
Full disclosure: I shamelessly stole this idea from Marc Thiele because I like it so much. Like Marc, I am also motivated by FOMO . Trying to stay on top of things in a fast-paced industry has been made difficult on account of social media fragmentation. RSS has its own place in my daily reading rituals. So does doomscrolling. That said, I also really like newsletters . Enough, in fact, that I…
I shared the following message on a Discord server I participate in with some friends: having a very normal day where I have to read RFC 3986, as one does To which a friend quickly replied: …are you having a linking argument? 😅 I then demanded to know if they knew what RFC 3986 was off the top of their head, to which they replied that the only one they knew by number is RFC 2119 . This is to say…
Like cicadas emerging from the ground, design industry conversations about quality seem to periodically erupt on social media. Also like cicadas, these articles are as predicable as they are irritating. I can’t count the amount of Medium thinkpieces I’ve seen come and go where an author accidentally stumbles backwards into the problems that drove Phaedrus to have a nervous breakdown in Zen and the…
Design systems are organized in an imperative, top-down, hierarchical way. By this, I mean its maintainers decide on categories of content, and then how that content is ordered. This is done as a calculated bet to best serve the known and unknown audiences who consume the design system‘s content. For example, GitHub’s Primer design system divides the world into a Getting Started guide , Primitives…
A thing you should know is that you get put on a lot of lists if you spend a decent chunk of time publishing blog posts on your website. Your website and contact information will be shared around on these lists, for the purpose of soliciting you for guest posts. If you’re not familiar with the concept, guest posts are a way for other people to take advantage of your website’s search ranking as a…
I’ve been seeing, and enjoying reading these posts as they pop up in my RSS reader. Dave Rupert tagged me into the chain , so here we go! Why did you start blogging in the first place? With the gift of hindsight, I guess I came up being blog-adjacent. Like Dave, I also had a background in publishing as a youth. I worked for my high school newspaper, and had a part- and then later full-time job at…
I debuted these principles in my axe-con 2025 talk, It is designed to break your heart: Cultivating a harm reduction mindset as an accessibility practitioner . They are adapted from The National Harm Reduction Coalition ’s original eight principles . My adapted principles reflect philosophical and behavioral changes I’ve been cultivating. This is done to try and offset, and defend against systemic…
I get asked about my opinion on overlay-adjacent accessibility products with enough frequency that I thought it could be helpful to write about it . There’s a category of third party products out there that are almost, but not quite an accessibility overlay . By this I mean that they seem a little less predatory, and a little more grounded in terms of the promises they make. Some of these products…
A lieutenant colonel in the Soviet Air Defense Forces prevented the end of human civilization on September 26th, 1983. His name was Stanislav Petrov. Protocol dictated that the Soviet Union would retaliate against any nuclear strikes sent by the United States. This was a policy of mutually assured destruction , a doctrine that compels a horrifying logical conclusion. The second and third stage…
GitHub has updated the page template used to list Commits on a repository . Central to this experience is an interactive list component that I was responsible for architecting. This work was done alongside input from James Scholes , whose guidance was instrumental to the effort’s success. An interactive list is a construct that’s more commonplace on desktop applications than the web . That does…
Former United States president and war criminal George W. Bush gave a speech in Australia , directing a v-for-victory hand gesture at the assembled crowd. It wasn’t received the way he intended. What he failed to realize is that this gesture means a lot of different things to a lot different people. In Australia, the v-for-victory gesture means the same as giving someone the middle finger in the…
I have a lightning talk I deliver internally at my job. It is intentionally delivered to non-accessibility practitioners, so mainly engineers, designers, project managers, and product folk. The talk is about exploring macOS' Accessibility system preferences . It points out different features, like offline white noise sounds , color filters , and magnification . Here are the first two slides I use…
I created the a11y-syntax-highlighting library seven years ago, forked from xiaozi’s solarized-prism-theme for PrismJS . To not bury the lede, the new update : Supports Forced Colors mode , Is encapsulated in a Cascade Layer , Uses Custom Properties , Groups its selectors using the :where() pseudo-class function , and Normalizes color value declarations to all use hsla notation . It also offers…
This is one of those cases where circumstances at my job led to needing to document expected behavior in order to create “synthetic” links via JavaScript. Sometimes this sort of thing is regrettably unavoidable. A large part of the effort was capturing all the different actions you can perform with keyboard interaction when an anchor element is focused . Turns out, there’s a lot! I thought that…
Google Is the Only Search Engine That Works on Reddit Now Thanks to AI Deal - 404 Media Thread by stillorangecrushed - Thread Reader App AI models fed AI-generated data quickly spew nonsense - Nature
I played a lot of the pen-and-paper roleplaying game in high school and college. I’m now conceptually more into Dungeon World ’s approach, but I digress. Unlike Tom Hanks, I avoided turning into a delusional murderer . Instead, I deepened some friendships, had a lot of big laughs, learned some cool vocabulary, and had an indirect introduction to systems design. Importantly, I also annoyed the hell…
I am the original author of the browser extension Millennials to Snake People . The code that powers this extension is public and transparent . There is another browser extension called “ Snake People 3.0: Slither with a Hiss ”. It is made by the highly suspicious Firefox user 13947499 . I do not know who this person is. I am also unable to locate the code they used to make this extension. The…
A lot of work goes into making every page and view of a website or webapp look consistent with every other page or view. It’s just good design. Smaller, newer experiences tend to be more uniform than not. This makes sense in that the bulk of the experience is created at the same time and orchestrated by a small group of people. Larger, older sites tend to grow into being slightly less invariable.…
I remember feeling numb learning that my writing had been sucked up by OpenAI. It came out of nowhere and was done without my permission or consent. I have a lot of ethical issues with contemporary AI productization , notably notions around consent, ownership, and environment. These concerns have all been addressed by others, and far more thoroughly and eloquently than I ever could. The issue for…
Much has been written about the terrifying privacy implications of Microsoft’s new Windows Recall “feature” . Talking to even one person who works in cybersecurity, political advocacy, domestic abuse prevention, LGBTQ+ support, etc. would reveal the full, naked horror this sort of technology enables. To build from that, I’d like to suggest another potential negative consequence: discrimination…
I contributed two pages to Multipage Version , Mat Marquis ’ new zine. The zine is about HTML elements, and is intended to be printed out as physical media. It was a ton of fun to make, and so refreshing to get back to print media design for a bit. Here are the two pages I contributed, as a sneak preview: You should do yourself a favor and order a copy or ten . 100% of the profits goes to Trans…
Browsers are a failure of imagination. I understand that new browser features and functionality need to be rolled out with care, in that you need to accommodate a wide range of technological literacy and familiarity. This is to say nothing of built-up muscle memory and the risk of change aversion. That said, the long view of the convergent evolution that are web browsers leaves me wanting.…
I swear this isn’t a sponsored post. I impulse bought a TinyTV 2 recently. It serves a weirdly specific need, namely adding to my tiny living room’s tiny living room: I live in a small place. It’s a whole thing, don’t worry about it. The device itself is a bit of a technical marvel, provided you’re also an ancient nerd like I am. It has a 1.9" by 1.4" by 1.0" form factor that houses: An Itty-bitty…
I spent a decent amount of time last year helping to create a table component . Tables are complicated to make . They’re even more complicated to make accessible. I’m proud of our efforts here, especially because I think we went about making it the right way: Identifying an important, existing content need, Setting an initial scope, making it a shared understanding, and then sticking to it,…
Another trend I see from time to time on social media is the idea that images should have alternative (alt) text descriptions included in their metadata. Like a lot of things accessibility-related, the idea contains nuance that needs unpacking. At a high level, storing alt text as metadata is not a bad idea. In fact, reading the sentiment expressed makes me happy. It is a step above indifference…
A few years ago I made a New Year’s Eve resolution to stop overthinking assholes. I could delicately, patiently, and painstakingly debunk the gigantic, misplaced swing of a man who is burning others' lived experience as fuel to propel his increasingly irrelevant career. I could also just call him an asshole.
I have worked for two newspapers over the course of my career (three if you count my high school newspaper). One thing I learned there is that the top half of each and every newspaper homepage is a daily battle of priorities. The idea here is that the thing that is highest, largest, and leftmost on the page will get the most attention. Placement and ordering of this content is also an expression…
More than one thing can be true at the same time. For this post, it’s that: Have recently felt a lack of control in many of aspects of my life, I’m still technically a designer, and that I like CSS a lot. Because of this, I’ve found a new worry stone : my Mastodon instance . Updated visuals This is how my Mastodon instance used to look: And this is how it now looks: I used to use a Stylus browser…
An uncomfortable truth is that the vast majority of access-related issues are created in the design phase . Accessibility annotation kits help tackle this problem, and in doing so lower the downstream issues that would be created without their presence. This is to say that I really like the idea behind them. Liking an idea does not mean the idea is exempt from criticism. This post is long, but I…
I’ve witnessed this phenomenon across enough corporate Slack workspaces that I think I can speak to it with confidence. What is a zombie Slack channel? If you use Slack (or Teams, or some other similar app) at work I’m sure you’ve encountered zombie channels before. Zombie Slack channels are effectively dead communication that refuses to die. They are animated by unknown forces, set to mindlessly…
An incomplete list: Most of them are made to make it easier for someone to get to where they want to go. Some are purely utilitarian, a few are completely decorative, and most are a combination of both. Some are built by governments, some are built by organizations, and some are built by individuals. Some are rigorously planned out, while others form more organically. Some are built to code,…
A public beta was released for GitHub on Friday the 29th . It allows you to apply or remove an underline effect to links in body content . The link underlines are present in Issue and Pull Request comments, as well as other areas of the site. We are still identifying areas where underlines should and should not be applied, as well as how they should look. Some people rely on link underlines to…
I’ve been taking screen reader lessons. I found someone who is kind enough to offer their time and expertise (and grace in answering the occasional ignorant question) in exchange for payment. The goal here is to uncover assumptions I carry with me when using assistive technology, in order to make my work better. It is my hope that this can translate to experiences that people who use assistive…
Blogs are good at communicating what you’re thinking about a specific topic, but not so great at the larger framework of how someone came to be in the headspace that lead to the posts they share. Because of that, I’ve set up a formative posts page . This page is a list of blog posts other people have written that had a profound impact on me. There’s no other commentary or contextualization past…
I buy clothing in sudden bursts of need. I do this because I wear things past the point where I probably should not, and then rush to address the gap so I don’t look strange on a Zoom call or at the grocery store. This is to say that quarantine has melted my brain. Speaking of melted brains, I recently succumbed to the siren call of an Instagram dropshipped jeans advertisement. What can I say? I…
There are roughly five types of people you’ll meet doing accessibility development work. They are: People who create inaccessible code, but do not realize they are doing so. People who create inaccessible code and realize they are doing so, but do not know how to fix it. People who create inaccessible code, and do not care about fixing it. People who create inaccessible code that they think is…