$ cat post/green-text-on-black-glass-/-the-repo-holds-my-old-mistakes-/-we-were-on-call-then.md

green text on black glass / the repo holds my old mistakes / we were on call then


Title: July 1, 2013 - Dockering Around


July 1, 2013. The day after the world said hello to Docker. It was a whirlwind month of excitement and confusion. I remember it like it was yesterday.

That morning, I woke up with a feeling that things were about to change. I had been following Docker’s early days, but the release felt like an official “go time” for containers to move from experimental toy to serious deployment tool. I spent most of my day at work already playing with Docker on a side project, trying out different images and orchestrating them with a little bit of bash scripting.

But what really hit me was during the evening. I started working on a side project that involved rewriting an old web app using some of the newer technologies we were experimenting with. I decided to try containers for this one, and boy did it make me feel like a pioneer!

I spent hours wrestling with Docker’s CLI and trying to figure out how best to structure my application. It was a bit overwhelming at first, but as I started breaking down my app into different services, things began to fall into place. I ended up using some simple bash scripts to manage the containers, but it wasn’t until I saw that everything was running smoothly in my own little Docker network that I felt like I had conquered something.

But with all this excitement, came a bit of frustration too. Debugging issues across multiple containers became a nightmare. Stack traces weren’t very useful when you’re dealing with containers, and tracing back to the right service involved a lot of detective work. I remember spending a whole afternoon trying to figure out why one container wasn’t starting properly, only to realize that it was because of a small configuration issue in its startup script.

The next day at work, we had our regular stand-up meeting. I was feeling quite smug about my progress on the side project and how well everything was coming together with Docker. But as usual, things didn’t go exactly as planned when someone asked what issues they should be aware of for today’s demo. “Uh,” I stammered, trying to think of something, “nothing major… just a bit of network debugging needed.” I couldn’t even finish the sentence without blushing.

It was around this time that I heard about XKeyscore on Hacker News. The idea that the NSA had access to nearly everything a user does online struck me as both terrifying and fascinating. It made me wonder how many of these technologies, like Docker, were being used by governments or large corporations for their own nefarious purposes.

As the days went on, I started following the buzz around microservices and Kubernetes. The term “microservices” was just starting to gain traction, but it felt like a natural evolution from what we were doing with Docker. We talked about splitting our monolithic application into smaller, more manageable pieces that could scale independently. It was exciting, but also daunting.

On July 30th, I received an email from a colleague asking for my opinion on something: “Should we standardize on Mesos or stick with our current solution?” I had to admit, I hadn’t really given it much thought yet. My side project was using Docker and the idea of adding another layer of complexity with Mesos didn’t immediately appeal to me. But as someone who is always looking for ways to make things better, I decided to dive into some research.

I spent a few days reading up on Mesos and its tools like Marathon, and while it felt like one more thing to learn, the idea of having a robust orchestration layer was intriguing. It gave me hope that we could manage our containerized applications in a more automated and reliable way.

By August 1st, I had written some notes on Docker, Mesos, and Kubernetes, and shared them with the team. We ended up having an intense debate about which path to take. In the end, we decided to experiment with both approaches for different projects and see where it took us.

Looking back, that summer felt like a turning point in my career. I went from being someone who was just following Docker’s development to someone who was actively shaping how we use containers at work. It wasn’t always smooth sailing—there were plenty of nights spent debugging late into the night—but it was an exhilarating ride.

Docker and the container ecosystem have evolved a lot since then, but that first encounter with Docker on July 1st remains one of the most formative experiences in my career.