- 24 Dec, 2025 *
Rather than summarizing what I’ve been learning recently, I thought I would back up a bit and give a bit of retrospective on what I first learned when I was starting out teaching myself to program. This came about because I wrote a long post giving context for why I’m in the situation I’m currently in, and I decided for the sake of spaced repetition I would go back through my notes and document how I did what I did and what I got out of it.
Because I decided to install Linux on my now-retired laptop after an infuriating update on Windows 11, that sparked an interest in learning how to use the command line. After a bit of distro-hopping, I successfully installed Arch Linux and got Hyprland configured. I wasn’t confident enough in my ability to do... well, anything,…
- 24 Dec, 2025 *
Rather than summarizing what I’ve been learning recently, I thought I would back up a bit and give a bit of retrospective on what I first learned when I was starting out teaching myself to program. This came about because I wrote a long post giving context for why I’m in the situation I’m currently in, and I decided for the sake of spaced repetition I would go back through my notes and document how I did what I did and what I got out of it.
Because I decided to install Linux on my now-retired laptop after an infuriating update on Windows 11, that sparked an interest in learning how to use the command line. After a bit of distro-hopping, I successfully installed Arch Linux and got Hyprland configured. I wasn’t confident enough in my ability to do... well, anything, without bricking my laptop, so I ordered a Raspberry Pi 3B1.
I set up Tailscale so I could SSH into the 3B connected to the home WiFi. It was headless, meaning it doesn’t have a display, so SSH was the only way I was able to use it without breaking down and ordering a 5" display, which I still have not done. Using William Shotts’ The Linux Command Line and this somewhat janky setup, I learned how to use Linux from the terminal.
That was about six weeks of sleeping three hours a day and getting distracted by everything I could do with Bash scripts. My first working script was a Pomodoro timer that I cobbled together from various StackOverflow questions and written tutorials, and I was so proud of that thing I put it up on my GitHub repo. A version of it is still floating around somewhere, but I’ve since become somewhat dependent on Brain.fm’s ability to set a 25-minute timer with a 5-minute prompted break. Shotts had an entire section devoted to other cool Bash scripts one could write if one wanted to get into system administration, but I can’t find any notes showing that I worked through all of them2.
After forcing myself to work in the command line for so long, going back to using Arch Linux on my Acer laptop felt like being let loose for recess. I had a compositor and a window manager again (my Hyprland setup was pretty great but I lost my dotfiles after an update and ended up switching to KDE Plasma); I could run Steam and play Dead by Daylight, which was a relief. The developers use Easy Anti-Cheat, so I was concerned I wouldn’t be able to get the game to even load in. I learned JavaScript by reading Haverbeke’s Eloquent JavaScript and writing programs in an HTML file in a text editor and loading them in Zen Browser.
I’ll go into more detail about my history with HTML and CSS in another post, but suffice to say by the time I started working with JavaScript again in mid-June, it had been at least ten years since I’d so much as View Sourced a website. Probably closer to fifteen; I loved playing around with HTML when I was in high school, but when I went to college I was more focused on my psychology studies and my own mental illness and fell away from coding for fun. Not that HTML is considered coding; I used JavaScript sparingly when I was a kid, but now that I’m an adult it seems to vibe with my ADHD in a way that I’d like to explore in another post.
But getting down closer to the bare metal was exciting. It opened up a whole field of computer science that I hadn’t ever considered I would find interesting. Getting yelled at by the compiler in C, after spending weeks learning how to debug JavaScript Canvas errors that sometimes didn’t get flagged, was actually kind of refreshing. I built up a tolerance for debugging in the terminal while learning to write Bash scripts, and I think between that and the comfiness of JavaScript, I was in a decent position to learn C with my only prior "real" programming experience being in BASIC as a child.
There’s a lot to look forward to in 2026. There’s still so much I want to read about, and I of course want to gain further competence in C/C++, but networking is on my list of things to learn3. I would also like to start graphics programming before 2026 is out, but that depends on how much progress I’m able to make with learning C++.
Right now I’m learning about arrays and vectors and how to iterate over them, and I’m taking my time. It feels like reclamation of said time, going back over what I learned earlier in the year and explaining what I did. So much of what I did between June and October feels abstracted by my own inability to decipher my handwritten notes, and typing it all out makes it real in a way it wasn’t before.
Next time I’ll talk about how I stumbled on Harvard’s CS50 lecture series and got bitten by the C bug.
According to my notes I was also briefly interested in learning how to self-host a website. I never ended up buying a domain name and committing to the idea, but getting a microcomputer for the sake of learning low-level programming was a happy accident.↩ 1.
I do have a copy of Taylor’s Wicked Cool Shell Scripts that I would like to break into in 2026. Might blow the dust off the Raspberry Pi and SSH into it again for this operation. It’s nice to have a containerized unit that I know I can’t bork. I’m still new to using Linux as my daily driver, and since I’m on Bazzite on a desktop now instead of Arch on a dying, recycled laptop, I’m also learning how to mitigate AMDGPU bugs and work with a dev container, since I don’t want to have to use rpm-ostree if I don’t have to. The only thing I had to use it for so far has been installing the GNU compiler, and I still have to use a dev container in order to run programs I’ve written in C++, so having a dedicated playground where I can practice running intermediate Bash scripts would be nice.↩
1.
Having an RPi3B just sitting there, I think I’ll be able to use it to learn TCP/IP networking the way I used it to learn the Linux command line. An SSH from my desktop and then setting up everything remotely. Not saying I’m going to start self-hosting in 2026, but it would be fun to actually go back to that idea and see what kind of things I can get away with on a personal website if I’m not afraid to be creative with my code. Not everyone vibes with JavaScript, but I really like working with it.↩