On top of that, if you use the TypeScript version, the abstractions are often... weird. They feel like verbatim ports of the Python implementations. Many things are abstracted in ways that are not very type-safe and you'd design differently with type safety in mind. Some classes feel like they only exist to provide some structure in a language without type safety (Python) and wouldn't really need to exist with structural type checking.
I personally think S/MIME is better than PGP. The "key exchange problem" is solved more pragmatically and user-friendly (send an unencrypted but signed email once, your/their client will automatically remember keys for encryption afterwards). And most pre-installed email clients support S/MIME natively (e.g. Apple Mail, Outlook, even the web email apps).
The only annoyance is that it's too difficult to acquire a certificate as an individual, but e.g. Actalis [1] will issue one for free.
Apple Mail's implementation was broken for years, it silently failed to encrypt messages (CVE-2023-40440). It also still can't properly sign letters with attachments.
None of these implementations also handle RSA-PSS signatures and the standards basically forbid double-signing that would allow gradual migration to better algorithms. (This issue also exists with PGP/GPG)
Actalis is nice for testing but they unfortunately generate your private key for you instead of accepting your CSR. (Protonmail has the same issue with PGP.)
But it is better in a bunch of other aspects, including tooling, yes.
and different currencies have different default precisions. So if you're dealing with multiple currencies, now you need both client and server to have a map of all currency precisions for formatting purposes that they agree on.
What's worse is that these things can also change over time and there is sometimes disagreement over what the canonical value is.
E.g. ISO 4217 (used by Safari, Firefox and NodeJS) will say that the Indonesian Rupiah (IDR) uses 2 decimal digits, while Unicode CLDR (used by Chrome) will say that they use 0 decimal digits. The former is the more "legalistic" definition, while the latter matches how people use the currency in reality.
This is not a real issue if you transfer amounts as decimal strings and then pass those to the Intl API for formatting (the formatting will just be different but still correct), but it's catastrophic if you use scaled-up integers (all amounts will be off by magnitudes).
For this reason I would always store currency amounts in an appropriate DECIMAL type in the DB and send currency amounts as strings over the wire.
There already is one in ARIA that supports this: aria-owns [1] and to some degree aria-flowsto [2]
But with everything in ARIA, it always depends on real-world support of screen readers, which is very poor. You have to work with what actually works unfortunately.
Imo changing order just to change the streaming order for a tiny performance gain is not worth breaking the UX for people with accessibility needs.
tabindex only affects tab order (of interactive elements), not the order that a screen reader navigates and reads out content (including non-interactive elements)
The main takeaway here should be to avoid YouTube embeds whenever possible. YouTube is way overused just to embed a video on a website. I'm baffled it's even commonplace on marketing homepages, why would you want YouTube's branding on your own brand's website?
Just upload the video to GCS, S3 or Cloudflare and use the <video> tag. It's really simple. You can even add different resolutions/bitrates or formats or subtitles in different languages. Cloudflare can even do it automatically for you. But even a single dead simple MP4 works well for most use cases and still loads faster than the YouTube <iframe> player.
MP4 works fine, but different ways of creating/editing/preparing video all have different ideas about how to produce a video file, and the people operating them don't always have the technical background to even know there's a difference. YouTube offers a simple solution: drag any video file in any weird format to the upload modal, and you never have to think about it.
You're right that all the major video hosts offer it too, and I think GCS/AWS/Cloudflare all have APIs for it, but YouTube does it for free without requiring you to have any clue about all this stuff.
Fair, but in my view if you have engineers implementing your marketing homepage they should be able to do this for you just like they write the HTML and CSS for you and figure out the deployment.
And if the marketing team uses Webflow or Framer or something like that, maybe those tools should add native support for dropping in videos without needing YouTube to make it equally simple, just like they make the rest of the development of the website simple.
Yeah, I've very recently had issues with mp4's only working on desktops/firefox/etc due to the wrong encoding or container or whatever not being supported. hvec vs mpeg-4 maybe? Had to mess with ffmpeg arguments multiple times to get it right. Meanwhile if you put it on youtube it will work 100% of the time.
Exactly — It's not about the LEDs, it's about the degree and adjustment. Especially coming from a high pickup or SUV while sitting in a sedan within low distance like in city driving.
You don't have to override the native styles of UI controls with CSS. If you don't add any CSS, they will look just like in native apps. It's a choice, just like you could implement your completely custom controls in native apps if you wanted to.
Sort of: it’s possible for a browser to render the controls with native components. Designers of web applications tend to think their aesthetic preferences are more important than the preferences of their users; and, browsers have not always used real native controls: Google Chrome just shipped its own controls for form inputs, for example. Historically, various parts of the Cocoa text input system also worked incorrectly in Firefox and Chrome.