I. Questions about Linux
Q: I want to play with Linux some more.
A: Great! You have a few options.
- Use a virtual machine. Here are my instructions on how to make one. I recommend this one most because you can run the software well on most modern systems, and there’s no risk of accidentally overwriting Windows or whatever you’re running, and losing all your files in the process. Also, if you break a virtual machine, you can reload it from a snapshot or just make it over again. VMs take a little patience to make the first time, which is why I wrote that tutorial. (It contains a lot of stuff I had to learn by trial and error.)
- Use a live CD or USB. Google is your friend on making these, but check at least two tutorials when you make Linux-related stuff. Be careful not to install it over your current system.
- If you have money: get a Raspberry Pi and its associated accessories. This can be fun, but you’ll probably end up dropping quite a bit of cash on it. If you want to anyway, again, Google it.
- If you REALLY know what you’re doing and this is your own computer, not your parents’, you can make a Linux partition. Be careful with this one. You have to be a little more technical to get it right, and it’s risky to get it wrong. You might want to choose your distro a little more carefully with this option too, to make sure it’s one you like.
Q: What’s with all these different “distributions”?
A: Linux distributions, or distros, are just different varieties of Linux. They all have the same stuff running at the core of the system, roughly, but they can have different software installed and sometimes different commands. Each distro is meant to serve a particular purpose.
Ubuntu and its variants (Kubuntu, Xubuntu, Lubuntu, etc) are meant as a beginner’s Linux–they’re designed to look roughly like Windows and be as easy to use as possible. Linux Mint has a clean design for users and programmers who want something simple, elegant and effective, without tons of shiny graphics. Debian and Fedora are often used in servers or on the personal computers of programmers. Kali is for network security administrators. There are even advanced distros such as Arch and Gentoo, for increased customizability or transparency to the core system below–Arch doesn’t even come with a desktop environment installed, you start out with just the command line interface.
It’s best to start with a simpler distro, like Mint or Xubuntu (which is preferable to normal Ubuntu because of the interface it comes with–it runs faster and I think it looks better). I’m fond of Debian, personally. GNOME 3, the window system it comes with, is rather heavyweight but very shiny. You can put different interfaces on it, though.
Q: Wait, what do you mean “interfaces”? What’s a “window system”? Are they different things?
A: In Linux, the command line is the default interface that’s built into the system. But you can put window systems over the top of it. You know how Mac desktops look different from Windows desktops? Like, the windows look different and Mac has the dock instead of the taskbar? That’s because they use a different window system. Linux has tons of these and you can just swap them around.
“Interface” is a more general term than “window system”–the command line is an interface but not a window system. (Apart from that distinction, they’re interchangeable as far as I know.) That’s semantics, though.
Q: What makes Linux so great, anyway?
A: Lots of things! There are so many reasons to use Linux over Windows (and, to a slightly lesser degree, over Mac)–ranging from the practical to the aesthetic to the philosophical. Here, I’ll list a few of the reasons you probably care most about, but understand that this list is by no means exhaustive.
- It’s free! Not only are the vast majority of distros free to download and use, but you can change them however you like or make contributions to them.
- Linux is faster, especially on old hardware.
- It’s far, far more secure than Windows. Linux very rarely gets viruses, even more rarely than Mac OS X, and when viruses for Linux do appear, an update comes out very quickly to protect the system. But it’s hard to write viruses for Linux because it’s designed so well.
- They’re easier to program on. Linux comes with better tools for coders and makes things a lot easier. Tools like git and shell scripting make Linux a far better choice than Windows for a coder.
- Linux has a powerful command line, which Windows lacks. (Mac’s command line is okay though.)
- Package managers make it easy to install and remove software without leftover files like you get on Windows and Mac. This saves space on your hard drive and keeps your programs working well.
- Linux is easy to use and customize! You CAN learn to use Linux without touching the command line (although you’d be missing out on a feature, and if you’re coding you should know it). The basic controls aren’t that different from any other operating system–it just has a few extra tricks it can do.
- Linux is becoming a platform for gaming! It’s not totally there yet, but there’s serious progress being made. Steam has certainly jumped on this bandwagon with Steam OS. Personally, Humble Bundle is my favorite place to find Linux games, and it’s for a good cause. And remember what I said about Linux being faster? Your games will perform better. It’s pretty awesome.
- Free software–you don’t have to pay for Microsoft Word or Photoshop, as Linux has open-source software that does the same thing. LibreOffice and GIMP are great programs.
- It’ll teach you about how computers work! Linux is a great behind-the-scenes of how computers function. To me, that’s really important and cool.
- Free support from a great community. Got a question? Google it, and if you can’t find anything to help you, there are forums full of people who’ll help you out for kicks–they just like fixing stuff and making users happy because it’s challenging.
- The power to fix your computer when it breaks. Windows doesn’t let you see where stuff is failing, it just pops up with the box that says it’s trying to diagnose the problem and fix it–and I’ve never heard of that working for anyone. Linux lets you see what’s going wrong, if you know where to look, and lets you fix it instead of making you give up. Linux boxes don’t really get the kind of issues that can be solved by rebooting–they work too well for that–but they do occasionally run into bigger blocks where Windows would just throw up its hands and tell you to reinstall.
I’m stopping there. Twelve is a nice round number, and I don’t want this to go on forever.
Q: How do I learn Linux?
A: This is actually a really good question. I was asking the same thing about a year ago. Now that I know from experience, I’ve covered it to send you in the right direction.
II. Questions about coding
Q: How do I start learning to code?
A: Starting to code is easy! There are great sites out there to help people take the first step into programming–I like codecademy–and there are plenty of books too–like this one, which is available for free (although I suggest buying a hard copy or tipping the author if you can). If you’re intimidated, you can start with HTML and CSS and make some basic web pages, in which case I recommend this book.
Q: I’ve been coding for a while… I know a language or two, but I feel like I’m missing something. Open source is really hard to get into and everything is confusing.
A: Basically everyone feels like this after working with books and classes and tutorials for a while. It doesn’t go away with more books and classes and tutorials. It starts to go away once you try to build stuff on your own. Keep your eyes peeled for stuff you think you might be able to build, and then try to build those things. Even if they’re terrible at first. Trust your ability to learn what you don’t need in order to finish your projects.
You’ll feel stupid. You’ll think your program sucks. You’ll get frustrated working on a problem and walk away. But then you’ll figure out something that might be the answer while you’re making dinner and you’ll rush back, and you’ll put it in, and maybe it won’t work but sometimes it does and sometimes it helps you figure out what works, and everything is exciting again. And you’ll forget you were making dinner, and you’ll keep coding and forget to eat at all while your cat eats the lunch meat you left out.
If you love it anyway, you should keep coding.
At some point, after months spent alternating between frustration and excitement, it’ll hit you that six months ago you would have absolutely no clue about anything you’re doing now. You’ll realize that, although you may not be as good as the open-source folks yet, you do know a lot of valuable things that would massively confuse most people.
Q: Uh… really? It’s that hard? But I bought a book that says I can learn Java in a week.
A: You might be able to learn Java syntax in a week, but it’s really just another tutorial. Programming is a separate skill, agnostic of any one language but tied to all of them, and it takes time and effort and trial and error to learn. Also, don’t start with Java. Start with Python, Ruby, or web development.
Q: Is HTML a programming language?
A: No, not really. HTML is a markup language (HyperText Markup Language), and it isn’t Turing-complete. That is, it lacks the different logic structures that programming has. HTML is more just a way to tell the computer how to display stuff, and the things you write with HTML aren’t interactive. To make interactive web sites, you need to use a programming language like Python, Java, PHP, Ruby… etc. You don’t think about it, but most websites you use on a regular basis have tons of programming behind them–it’s not just HTML and CSS.
CSS isn’t a programming language, either. Same deal, I’m afraid.
One could argue that they are both coding languages, though, in that you’re using an artificial language designed for computers in order to tell computers what to do. That’s valid. One speaks of “HTML code” after all.
III. Inevitable diversions
These are here because I don’t want to spend activity time on them.
Q: Can I use Linux to be a l33t hax0r and break into computers?
A: Yeah, if you’re an idiot who can’t figure out anything more fun to do with your computer than break into someone else’s. It’s a lot more technically difficult and interesting to build things rather than destroy them, and it also pays more and doesn’t get you into legal trouble.
Also, that’s not what a hacker is. You’re thinking of crackers. Hackers are the people who build open-source stuff, and they don’t like it when you mix up their names with criminals.
Q: Will you teach me cracking?
Q: Should I use Kali Linux as my desktop OS?
A: If you want to be a white-hat, it makes sense to know Kali and the network security tools it comes with. I wouldn’t recommend it as a desktop OS, though. A lot of people are attracted to Kali because it sounds edgy, though, and that’s not a good reason to use it. Don’t do anything stupid with Kali.
Q: Do girls code and game in their underwear?
A: Yes, but where you get it wrong is in thinking that it looks remotely attractive.
Q: What are the best energy drinks? Is Monster good?
A: I covered this, actually. And no, Monster is toxic waste–Full Throttle, NOS, or Venom are much better.