Hi everyone,

TL;DR Completely new to coding and programming, but I want to learn enough to be able to run a home server, my own website and tinker a bit with Arduino. Is there any programming language or path that you could recommend?

I don’t know if those things are related or not. I’ve been looking at books a bout Arduino, but it’s just following instructions to do xyz, but not explanation of the basics.

About the server and website, I’ve wanted to try it out since I stumbled upon the Low tech magazine. Many of the projects there and the philosophy behind it speak to me, so I would like to be more knowledgeable about it and be able to do some stuff myself.

EDIT. You guys are awesome! Thank you so much for the replies. It’s so cool to see Lemmy populated with cool people willing to chat and put knowledge in common :) I might be updating this post when I get to do something about… well all the resources you gave me!

  • m_randall
    link
    fedilink
    arrow-up
    2
    ·
    9 months ago

    Do you have more specific goals? Running a home server and website isn’t really programming, more sysadmin work. If you want your website to be a web app that’s a different story.

    For arduino work C would be the most directly relatable. It’s a simple language but can be a bit tricky since the language itself doesn’t do much hand holding for you. Arduino does make it a bit easier though.

    The C Programming Language is probably the best programming book ever written for any language.

    • Beardedleftist@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      9 months ago

      Since I don’t quite understand how all this works (in fact, my field are humanities and sociology lol) I can only talk about what I’ve seen surfing. A website that I could host and requires little to run sounds super fun to me and also a nice way to dip my toes in this world, although I might be wrong about that.

      I recently discovered the Fediverse and matrix, and thought it would be neat to try to host my own stuff. But again, I don’t know how literate you need to be to do any of that, and I’m probably a few months away from even understanding the basics.

      Thanks for the reply! I’ll check if I can find the book in the public libraries nearby!

      • m_randall
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        9 months ago

        All good. Learning and exploring is part of the journey! For example hosting a website can be as simple as running a program

        (egwhile true ; do nc -l -p 80 -c ‘echo -e “HTTP/1.1 200 OK\n\n $(date)”’; done)

        or as complicated as an entire application with multiple databases and processes.

        For your first goal - what do you want your website to do? Blog? A bio about yourself? Are you interested in creating the HTML or do you want to focus on getting someone else’s application (eg matrix) up and running?

        • Beardedleftist@lemmy.mlOP
          link
          fedilink
          arrow-up
          1
          ·
          9 months ago

          It would be nice to just have a blog up and running! This morning I stumbled upon this website https://alexw.nyc/, and I would be so happy to be able to make a website like that one, to be honest.

          Being able to host a matrix server o a pixelfed instance for me, family and friends is something that would be awesome, but probably too much for someone like me, at least for now. So I’d rather go with the website.

          PS: Whenever I see something like this I panic lol

          (egwhile true ; do nc -l -p 80 -c ‘echo -e “HTTP/1.1 200 OK\n\n $(date)”’; done)

          • m_randall
            link
            fedilink
            arrow-up
            2
            ·
            9 months ago

            Excellent - that site is nice and basic. A good first project.

            Seek out some resources on HTML, CSS, basic Linux command line and nginx and start playing around. If you’re on a Mac you can do all this locally then rent a small VPS from digital ocean or the like for about $5/mo to host everything on the web when you’re ready. I can’t speak to options on windows.

            On your last comment it looks scary but if we break it down it’s not bad at all.

            while true ; do Programs are (super) basically made up of if “this” then do “this stuff”, and while “this thing” do “some stuff”. While true means run this next bit of code (until done) forever.

            nc -l -p 80 -c

            nc is a program (netcat) that reads/writes data to a network. - in Linux denote options for the program. These are saying listen, listen on port 80, and run a command.

            echo -e “HTTP/1.1 200 OK\n\n $(date)”’;

            The command netcat will run. This is HTTP protocol magicness and $(date) is a Linux command that prints the date.

            done Ends the loop

            Ez pz.

            If you have a Mac you can probably run this in terminal and check out what it does (do take care in running commands from the internet tho).

            • Beardedleftist@lemmy.mlOP
              link
              fedilink
              arrow-up
              1
              ·
              9 months ago

              Thanks for the explanation! Once you give everything a meaning it’s just another language I guess lol

              I’m not on a Mac, but I do have a PC running Ubuntu so maybe that works too (?)

              I’ll be looking for those resources you listed this week since we have some days off and see what I can come up with. With that and all the other suggestions I think I’m ready to do some stuff, build some break some and see how it goes haha

              Thanks again!

                • Beardedleftist@lemmy.mlOP
                  link
                  fedilink
                  arrow-up
                  1
                  ·
                  9 months ago

                  When I was a kid I was really into computers, so I met Linux back then. Nowadays, I just use it when I’m fed up with Windows or if I need to get work done since it’s distraction free and workspaces and hot corners make my life so much easier when working with multiple documents :)

                  Saved the website for later on!