Cursed knowledge
Cursed knowledge I learned while building Unsung that I wish I didn’t have to know. (Please note some of this might be skill issue – let me know!)
December 2025–July 2026
- In 2026, emails still don’t support inline videos.
- RSS readers sanitize HTML in different ways, making for example inline video tricky. Some RSS readers do not offer to play video at all, but wrapping videos in
<a>links to make them active in those readers overrides inline playback controls in other readers. - You can use QuickTime Player to record screen from your USB-connected iPhone, and even your Apple TV over wi-fi, but the option to use is New Movie Recording, not New Screen Recording.
- You can make videos with full 8-bit transparency, but they have to be encoded differently for Safari and differently for Chrome.
- Browsers do not allow you to check video’s framerate (out of fears of fingerprinting), so you have to pass that on as metadata from elsewhere.
- It is possible for simultaneous video playback to slow down or even crash user’s browser, especially on mobile – inexplicably, browsers do not seem to be garbage collecting or throttling those to prevent crashing.
- Videos sometimes have subtle borders on their edges. It apparently has to do with rounding up the width/height internally by video decoders to multiples of 8px or 16px, but making sure the width/height is divisible by those large multiples is not realistic for small video, and even trying to do that didn’t get rid of borders reliably, anyway.
- Pixel density in images is sometimes stored (or ImageMagick outputs it) in centimeters, which means that after conversion it arrives as 143.99ppi instead of 144ppi.
- On (touch) smartphones, a
clickevent haspointerType == "click"on iPhone, but"touch"on a Pixel Phone. - In CSS, there is no way to easily make responsive images with consistent aspect ratio and min width and max width without resorting to
object-position, which makes laying multiple images side by side impossible as the container doesn’t wrap around the image. The only way I found to do this is by using unpleasant manual aspect ratio calculations (which you can see on this site for every image). - There are still ways where the (already very messy) CSS syntax for word wrapping doesn’t account for all the common possibilities, and you have to manually or programmatically insert zero-width spaces to allow for breaking (e.g. URLs). In my experience, it’s very hard to tell CSS “break, but only if you absolutely have to.”
- After all these years, you still have to specify
-webkit-user-select: none;next touser-select: none;to cover all your bases.
This page inspired by Cursed Knowledge by Immich.