What Hollow Hosting Taught Me

When I joined Hollow Hosting as CTO, I thought I had a pretty clear idea of what "running infrastructure" meant.

I had managed servers before. I had shipped production code before. I had handled incidents before. So I figured this would be more of the same, just with a different logo in the corner and higher stakes.

I was wrong in a good way.

Hollow Hosting was the first time I had full stack ownership in the most literal sense of the phrase. Not "full stack" like frontend and backend. Full stack like from the first DNS hop to the customer ticket at 2 AM, from control plane design to deployment scripts, from architecture decisions to explaining outages to real paying clients who need their servers back online now, not tomorrow.

We were operating at boutique scale, around forty active clients, which is small enough that every customer relationship matters, but large enough that bad engineering decisions become visible very quickly.

If something was slow, customers felt it. If something broke, they told us right away. If a workflow had friction, support heard it all day.

There is nowhere to hide in that environment, and I learned to appreciate that.

A lot of my time went into game server orchestration on Linux, while also supporting containerized app workloads across our platform. On paper those are separate lanes. In reality they overlap constantly when you are trying to keep platform behavior consistent for customers who do not care what tool is under the hood, they just care that their service works.

At one point I caught myself spending an entire week living in edge and delivery concerns that most people never think about unless they are on fire:

Why is this route behaving differently by region. Why did this TLS edge case only hit one customer segment. Why does this cache key behavior look fine in theory and still break this one workflow.

That was the pattern over and over. The hard part was usually not writing code. The hard part was reducing uncertainty in a live system where multiple moving parts are technically "healthy" but the customer still sees a broken experience.

I also ended up building a lot of internal operations tooling because we needed systems that matched how we actually worked, not just generic tools with checkboxes.

That included background job processing, transactional email workflows, and self-hosted object storage that behaved like S3. We deployed and secret-managed services through our deployment tooling, and used CI/CD pipelines across platform services.

None of that sounds glamorous, and that is exactly the point.

Reliable platforms are mostly made of work that does not look exciting in screenshots. Secret rotation, migration safety, failure-mode planning, idempotent jobs, rollback paths, observability that helps you answer "what happened" in minutes instead of hours. The longer I did this, the more I respected boring systems done well.

On the product side, one of the biggest ventures I got into was the Hollow Hosting careers platform, hollow-jobs.

That started as "we should probably have a better hiring flow" and quickly became a real platform surface:

  • public listings
  • custom application forms
  • resume uploads to self-hosted object storage
  • screening and scoring logic
  • pipeline views for internal hiring workflow
  • role-based admin access
  • analytics and exports

It was built on a modern TypeScript web stack with a relational database, token-based auth, schema validation, transactional email, and protected file upload/storage paths. It was one of those projects where every layer had to be treated seriously because hiring data is operationally sensitive and every shortcut comes back later as pain.

Right after that, my main focus shifted hard toward AI work through the Hollow Mind direction. The priority was an operator-style AI built into the panel itself, where someone could describe a real task in plain language and the system could turn it into an execution plan, run the work, and report back clearly.

I did not want that.

The goal was always practical integration:

  • AI that can do platform tasks end to end, not just answer questions
  • AI that works with approvals, guardrails, and logs so actions are reviewable
  • AI that ties into CI/CD and operational checks before changes are considered done
  • AI that is accountable to outcomes, not just demos

That same mindset is part of why I started Casualstack and began building things like agent CI gates and replay tooling. If a system can write code or propose infrastructure changes, we should be able to inspect and verify what it did before trusting it in production. Anything else is theater.

HollowVision, the blog project, was a much smaller side project in comparison. Useful, but not the main thing. The AI and infrastructure work carried most of the weight in terms of what I was trying to build and learn.

Looking back, what Hollow Hosting changed for me most was my definition of ownership.

Before, I would have said ownership means being responsible for a component. Now I think ownership means being responsible for user trust.

That can mean a Kubernetes deployment. That can mean a reverse proxy fix. That can mean a migration plan. That can mean answering a customer in plain language when something fails.

All of it counts. None of it is beneath the role.

It also taught me to think in tradeoffs instead of absolutes.

People love clean architecture diagrams and definitive answers, but hosting operations are full of "it depends" decisions:

  • speed versus isolation
  • flexibility versus guardrails
  • centralization versus blast radius
  • shipping now versus paying interest later

The right answer is rarely universal. It depends on customer expectations, team bandwidth, operational maturity, and failure costs. I got much better at making those decisions with context instead of ego.

The other major lesson was communication.

When you are building infra, it is easy to over-index on technical purity and under-index on clarity. But in real operations, unclear communication is an outage multiplier. If responders are confused, recovery slows. If customers are confused, trust drops. If your own team is confused, you create repeat incidents.

So I got disciplined about writing things down:

  • runbooks
  • deployment notes
  • system behavior assumptions
  • incident context
  • what changed and why

I used to treat documentation as overhead. Now I treat it as reliability work.

I am proud of what we built during that stretch:

  • client-facing hosting services that stayed grounded in actual customer needs
  • internal systems that made operations more repeatable
  • hiring and content platforms that supported business growth
  • AI and automation work that aimed for accountable engineering, not buzzwords

And I am grateful for what that period taught me, especially because it was intense and short. A few months can teach you more than a few years when you are close enough to the metal and close enough to the customer at the same time.

Now I am planning to move on to the next chapter.

I have applied to Imperial Software Solutions, and I am hoping to join their Hosting Division as a Platform & Infra Engineer.

That direction feels right for me. I want to keep doing the kind of work where infrastructure quality, platform reliability, and practical engineering discipline directly shape user outcomes. Hollow Hosting sharpened those instincts in a real environment, and I am ready to carry that forward.