Ask Lemmy
A Fediverse community for open-ended, thought provoking questions
Please don't post about US Politics. If you need to do this, try !politicaldiscussion@lemmy.world
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 !asklemmyafterdark@lemmy.world or !asklemmynsfw@lemmynsfw.com.
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 info@lemmy.world. 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
view the rest of the comments
As far as resources go, books are more complete resources but youtube videos and getting started pages / documentation / blog posts about projects / topics will get you up and running faster. This will be the resources you will frequent the most (+ stackoverflow) in the future over books. At some point a profound knowledge will help though. If you're really into books you can check out O'Reilly or No Starch Press (they're on sale via Humblebundle regularly). If you have the spare time do a Harvard edx CS50 Course (stay away from udemy or similar services if you want a general knowledge and are not looking for some very specific thing). Read forums like the self hosting / home lab / programming communities on lemmy, try to understand the discussions / their problems, they may arise on your journey as well.
For selfhosting I'd recommend getting comfortable with the linux command line at first (this may help: https://www.linuxcommand.org/). Set up a VM in VirtualBox / VMWare / whatever hypervisor you want, install a Linux image (I'd recommend plain Debian without desktop environment). Now you have a sandbox where you can toy around. If you're on windows you can use WSL2. If you're already on a linux desktop, toy around there. If you already got some hardware like a raspberry pi, get that up and running, plug it into your network and SSH into it, then you have got your playground there. Get the basic commands in like ls, pwd, cat, tail, touch, mkdir, rm, ... And some things you can do with them. Check out their respective man-pages. After that, install some packages, change configs (I'd recommend nano over vim for starters). From now on, there are no boundaries of what to do. Set up your first basic webserver with apache / nginx / caddy, install docker / podman and containerize / get some images, set up pihole, nextcloud, jellyfin, do whatever you like... Congratulations, you are now "self hosting". If you got all that, which may take a while, you can consider networking and firewalls (you could get a cheap router that supports openwrt to learn about these things). Don't open ports to the internet as long as you're not 100% sure what you are doing. You can set up a VPN with DynDNS on most modems / routers connected to your ISP though, opening up your self hosted services only to you / anyone with access.
For Programming, set a goal. This does not have to be reinventing the wheel, try something small and doable first, like a notetaking app, snake game, etc., as these might still take you several weeks / months to complete, depending on the technology you implement them with. That said, reconsider Android as an entry into programming. Toy around with some stuff with a lower gateway hurdle, like html, js, css, then maybe Python or Java. Get to know the syntax, data structures, keywords, paradigms, conventions with small little programms, and/or have a look on pages like leetcode, codewars, khanacademy, etc. Paste code with errors in chatgpt for help if you get stuck. Only then (or parallel timewise if you have a high tolerance to frustration) research the programming language and paradigms used for android (likely java / kotlin), get android studio up and running, start with a simple screen showing e.g. a label and a button. You can always extend (or more likely start from scratch) later on. If you want more than what the plain android framework is capable of, look for something else (I don't know a lot about modern android programming though lol.)