Getting Started: Computers, Programming, Linux

The internet has changed a lot since I started learning things 20 years ago; back in the early 2000s, searching for anything programming or Linux related almost always led you to the official documentation, the developer's homepage, an enthusiast's website, or a specialist forum full of experienced people. Looking for help these days? Hidden in an unsearchable Discord channel, Stackoverflow, Stackoverflow copies full of ads, machine-generated blogspam full of ads, and corporate blogspam; in the coming years, I expect GPT created content to make this even worse. Youtube is also absolutely full of midwits and paid shills. Slashdot used to be the place to get tech news, and it's now scarcely a shell of its former self; Engadget went even further downhill, Ars Technica was bought out, and Hacker News is full of self-important morons chasing the latest fad for a quick buck. The internet is now corporate mouthpieces and idiots as far as the eye can see. Still, if one knows just where to look…

If you haven't, really learn to touch type. I went from hunt-and-peck to 80 WPM on a Dvorak keyboard in three weeks after practicing for two or three hours every morning. I still occasionally do typing drills on https://www.typelit.io/ to keep myself sharp.

If you're simply interested in making your own websites, the best online resources right now are Mozilla's developer network guides - https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web - you can learn HTML, CSS and Javascript here. (Mozilla are the folk behind Firefox, which is currently the least worst web browser.) If you don't want to screw around with hosting, Neocities is a great place to create a basic website.

Firefox is the only web browser I can recommend at this time; I've listing some must-use extensions further down this page, along with some fun websites. I strongly, strongly recommend running ublock origin, even if you don't use any other addons - adverts are a major source of malware. (Heads up: while bittorrent is perfectly legal, and commonly used to distribute open source and free software, never torrent copyrighted material without using a VPN.)

Misguided educators often compare learning Python or C++ to learning French or German. A programming language, however, is merely "a notation for the description of algorithms", to quote computer luminary Edsgar Dijkstra. (Algorithm: "A collection of ordered steps that solve a mathematical problem. A precise step-by-step plan for a computational procedure that possibly begins with an input value and yields an output value in a finite number of steps.") Learning a new syntax is not the same thing as learning to program.

"Learning" C++ will not make you a programmer any more than learning to read and write sheet music will turn you into a composer; it is merely one step on the journey. (Actually, learning C++ will give you brain damage, but that's another story.)

Before jumping into programming, I recommend first reading Code: The Hidden Language of Computer Hardware and Software by Charles Petzold. This book will help you understand how everything actually fits together, starting with relays and binary logic and building up to the operating system and the internet. Another book that covers much of the same material in a more condensed matter is The Pattern on the Stone: The Simple Ideas That Make Computers Work by W. Daniel Hillis. I can recommend both; sometimes material that seems opaque in one book is explained more clearly in the other.

After that, the greatest book I have seen on how to really program is How to Design Programs from MIT press. The entire text is free to use online, and there's a great course on edX that has an instructor walk you through everything. (Ignore the costs listed on that page, you can audit the course for free and get access to all the notes and lectures.) Some of the universities that started using this book found that their Freshmen who had passed the course were better programmers than most of their current grad students who used the old curriculum. I can't overstate how important this book is.

When it comes to Linux, I've found Mint gives me the least hassle; If you're trying to learn how things work, I recommend installing Virtualbox and running Debian on your normal machine. Debian is the distro that Ubuntu and Mint are based on. Read the docs carefully.

Pick up a copy of the 5th ed. UNIX and Linux System Administration Handbook and the 3rd ed. How Linux Works by Brian Ward and read them cover to cover. These are currently the best print resources on how Linux is structured and how to be a sysadmin.

I'd check the library before actually buying any of these books, and if all else fails, hoist the black flag and use libgen.rs. Don't tell your Mom I started you on a life of crime, though.

I also have a ton of resources on shell scripting, emulation, computing science, cryptography, DNS, and computing history that I need to organize; I'll send you more later.

–JWD

Created: 2023-05-13 Sat 21:33

Validate