I completely agree. One thing I would add that you shouldn't anticipate abstractions, but find them through business domain analysis. Exactly like OP missed that there's ingredients, recipe and equipment.
Thanks. I intentionally stayed outside of the business domain, since I believe it is a subset of the problem domain. But, then again, I agree the orientation should be around the added value and as such, most likely, the business domain.
Hibernation.
External monitor support is buggy.
Pulseaudio is buggy with external microphone.
IR camera face login isn't supported.
Fingerprint scanner isn't working properly at login after sleep.
Sound from internal audio is much worse than was on Windows.
No app I know of can reliably share screen on Wayland.
Rust restricts compile time code to what t can prove.
Exactly! That's a feature. Rust is a step forward to a future where code is based on sound theory (type Theory) not on some ad-hoc "seems to be working" basis.
Intellij is always too buggy and slow for me. Things it helps you with - it's a language verbosity problem. Ideally you should just use better language.
And they also stopped bringing any more advanced features, like refactoring from null to Optional for example, or reversing template method.
If we're talking about java specifically vscode and vim would just use eclipse language server which can do most of the things intellij can like refactorings and snippets. And for other languages like python ms language server is even better than pycharm for example.
As much as I love Haskell, once you start caring about performance, laziness and GC gets in the way.
Records are still a pain to deal with.
Prelude is not safe.
Async exceptions bit you like in most other languages.
String, bytestring, text exist.
There's also tons of extensions which I hope were a default in a production language.
The language is huge.
I doubt having dependent types is a factor.
Haskell is definitely my favourite language but I don't think it's the easiest language to write. It could be, with the right set of defaults but it's not - and it's by choice: Haskell wants to be a language to explore language design.
Rust is a production language and solves an interesting set of problems (safety, gc spikes). I don't like the language particularly, but it's concise and it has modern features. It gets stuff done and that's why it's getting popular.