I’ve been into computers for as long as I can remember. From playing 3D Ultra Minigolf and Oregon Trail on my parents old Windows 95 PC to the hours spent playing Runescape. As you can tell, it mostly started with gaming. I even set up our new AT&T internet service when I was a teenager, because I was that motivated to be done with dial-up (mostly for Runescape). It wasn’t until I showed a little interest in programming to my cousin that things really started to take off. He helped me install Debian Linux on an old computer, and just to make me work harder, he disabled the GUI. I had to do everything from the command line interface. To make it a little easier, we setup an ssh server so I could connect to the machine from a little netbook laptop I had. I didn’t really understand that whole process at the time, just the command that “worked”. The number of times I had to use the history
command to figure out how I had done something is almost embarrassing (you’d think I could have taken some notes or something). He also gave me his old C programming book from Kernighan and Ritchie to get started (he’s a strong believer in the fundamentals). Setting aside the fact that I had no idea what I was doing and maybe got through the first 5 examples before giving up, I was still very intrigued. Also just to cover my bases, this is not a story where I tell you I was some coding prodigy. Far from it. I’m just figuring it out as I go.
Fast forward to my last year of high school and things start to get a bit more interesting. I had become incredibly interested in building my own gaming PC. My parents made me build a PC for a family friend first to prove that I could do it. I also convinced the IT director at the school to teach me programming through an independent study course (he had retired from teaching). How I convinced him to also let my 2 friends join is beyond me. He taught us C++, though it was mostly through the lens of C (this time the C language made a bit more sense). Pointers were definitely among the hardest things I had learned up to that point in my life (and I was also taking Calculus at the time).
So let’s take stock of what we’ve learned thus far: installing a Linux distro, using the command line, some introductory programming concepts, putting together computer hardware, and some minor networking knowledge with SSH and ISP router configuration. You would think I was ready to really dive deep on computers and programming in college. And I sure did that from an academic standpoint in my computer engineering and computer science classes. Outside of that? Nada. Nil. Zilch. Just gaming. It would be years later when I would really put all of these concepts together, albeit after having gotten much better with all of them individually. Which brings us to today, AKA the “years later” I just mentioned. Sure, I’ve used SSH extensively at work. I’ve built more computers and swapped out components. I’ve learned a ton more about programming and software development. I’m so comfortable on the command line I recently decided to switch to NeoVim (btw). I understand networking (kind of, it’s still a struggle). I’ve been using Linux as my daily driver OS for a few years now (and I’m never going back if I can help it). But it wasn’t until recently that I got really inspired to dive deep. It was a combination of following ThePrimeagen and getting a blade server that set everything in motion. The server came from my buddy who bought a few off of someone for like $100 each. It’s older, but still decently high powered. It was an absolute steal.
All that to say, I’ve basically entered the world of self-hosting. Like most things that you learn or hear about, once you peel back the first layer, you realize how deep it really goes. I experienced this with board games when some friends and I did a board game podcast for about 3.5 years. We got so deep that now when people say to me, “Oh you like board games? I love Catan. What is your favorite?”, I have to resist just immediately responding with, “you haven’t heard of it”. Even if that’s true, it’s rude. The reality is, if they stopped at the first layer (Catan) they most likely haven’t heard of 18xx games, Age of Steam, or Splotter Spellen. Instead, I tell them and they nod like they understand but their eyes are totally glazed over saying “I have no idea what he just said”. And that’s how I feel right now in learning about building a homelab. Watching a YouTube video or reading a blog post going “I have almost no idea what I’m hearing/reading”. My buddy has talked about hosting a Plex server before, but I never really thought much about it. Boy did I misunderstand what it really takes. From firewalls to virtualization, router configuration to switches, battery backups to cooling, and oh did I mention the noise? Yeah it’s a tad bit loud, even after purchasing an enclosed server rack. I even found myself researching generators for better downtime prevention (not in my price point anytime soon). I haven’t pulled the trigger on getting all of that fully configured yet, but I definitely dove in headfirst. And none of that is what I specifically want to do with it, which is host a web application. All of that is just supporting or securing the machine so that I can host the application, which has it’s own set of configuration steps with proxies, SSL certs, process daemons, and what it takes to just run the code.
All that being said, I couldn’t be more excited. I get to connect a computer to the internet and serve an application (eventually multiple) that I can use (and hopefully others as well). I have a 15U server rack, so I have plenty of room for expansion beyond my 2U blade server. I’m intrigued by a Raspberry Pi Kubernetes cluster. I’m sure I’ll get into a RAID array for storage at some point, because the thought of paying Apple or Google for storage is absurd, even if the hard drives will cost me more than the few bucks a month I’d spend with them. This all comes at a cost of time, but includes the great benefit of learning more about computers and engineering. I get to just figure it out. I truly believe it will make me a better engineer (and if I’m wrong, I hear the robots will be taking over soon, so it won’t matter either way *sarcasm*). Anyway, more on this application in the coming weeks, so stick around if you want to learn more!