I found my perfect ux with password-store, xmonad, and xmonad-contrib's pass prompt module. It takes a bit of time setting up but it pays for itself. I don't store any passwords in my browser and filling in passwords is super quick with fuzzy completion.
password-store uses git+gnupg so backing them up is a matter of distributing the git repo. My git repo lives on each of my laptops and I have a 'central' host of it...so it's backed up via distribution.
For getting passwords to my phone I use a homemade Android app + small web app that sends them to my phone encrypted on-demand from my laptop or desktop. There are Android apps for using password-store but you have to put your GnuPG keys on your phone for that and I prefer not to do that.
Yup, it's just git. Passwords are files in a git tree so you usually do not run into any conflicts unless you manage to change the same password on both ends, which also should be easy to resolve.
1. If you managed to learn a paradigm as arbitrary and unprincipled as OOP, learning pure FP should be a walk in the park. I find it an odd argument to put in the way of progress. Anecdotally, I have not heard of anyone regretting to learn FP, let alone going back to OOP. I would love to hear from people learning FP first, how did you find learning OOP as a second paradigm?
2. I've never found a need for (automated/annotated) dependency injection in FP. In languages that support it you can use type-classes for the most part or just add another function argument / close over state, or user a `ReaderT`, or most likely a combination of the above.
I'd say the only way to understand how useful and applicable FP is, is to go learn and use it for a while to solve actual problems. I found most things you think you'll miss you won't ever end up missing, because you actually never needed them in the first place.
Read the manual front to back and install shellcheck. Doing both things has paid off for me a thousand times over. The rest is practice. Complete the bash exercises on Hackerrank. Bash is fantastic in it's domain but it does require serious study in my experience
I can second the shellcheck recommendation. Shellcheck makes great recommendations, and every suggestion has a corresponding code you can google to get to a detailed explanation of why that is considered a warning or error. Hell, even if I just considered the times I forgot to put quotes around a variable and got warned by shellcheck I would be happy that I use it.