Cursed knowledge – Unsung
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 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 click event has pointerType == "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 to user-select: none; to cover all your bases.
This page inspired by Cursed Knowledge by Immich.
Subscribe via<br>RSS feed or
© Marcin Wichary / Mastodon / Bluesky / Email