It's not obvious to me that comparing GDP per capita is a fair comparison when talking about one country with immigration vs one without. A lot of the immigration I believe to be not so skilled. But we needed lower-skill jobs filled too.
Could you give an example or two of languages/frameworks that have demonstrated abstracting the transaction blocks away? I'm not sure I'm following so I think this will help.
As always, it depends what properties you're relying on MD5 for. Just because something uses MS5 doesn't mean it's broken, because its preimage resistance (i.e. 'invert this hash') and second preimage resistance (i.e. 'find an input that goes to the same hash of this other input') are both not broken (yet) from a practical perspective.
Sometimes whether a cryptographic protocol relies on collision resistance can be surprisingly nuanced, so it should be phased out for this alone (and as we have better options) but for simple examples (e.g. to make a signed hash of an executable, which is probably equivalent to what you're describing) it's not broken.
The overlap with VS Code is very helpful for Neovim too though, as Neovim integrates well with technologies and plugins intended for VS Code. My C++/Rust debugger setup comes from installing VS Code, getting it to install its debugger, and then pointing Neovim at it.
+1 to BetterTouchTool! I'm mostly a keyboard person (typical 'vim' user etc.) but being able to switch tabs using a two-finger tap left and right on the touchpad is so pleasant that I find it worth the investment for BetterTouchTool alone. Configuring this for the different keybindings of different programs flexibly is really great. And it's a one-time payment including fixes and improvements - I've had it for years.
One thing I enjoy about fish is that it's not just a shell, but also a modern scripting language alternative to sh/bash. Seems like I would lose this with Murex?
(There's no right or wrong choice for Murex here, just that has to choose one way or another.)
I personally have run into breaking changes in Python's regex module, which is pretty fundamental to such uses as mentioned above.
If I recall correctly, they changed how `re.escape` worked between Python 3.6 and 3.8 (I'm not sure which minor change exactly) in terms of which symbols received a backslash before them, thereby breaking my code.