Alright folks, let me tell you about this thing I messed around with “after spring 2018”. It’s not a fancy title, just a timeframe when I started digging into some new stuff. So, grab a coffee, and let’s dive in.

First off, I remember clearly, I got this itch to build something different. Tired of the usual web apps, I wanted something… meatier. I started poking around with distributed systems, seeing what all the fuss was about. I heard whispers about microservices, and it sounded like the next big thing. So, I started learning. Like, really learning.
The first step? Docker. I spent a solid week just getting my head around containers. Pulling images, building my own, messing up configurations, and then fixing them (mostly). It was painful, but necessary. I felt like a total noob again, but hey, gotta start somewhere, right?
Next up was Kubernetes. Oh boy, that was a beast. I spun up a local cluster using Minikube, and promptly got lost in YAML files. Pods, deployments, services… it felt like learning a new language. I probably spent more time debugging YAML syntax than actually writing code. I swear, those indentations are designed to drive you crazy.
Then I tried to deploy a simple app. A really simple one. Like, “Hello World” level simple. And it still failed. Turns out, networking in Kubernetes is a whole other world. I messed with service meshes, ingress controllers, and all sorts of other things I barely understood. I remember spending hours staring at logs, trying to figure out why my containers couldn’t talk to each other.
So, what was my app actually doing? Nothing fancy. It was just a basic API that returned some data from a database. The goal wasn’t to build the next unicorn, it was to learn the tech. I used Go for the backend. Why Go? Because everyone was talking about it. Plus, it’s supposed to be good for concurrency, which seemed important for distributed systems.

I set up a PostgreSQL database, containerized it, and then tried to get my Go app to connect to it. Another hurdle. Turns out, managing database connections in a containerized environment is tricky. I messed around with connection pooling and environment variables, and eventually got it working. After many hours of trial and error of course.
But the real fun began when I started thinking about scaling. I wanted to see what would happen if I spun up multiple instances of my app. Would Kubernetes handle it? Would my database fall over? I used a load balancer to distribute traffic across the instances. It was kinda cool watching the requests get routed to different containers. Felt like I was controlling some big operation from NASA.
What did I learn? A ton! I learned that distributed systems are complex. Really complex. There are so many moving parts, and so many ways things can go wrong. But I also learned that it’s incredibly powerful. The ability to scale your application on demand is a game changer.
Now, did I become a Kubernetes expert overnight? Absolutely not. I still have a lot to learn. But I’m no longer intimidated by it. I know enough to be dangerous, and that’s a good start. I also learned that patience is key. Debugging distributed systems requires a lot of patience, and a willingness to Google your way through problems.
In the end, “after spring 2018” turned into a long, messy, but ultimately rewarding learning experience. I didn’t build the next big thing, but I gained valuable skills and a better understanding of modern infrastructure. And that’s what really matters, right?

- Docker: Got the basics down, can now build and run containers like a pro (well, almost).
- Kubernetes: Still a lot to learn, but I can deploy a simple app and scale it.
- Go: Became more comfortable with the language, especially concurrency.
- Databases: Learned about managing connections in a containerized environment.
Would I do it again? Definitely. It was a challenging but fun journey. And who knows, maybe one day I’ll actually build something useful with all this knowledge. Until then, I’ll keep tinkering.