(Multiple posts because character limit)
Right, what I was getting at is that when I link to a stream/video, I'm usually already explaining what the video/stream is in the post text, and I'm just including the thumbnail for visual reasons (looks better than letting it auto embed a preview card from the link). So in that case I guess just using an alt text of "video thumbnail" is maybe enough so people know they aren't missing out on much? In this particular case the thumbnail just reads "I hacked macOS!" with a root shell and a "Whoooa" speech bubble, with me and Cyan on the left, so it's not really adding much information over the post text. It's the same thing with stream announcements, I always have some text going along with it that is mostly redundant with the image.
I was not expecting the emulator to crash so hard! It's actually a very simple HTML view. There's a few buttons along the top for operations, a main text window showing the exploit source, a table to the right listing every register and its value, and a two-element table under the text view listing the two virtual "micro sequence registers". Clicking the "Mode" button replaces the text view and two registers with two text columns, one with the source and the other with the firmware disassembly. The emulator itself is all text and layout, no graphics (though it does use color for highlighting and to convey changed values).
@esoteric_programmer The emulator itself is a giant blob of JS, but that shouldn't affect a screen reader. I'm surprised it went so poorly, I was just expecting it to not be very useful to actually use. The exploit source is loaded in its entirely and scrolled to the current line, but that's just a few hundred lines of code. I'd guessed the screen reader probably doesn't know where to start reading, but if that were all it'd had started with ' #include' and I'm sure you'd at least have known what it's doing. Meanwhile the assembly is just the current screenful of code (dynamically recomputed as it steps) so other than excessive context, it shouldn't have broken or overloaded anything.
It's really weird that it went *that* wrong. Maybe the syntax highlighting spans confused it? Or maybe reveal.js, the slides framework I use, is itself not accessible? I don't know... (The link has an anchor taking you to the last slide, but you can navigate to other slides with the arrow keys, in a sort 2D columns-of-slides pattern, space key to go to the next slide in logical order)