Doing it properly before anyone is paying

A technology desk with a modern laptop, a monitor and a retro computer.

Building Patched has reminded me that knowing how to run technology in a large organisation doesn’t automatically tell you how much of it a new business needs.

After more than 26 years in endpoint management, certain habits come naturally. I want changes checked, software tested and a reliable way to recover when something goes wrong.

Those are useful habits when you’re building a macOS updater. But before the business earns any revenue, I’m also the person paying for them.

The bills arrive before the customers

I started with the sort of development setup I’d expect to see in a well-run engineering team.

I use GitHub to manage the code and automate checks before changes go further. Each time the software changes, computers build it and run tests.

That work costs money when you rent the computing power. A change needs checking. A correction needs checking again. Another round of improvements means another round of tests.

Individually, those runs may seem small. Collectively, they become another cost of getting the business started.

It made me look more closely at what I was running, how often, and whether I was repeating work unnecessarily.

Using what I already have

One response has been to move more of that work onto hardware I already own.

GitHub still organises the process, but some of the building and testing happens locally. These machines are called “runners” because they run the jobs.

They need care. Software testing belongs in a controlled environment, so I use virtual machines, effectively separate computers running inside a physical one, with network separation to limit what they can access.

That reduces some of the spending on rented computing power. It also gives me something else to maintain.

If a local machine runs out of space or needs attention, that becomes my job. The saving has to be worth the time involved.

Choosing what to look after myself

My pivot towards the Patched updater client also changed what made sense for the services supporting it.

For those, I chose Cloudflare’s managed services rather than running all the servers myself. Cloudflare provides the underlying computing and database services, leaving me with less infrastructure to maintain.

I still have responsibility for the software, its security and its data. There are still bills to watch. But I have fewer server-maintenance jobs competing with product development.

This is a different calculation from the build machines at home. If a development machine stops working, a build can wait. Services customers rely on need their own arrangements for availability and recovery.

I’m making those choices according to what each part of the business needs.

What I’ve learnt

My main lesson is that “doing it properly” needs to include the economics.

I need appropriate checks and a repeatable process. I also need to understand what each part costs and what useful work it does.

My own time belongs in that calculation. An afternoon maintaining a machine is an afternoon I can’t spend improving Patched or talking to potential users.

I’ve also learnt to question unnecessary work before finding somewhere cheaper to run it. Repeating the same checks on my own hardware still wastes time, even if the bill is less visible.

And there needs to be a stopping point. There is always another improvement I could make to the setup. The product still needs to get into people’s hands.

What changes when revenue arrives?

Once Patched starts earning revenue, I’ll have more options.

Dedicated Mac hosting through a provider such as MacStadium might become worth considering. Some testing could move to rented servers. Growing customer usage might justify spending more on Cloudflare’s services.

Those are possibilities, rather than a migration plan I’ve already decided.

I’d want a clear reason to spend the money: builds regularly waiting for capacity, more people working on the product, or too much of my time going into maintenance.

The first paying customer won’t make the existing setup obsolete. It will give me more room to decide where paying for help makes sense.

For now, I’m using existing hardware where it helps and managed services where they reduce the work I need to take on.

The question I keep coming back to is whether the setup helps me deliver a reliable product at a cost the business can support. That includes both the money leaving the account and the hours I spend keeping it running.