One morning, the site returned 404.
GitHub Pages was the cause. I hadn't changed any settings. I hadn't broken any code. Something had simply shifted, and the service stopped reaching users. The outage was brief, but in that window I found myself facing a question I hadn't thought to ask before.
— Why did I trust this service in the first place?
"Because It's Free" Is Not a Basis for Trust
GitHub Pages is free. That's why I used it. But "I trust it because it's free" is, on reflection, a strange kind of logic. Being free is a statement about cost. It says nothing about reliability.
If anything, the logic runs the other way. Paying nothing means no SLA, no support entitlements, no obligation to continue. The provider has every right to discontinue the service tomorrow. To keep using it while knowing this is less like trust and more like dependency.
Dependency and trust are different things. Dependency grows in the absence of alternatives. Trust grows in the presence of reasons.
What the Migration Revealed
After the 404, I migrated the sites to Cloudflare Pages. I moved deployment automation from GitHub Actions to a Raspberry Pi on my desk. Newsletter PDF delivery moved from GitHub Pages to a dedicated Cloudflare Pages project.
As I worked through it, a principle took shape.
Why leave git and webhooks on GitHub at all? That question turned out to be the most important one — because answering it meant articulating what trust actually requires.
Trust Requires Business Model Alignment
I trust Cloudflare's infrastructure not because it's free, but because Cloudflare's business model aligns with keeping free users around.
Cloudflare offers a free tier as an entry point toward paid plans. The more free users build on the platform, the broader the ecosystem, and the stronger the pipeline to enterprise customers. My running a free site is, from Cloudflare's perspective, rational. Our interests align.
Git hosting and webhooks on GitHub hold for the same reason. They are GitHub's foundational service. If those stop working, the entire developer ecosystem breaks down. Whatever changes Microsoft may make to GitHub's direction, the reliability of git infrastructure is not something they can afford to compromise.
GitHub Pages and GitHub Actions are different. These are supplementary features — generous allocations of free compute that could plausibly be restructured or limited as business needs shift. Looking back, my unease was exactly this: a sense that the business model and the feature's generosity were not well aligned.
Physical Control as a Form of Trust
The Raspberry Pi offers a different kind of trust.
It will stop if the power goes out. It will break if I misconfigure it. There is no redundancy. But I put it at the center of my infrastructure because "I can control it" is itself a basis for trust.
When the reason for failure is mine, so is the reason it keeps running. No external service will suddenly change its policy. Nothing will return 404 without my involvement. When something breaks, the cause will always be within my own sphere of management.
This "explainable failure" is, I find, more trustworthy than the "unexplained outage" that cloud services sometimes deliver.
Trust Comes Before Cost
Before asking "is it free?" there is a prior question: does the provider have an incentive to keep this service running? Can I control it? When something breaks, can I explain why?
Trust is grounded in structure, not in price.
Today, the system runs on Cloudflare Pages for static hosting, Cloudflare D1 for data, and a Raspberry Pi for deployment and notifications. GitHub holds only code and webhooks. The cost is close to zero across the board.
But I can now call this system "free and trusted" rather than "free and anxious" — because I can explain why it deserves that trust.
"Free and anxious" and "free and trusted" are separated by one thing: whether you have reasons. Dependency without reasons eventually comes back as a 404.