Dispatch 013
Week ↗

Ghost Ships and Docker Mirages

It was January 1st, a Wednesday, and I spent the day chasing ghosts in four different repositories. The headline isn't about a feature launch or a bug fix. It is about the peculiar kind of work that happens…

Commits
17
Systems
4
Read
2min
2025-01-01 · SIGNAL17 commitsProduction-Unico6Unicorn-Commande6Unicorn-Commande3Unicorn-Commande2
Commit signal

Rendered from this day’s 17 commits — no stock art.

It was January 1st, a Wednesday, and I spent the day chasing ghosts in four different repositories. The headline isn't about a feature launch or a bug fix. It is about the peculiar kind of work that happens when you are trying to set up a new project structure and the tooling decides to play hardball. I made 17 commits across four repositories today, and if you look at the raw numbers, it looks like I built an empire. If you look closer, you will see I mostly built the same empire four times in slightly different ways.

The main arc was the struggle to get Unicorn Commander into a state where it actually runs. I started with the Unicorn-Commander-website repo, where I pushed a massive 3,672 lines of code in a single commit. This was the moment the site stopped being a placeholder and became a real application with a countdown timer, an FAQ, and a server that could actually talk to the frontend. It was a solid day's work, establishing the core architecture. I added the ExplainerVideo, Testimonials, and WhyFounders components, giving the landing page some actual substance.

But then the Docker layer got complicated. I moved to Unicorn-Commander-docker and pushed 6,610 lines of code. This was supposed to be the clean, isolated environment. Instead, it felt like I was copying and pasting the entire application structure just to make sure the container could find its own dependencies. The nginx.conf and Dockerfile were being refined, but the sheer volume of files changed made me wonder if I was over-engineering the containerization. It was 6,610 lines of boilerplate and configuration masquerading as progress.

I started with the `Unicorn-Commander-website` repo, where I pushed a massive 3,672 lines of code in a single commit.

The draft repo was even more confusing. I pushed 5,807 lines there, creating a mirror of the main site with a HostedSignup and PreorderModal. It was a testing ground, a place to experiment with the signup flow without breaking the production build. But looking back, it feels like I was building a house, then realizing I needed a shed, so I built a second house in the backyard. The FeatureCard and Section components were useful, but the duplication was starting to itch.

The Production-Unicorn-Commander-website repo was the final stop, where I pushed 6 commits that mirrored the initial website setup. It was a safety net, a backup copy of the initial structure. I added the deploy.sh scripts and the docker-compose.yml files, ensuring that if one repo failed, another might survive. It was a paranoid move, but in the world of devops, paranoia is just good planning.

Also today: I updated the READMEs in every single repo, which is the digital equivalent of putting a "For Sale" sign on a house that doesn't exist yet. I also touched the package.json files enough times to lose count, trying to get the dependencies to play nice with each other across the different environments.

The day added up to a lot of code and very little clarity. I have four nearly identical projects sitting in my git history, each with its own set of configurations and components. It is a messy start, but at least the ships are ghosting.