im very n00b about tech shit so i will ask 2 questions.

I want to self host some services for me and my first questions is: Any guide or book, or wtv, you recommend to understand self host world? I want to understand all things about it, but dont know where to start. And the guides for beginners i found on internet are very basic, just seems things like “do that, do this, and go” . I want to fully understand the world of self host. I want to understand firewalls, DyanmicDNS, MeshVPN; How to do self host; what not to do, what precautions, etc, etc.

The other question is about programming. I would love to know programming, but dont know where to start either. My focus is build android apps. Would like to learn programming to build apps for all world, but dont know how to do it and where to start. And i dont want make money with this, i just want to do this just for fun. Any advice? which language is better for a person who dont know nothing? which programs i need to install to start? Any book or tutorial recommendation ? im lost lol. thx

  • passepartout
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    2 months ago

    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.)