Blog Post Cover Image

The best things about starting your own homelab.

Despite everything being in the cloud nowadays, there is still merit of having a piece of the cloud in your home.

Published

Most junior software developers use tools that are far removed from the inner workings of software development. This is actually a good thing. Not everyone should be using Vim or Arch Linux. VSCode and a MacBook Air are perfectly fine. I am a VSCode-using quiche-eater and proud of it. However, just like most Arch users, I like to tinker about. Here are some of the things I found neat.

Arts and Crafts

I was the child that dissasembled the vacuum cleaner just to see what was inside. (Of course, I broke it.) I would later build my own desktop computer which would lead me to build computers for my friends and provide maintenance for them. This would leave me with leftover computer parts which I used to build my first server.

I like computer hardware. Especially old hardware that gets utilised. I like to think that CPUs are happier serving cpu cycles than gathering dust in the basement.

Figure Image
I meant it when I said arts and crafts.

Fruits of the labor

I started my homelab with a Raspberry Pi, an external USB SSD and Seafile to store photos from my iPhone. I eventually started self-hosting Nextcloud to have photos from my past Android devices and Apple devices in the same place. My tinkering was actually useful to me. This experience was incredibly motivating. I was eager to find more projects that would make my life easier. The learning feedback loop was almost instant. No matter how many tutorials you watch, in the end it is trial & error which gets you the result.

Configuring and working on something that you actually use forces you to adopt good practices. My first deployments were made using Portainer and by copy pasting docker run commands into the terminal, not knowing what I was really doing. After self-hosting more apps, I was naturally led to using docker compose and documenting my configurations and common errors. Most importantly, nothing teaches you to have a backup strategy like losing your configs and data due to a faulty hard drive.

A bit of humility

Just last year, I was working on a group project. Naturally, we all had different Python versions installed and were using different IDEs. "It works on my machine, I don't know why it doesn't work on yours...", "What is this PATH thing? Damn it, Windows!" Yes, Windows updates and defaults can be a nuisance. But given the proper time to disable all the things Microsoft worked hard to enable, it might actually feel better than Linux. However, not everything is the machine's fault.

Without turning this into a rant, I just want to say I almost pulled my hair out trying to persuade my colleagues to at least use virtual environments for Python, since WSL was too much for them. So yeah, just because you can code merge sort does not mean you can blame everything on Windows (it's not the machine's fault that you have two different versions of Python installed).

Learning how to Linux

I dual-booted Linux Mint with Windows 7 in high school, and to be honest, I still found using the CLI kind of scary. However, all that tinkering in Raspbian made working with and troubleshooting Docker containers less daunting. I wouldn't say I'm a Linux pro by any means, but I do most of my development in devcontainers or WSL. And that's still enough to impress my peers when I pipe output to grep 😎.

Figure Image
I'd just like to interject for a moment. What you're referring to as Linux, is in fact, GNU/Linux, or as I've recently taken to calling it, GNU plus Linux.

It goes without saying that knowing Linux is a must for DevOps and a huge advantage for developers. For someone who never got into ricing or Vim, homelabbing was the perfect gateway drug.

Clean environment, Clean code, Clean communication

It still surprises me that people don't use Docker at all in 2024. Getting acquainted with basic networking concepts with my homelab has made learning Docker both easier and something I also wanted to learn - not just something I needed to learn.

Ever since I reinstalled my Windows machine (the same Windows install since I was making websites with PHP and jQuery), I've made a special effort to install as few things on my main Windows 10 setup as possible. With my experience setting up my homelab and organizing a sensible directory structure, I no longer have multiple 'TO SORT' folders filled with half-finished side projects and badly cropped memes.

Figure Image
Yeah I still have not figured it out.

The person I communicate the most is usually me. I have to turn into a detective after I open my project after a week and have no idea how I got it running in the first place. Maintaining my homelab made me see the value in documenting literally everything and having a good way to navigate the docs. Perhaps I will finally learn Ansible and forgo the docs altogether.

Finally growing up?

Homelabbing gave me a reason to be excited about tech hardware that is not for gaming. Yes, I'm talking about those delicious 2.5Gbps NICs. While most people drool over the latest GPU releases, I find myself daydreaming by the possibilities of network cards and low-power CPUs. I turn into Linus Tech Tips but instead of Threadrippers running Cinebench all day, I'm trying to get my Intel N100 to be as power-efficient as possible (shoutout to Wolfgang). It's a whole new realm of tinkering that involves more spreadsheets on power consumption than FPS counts in the latest AAA game.

When you can make a server run on what feels like a whisper of electricity while still serving 4 simultaneous 4K media streams, it's a different kind of victory dance. I mean, who knew you could get excited about a piece of hardware that doesn’t even have RGB lighting?

Naturally finding my way to DevOps

Homelabbing made me actually appreciate and even like DevOps and SysAdmin. A lot of devs get shoved into these roles and end up hating them, but for me, it's been a game-changer. Without this hands-on experience, I’d probably just be another fresh grad (not even a grad yet 😎) learning React, missing out on the whole infrastructure side of things.

Thanks to my homelab, I’ve found joy in setting up systems, tweaking performance, and making sure everything runs smoothly. It turned something that could have been boring into something I genuinely enjoy. It taught me the value of automation, good documentation, and the satisfaction of giving scared lonely CPUs a home.