Lately I've been thinking about my "software/digital situation" through observing my daily habits. I've been hoarding data (e-mails, pictures, docs, passwords, todos, notes, etc) that are stored in the cloud through mostly reliable free services.
As I get older, I noticed that I've become a little bit concerned with the situation where I may not be able to use this services due to the usual reasons folks shared in HN.
I've been considering one path to get out of this situation: use local-first app (desktop/console/web-app). The only thing I have to be careful is the data format: they should be standard data format such as: txt, pdf, [png,jpeg,etc for pics], open-file-format such as ODF. I know there are tons of FOSS desktop/console apps/host-yourself-web-app out there but there is a small caveat: I'd like to stick with them for as long as I can with minimum upgrade cycle :) so that if the software has been abandoned, I don't want to deal with the situation where the base OS upgraded and the software no longer works.
I wouldn't mind using dropbox/rsync/tarsnap in order to resolve the sync situation whether real-time sync or daily backups.
Given these parameters, there is a good possibility that I might have to write my own tools to solve certain personal workflow.
Would you recommend Java, C, C++, or Python for cross-platforms software/tooling and why?
Java: I have strong background in Java, love the tools+ecosystem. Caveats: JRE, Oracle, new language feature churns (I can choose not to)
C/C++: only touched them in college, tools aren't great, willing to learn, need guidance for best-practices/minimize effort. Lots of folks I admired stick with C/C++ to build their tools. I respect that. C/C++ based-software seemed to require minimum upgrade too (not too many dependency)
Python: Used Python occasionally. Caveats: small concern with upgrade story (Python2-Python3->future, lib binding).