Rule 5. Locking.
Ask Lemmy
A Fediverse community for open-ended, thought provoking questions
Please don't post about current US Politics. If you need to do this, try [email protected]
Rules: (interactive)
1) Be nice and; have fun
Doxxing, trolling, sealioning, racism, and toxicity are not welcomed in AskLemmy. Remember what your mother said: if you can't say something nice, don't say anything at all. In addition, the site-wide Lemmy.world terms of service also apply here. Please familiarize yourself with them
2) All posts must end with a '?'
This is sort of like Jeopardy. Please phrase all post titles in the form of a proper question ending with ?
3) No spam
Please do not flood the community with nonsense. Actual suspected spammers will be banned on site. No astroturfing.
4) NSFW is okay, within reason
Just remember to tag posts with either a content warning or a [NSFW] tag. Overtly sexual posts are not allowed, please direct them to either [email protected] or [email protected].
NSFW comments should be restricted to posts tagged [NSFW].
5) This is not a support community.
It is not a place for 'how do I?', type questions.
If you have any questions regarding the site itself or would like to report a community, please direct them to Lemmy.world Support or email [email protected]. For other questions check our partnered communities list, or use the search function.
Reminder: The terms of service apply here too.
Partnered Communities:
Logo design credit goes to: tubbadu
a) I don't have any good recommendations. I'd just like to say that's a lot of knowledge. Linux, networking, firewalls, the software etc. It takes some time to accumulate all of that knowledge. And probably reading more than one book
b) There are a lot of books about Android development. I'd recommend you visit a library or larger bookstore. They should have some, maybe you can skim a few pages and see if you like how it's written.
Edit: Any maybe ask in the self hosting community and not on ask lemmy. ( [email protected] )
I highly recommend HarvardX CS50.
My first programming language was Java and if you're looking to build android apps you only really have 3 options, Java, Kotlin & Dart. Android is built on Java so if you want to learn how android works, I'd recommend Java or Kotlin.
As for learning to program, your best bet is to think of a project and then try to build it. You will inevitably hit a wall at some point and working out how to overcome it is the best way to learn programming IMO.
The classic first apps are "Hello world" and a Todo list. Hello world is just an app which says hello to you on startup, it's hard to make a simpler app. A Todo list app is a note taking app where notes are saved between sessions, and can be deleted or updated.
For the basics of programming, just pick any language to learn the syntax. Once you know one language, it's pretty easy to work with anything else. I'd recommend JavaScript or Python for that, but really anything is fine.
For advanced programming, the best thing you can do is learn to learn. Really than means being able to turn your concepts into concrete ideas that you can communicate into something other people will understand. Try taking a concept and doing Google searches for instructions on how to do it. Take other people's code snippets and make them work together for what you want to do.
Specifically regarding your desire to self-host something, pick a service and Google "how to self-host x". Maybe set up a PiHole or an Immich server for photos. Docker is widely used for easy portability for servers, so it will help if you learn how to use that. When you come to something you don't understand, do more Google searches and read everything, even if it makes your head spin. Read every bit of documentation you can and keep doing Google searches. Eventually, with enough iteration, you'll get something to work. Good luck!
I think learning linux and the terminal is a good place to start. Once you get comfortable doing basic stuff in the terminal, it will be easy to start making bash scripts. From there, something like Python would be a good next step.
In my case Ruby was my next step. I tried to learn Python later on but it always felt like a step back. Unfortunately Python is much more popular though for some reason so YMMV.
What's your educational background?
All of what you said depends on a lot of concepts. Self hosting implies you need to understand basic networking, running servers, basic security, etc. Plus a lot more depending on the nature of the application you want to host. A simple website would only require a web server running on some machine, but more complex applications might require many more dependencies such as databases, caches, etc.
Perhaps first draw out a plan for what exactly you want to do and then think about what you'll need to learn to achieve that.
Programming is a good place to start in general. You could start from either Python or JavaScript and then move on from there.
On the programming front, there are a couple general buckets you can fall into.
Do you tend to naturally follow logical reasoning (given then )? If yes, you're in a pretty good starting position for algorithms. Computer programs should be predictable/deterministic. This all hinges on the people making algorithms implementing them well - especially when it comes to corner cases.
Do you build excel files with tons of vlookups and the like? If yes, data structures (think database schemas) and potentially back end could be your jam. Programs store/access data. That information should be well structured.
Do you have workflows/UX front of mine? If yes, maybe your strong suite is UI/"front end" design (and potentially implementation). IMO this is where a lot of FOSS falls down - my current podcast app can show you podcasts episodes that have been released in chronological order. You can remove them from this list, or you can add them to a secondary list they call a quque which... offers basically the same functional as the first list but now that it's a separate list you have to manage. This is not a dig on FOSS. If anything, it's meant as encouragement to say that even without knowing how to code you can contribute to help the apps you use feel better to users.
If you want to get your toes wet in Android download Android Studio. It's free.
Give the Jetpack Compose tutorial a run-through.
Kotlin is what happened when Oracle sued Google about using Java to anchor Android development. The link above gives a decent programming 101.
Finally, if you live close to a local community college, signing up for a few programming classes might be pretty helpful.
Codecademy.com has an ide built into the webpage and was by far the easiest way to learn coding. Their JavaScript python2 c# and Java courses are free
Their paid courses are fantastic and there's mobile app development courses in swift, kotlin and react native