This part is really only for if you're a super nerd. If you want to make your own stuff, follow this. If you just wanna use stuff, ignore this. You can code on any device, but I recommend programming on your server. Not to sound biased, *ahem* but Linux is best for coding. This is not intended for you to learn programming, this is a compass to point you in the direction of learning.
So how are you going to code? You could just use GNU nano. That... works, but as someone who did that for a while, don't... I used it for coding until one day I was sitting in the dining center commons and working on some code with nano. My wifi randomly disconnected and I lost some progress. Since then, I've been using code server. It auto saves which is nice but it's also just better for coding. You could use a tool called micro, which I do recommend you still install as it's still useful sudo apt install micro but I say we use Code Server. If you've heard of Microslop's Visual Studio Code, this is this that but on a server. To install, simply run curl -fsSL https://code-server.dev/install.sh | sh It'll prompt you for a few things, follow them as needed. One other thing I wanna mention is by default code server uses port 8080. A lot of things use that port and I really hate it because it just causes conflict. There are 100,000 port numbers, I don't know why software keeps using the same one. Because it can cause conflict, I just recommend you rebind the port. Do that by editing the config nano ~/.config/code-server/config.yaml and you should see a few things. Look for bind-addr: 127.0.0.1:8080 and change that to whatever port you desire. You'll also need to change it to 0.0.0.0 for it to work. Mine looks like this: bind-addr: 0.0.0.0:8675 The purpose of the 0.0.0.0 is to make it you can actually access it off your server. I think you could leave it 127.0.0.1 and do a loopback, but this is just easier. While you're here, I recommend changing the password to something you'll remember. Save and exit, then run sudo systemctl enable --now code-server@$USER to start the service. Go to your LAN IP followed by the port and login via the password you changed it to. Now you're in! From here, you can create files to code. Now for coding languages...
HTML isn't considered a programming language, but it's more like one than not. HTML is pretty simple for starters. So what is HTML? HTML is the way every website works. It is a file type that can only display something without user input. Well, it can for stuff like check boxes, but lacks the ability to process that in the same way PHP or Javascript can, but those are whole different pools. So, how did I learn HTML? Frankly, I wouldn't say I know it, I just know the basics. That's why this is not a programming guide. How I started was by having Gemini code it for me and then I reverse engineered its code. If you want to do that for my site, you could either visit the GitHub, or download the code right here. But this is only the code for this site, and I'd just recommend you use inspect element by pressing F12 on your keyboard. For a book, I ordered HTML and CSS: Design and Build Websites by Jon Duckett the other day. It actually arrived yesterday, however I've been gone this weekend so I'll pick it up today.
PHP works with HTML as I mentioned in the HTML section. I don't know any PHP, and so I'm just briefly mentioning it here. You do have to install it and to do so is run sudo apt install php8.5-fpm to do so. My NGINX auto config actually uses a bit of PHP for the GUI, but as I mentioned, I know zero PHP so obviously the GUI doesn't work. It's actually a little outdated and Javascript is becoming more of what's used. I ordered Modern PHP: New Features and Good Practices by Josh Lockhart and that is supposed to arrive October 10th.
Python is the easiest programming language you can learn that's officially considered a programming language. However, I have barley given it a chance. For me, it was never much of a challenge and didn't feel rewarding enough. To install, run sudo apt install python3 python3-full python3-pip -y which installs the default python and a few other stuff you might use. So what is python good for? Honestly, I don't have an answer. Because of its simplicity, its only good for simple tasks. Certbot is the main thing I can think of that uses python. I've used it for stuff like a Discord bot with Discord.py If you desire to try that, it's installed via pip which we installed earlier and installs as python3 -m pip install -U discord.py So how should you learn python? I honestly don't know. I would say a book, but I'd start out with Khan Academy as that's what I did at one point. A book I have my eyes on is Learning Python: Powerful Object-Oriented Programming by Mark Lutz.
Alright! Now this is what I'm excited to talk about! C is the language I'm most familiar with and I'm creating SpyderFly in. What is C? It actually has an interesting history. Created by Dennis Ritchie at AT&T's Bell Labs in the early 70s, it was created to replace the assembly coding language UNIX was written in. Yes, the guy who created C was the co creator of UNIX along with Ken Thompson. You don't install C to run a program, you install its headers. To install it, run sudo apt install build-essential manpages-dev -y which creates headers in /usr/include/ that C uses. I'd say C is easier to learn compared to other languages, but is not nearly as simple as python. Python is middle school math, C is high school algebra, and the other languages are college calculus. So, what is C used for? It's used for operating system development and software development. Stuff like NGINX (which is what this site currently runs) was made in C. I'd love to tell you how to write C, but I am the wrong person to do that. So how should you learn it? I asked someone a while ago what book I should get and they recommended me the "bible of C programming" as it's called: C Programming: A Modern Approach Second Edition by: K. N. King. Considerded the gold standard of C books. It's a pricy book, yes, but it's worth it. I have a copy, and I love it. It doesn't feel like a book, it feels like you're sitting in a professor's class teaching. Very well written and easy to follow. However, it's mostly focused on the "portable" C. Meaning the code in the book will work on Mac, Windows, or Linux. I got The Linux Programming Interface by: Michael Kerrisk.
"C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it, to the point where it's much much easier to generate total and utter crap with it. Quite frankly, even if the choice of C were to do nothing but keep the C++ programmers out, that in itself would be a huge reason to use C." That is a famous quote from the creator of Linux Linus Torvalds. The creator of C++ Bjarne Stroustrup said "There are only two kinds of languages: the ones people complain about and the ones nobody uses." So you gotta kinda pick your poison. To install, run sudo apt install build-essential -y I've not tried C++ yet, but I'm intrigued. It just seems like a more complex C. If I'm not mistaken, with C++, you have to specify a lot more making it a pain to port to other platforms. C++ is used in a lot of stuff. A lot of software I've seen uses C++ and pretty much every video game I've seen is made with it. So how should you learn? Idk, go to college? Bjarne Stroustrup has written numerous books on C++ but some have become more outdated than others and so I have no real answer. I might buy a book, and if I had to pick, I'd get The C++ Programming Language 4th Edition by: Bjarne Stroustrup Wow! This Amazon link is more expensive than some other places, I won't be getting it off Amazon then. Or maybe I'll get Programming: Principles and Practice Using C++ (C++ In-depth) by: Bjarne Stroustrup
Rust is a very new language made in 2015. A stable and memory efficient programming language. I don't know much Rust, in fact, I got the book The Rust Programming Language Fourth Edition. Because it's a newer language, I can't name much stuff made with Rust. Two come to mind: Pingora and Sailbrush. Pingora is a web server developed by Cloudflare and Sailbrush is an open source alternative to Adobe Animate developed by YouTuber TimTom. Rust is uncommon to be taught at universities because of now new it is, but I can see it being taught within the next ten years. To install it on your Debian system, run curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh and just hit enter at the prompt.
COFFEE!! Not that Java. I'd say the two languages I knew the names of before I got into computers were Python and Java. Java is... a language that exists. The only thing I know that's made with it is Minecraft Java Edition. I found that weird it's made in Java and so I looked it up: Notch was a self taught programmer who was most familiar with Java and so he just wrote it in what he knew best. I'm no C expert, but that's the programming language I'm most familiar with and if I were to program a game in it... that would be a choice... It's possible, but from what I know, not ideal. OpenJDK gets version releases very frequently making obsolete versions quickly. To install the default Java version, run sudo apt install default-jdk -y The latest is OpenJDK 27. To install it, run wget https://download.java.net/java/GA/jdk27/55ce5470a6294008af0057ff4626d0e5/35/GPL/openjdk-27_linux-x64_bin.tar.gz -O /tmp/jdk.tar.gz && tar xvf jdk.tar.gz && sudo rm /tmp/jdk.tar.gz hopefully this command will work, I have no clue. If it doesn't, just download it from the JDK27 download page (just click Linux) and install it with the command from the JDK install guide site. For a way to learn it, I'm considering getting Core Java Volume 1 14th edition by: Cay S. Horstmann for volume 1 and there is a Volume 2 as well
It took me a while before I realized that Java and Javascript were two seperate things. I'll keep this section brief as the HTML & PHP section touched on it. Javascript is what a lot of websites use for the back end with HTML at the front. It allows for more complex sites and features. To install, copy this from the node.js page:
# Download and install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.7/install.sh | bash
# in lieu of restarting the shell
\. "$HOME/.nvm/nvm.sh"
# Download and install Node.js:
nvm install 24
# Verify the Node.js version:
node -v # Should print "v24.21.0".
# Verify npm version:
npm -v # Should print "11.19.0".
I have no clue what is the correct pronounciation. C Pound is how I pronounce it, but it's also often pronounced C Sharp. Developed by Microslop in the early 2000s, it's used in a lot of development for GUIs. Jellyfin is something that uses it too. To install, run the following:
wget https://packages.microsoft.com/config/debian/13/packages-microsoft-prod.deb -O packages-microslop-prod.deb
sudo dpkg -i packages-microslop-prod.deb
rm packages-microslop-prod.deb
Side note, trying to type this was challenging because I have a plugin that automatically changes every Microsoft on Chrome to Microslop. So how would I recommned you learn? I've heard conflicting reports on if it's taught at universities. I've heard that it is taught at the university I'm going to, I've also heard it's not. If this site is still up in the next four years, I'll let you know. A book I have my eyes on for learning is C# 14 and .NET 10 – Modern Cross-Platform Development Fundamentals by: Mark J. Price.
Assembly is considered the oldest programming language. Not used as much today, but still taught at universities and used parts in The Linux Kernel. The first version of UNIX was made in Assembly in 1969 until a few years later the co creator Dennis Ritchie made C and rewrote UNIX in that. Assembly is not a portable language. Meaning It will not be the same on Intel as AMD or Linux as Windows. Because of its lack of portability and its general outdatedness, it's not used as much. I have no ways to recommend you learn it because it depends. Install it by running sudo apt install -y nasm build-essential
Also known as Golang, it's a language developed by Google. Not much to say, I only recently learned of its existence. Once I do learn more about it, I'll update this. The only thing I can think of that uses it is Tailscale. I find it weird they don't have a shell script to do it automatically, so just copy this. As future releases come out, edit the link for the correct release by checking the link at the beginning:
wget https://go.dev/dl/go1.27.1.linux-amd64.tar.gz -O /tmp/go.tar.gz && sudo rm -rf /usr/local/go && sudo tar -C /usr/local/ -xzvf /tmp/go.tar.gz && rm /tmp/go.tar.gz
Speaking of shell script...
Bash or shell scripting is a language that works to interact with the console shell. You don't install it, you just run it. Very simple and doesn't take much to understand. Often used for installing software. What's nice about a command like >curl -sSL https://repo.sizablesplash.com/spyderfly/latest.sh | sudo bash downloads the script to your ram and gets deleted when the ram clears. Compared to a .deb file not being able to clear itself.
SQL confuses me. Used for creating databases and... um... seriously, I don't know. Stands for Structured Querey Language. I'm curious and might wanna learn some of it... Social media apps often have SQL as a backend to its platform. I think MariaDB is a way to code with SQL.
Typescript like Go I do not understand. It's part of JavaScript... I think?? These past few languages I haven't had much to say.
Swift is one of the reasons most developers use Mac. Swift is the language used to make apps on iOS. You can install it and compile it on Linux and Windows, but for an app, you need to compile the app on Mac. Another part of Apple's proprietary bull. To install, run:
curl -O https://download.swift.org/swiftly/linux/swiftly-$(uname -m).tar.gz && \
tar zxf swiftly-$(uname -m).tar.gz && \
./swiftly init --quiet-shell-followup && \
. "${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh" && \
hash -r
You can do it on an Apple server, if I'm correct, but I'm not sure. Lemme check... Yeah, it's called Xcode Cloud.
Kotlin is part of the Java ecosystem, but is independent. It's primarily for developing android apps. To install, first you need Java sudo apt install default-jdk -y Then run curl -s "https://get.sdkman.io" | bash Open a new terminal and run source "$HOME/.sdkman/bin/sdkman-init.sh" and sdk install kotlin
Any issues with this guide, shoot me an email "[email protected]"
Date created: September 22nd, 2026
Last modified: October 4th, 2026