Overengineering: A Case Study
How I set up an enterprise-grade stack for a resume site and a blog nobody reads anymore

Most people try to save money by cutting back on streaming services or making coffee at home. I tried to save money by declaring war on my web hosting company’s ridiculous fees. It turned into an absolute masterclass in engineering overkill. I ended up rebuilding my entire digital footprint using tools designed to keep multi-billion-dollar corporations online.
I used those same tools to host my resume, my family portal, and an old blog I haven’t regularly updated in years.
If a rogue nation-state decides to flood my family’s Christmas letter site with traffic, the Vercel frontend will shrug it off. My little $60/year VPS in the back? That’s a different story. But hey, at least the front door looks intimidating.
I figured I’d write up what I did and why it makes absolutely no functional sense.
The Inertia Tax (and the Domain Racket)
For over twenty years, my sites sat on a standard shared hosting plan from the dot-com era, back when IONOS was called 1&1 Internet. The plan was easy to keep, but the hosting bill kept creeping up. It started small back in the early 2000’s. At the time of my June cancellation, I was paying $17 per month for my “Expert” plan which included unlimited bandwidth, unlimited storage, and unlimited SQL databases. On top of that was a ridiculous $100 annual “Unlimited SSL” fee, which to me is like paying a landlord for “protection money” just to have a front door with a lock on it.
There was also the racket of the domain registration. IONOS made a business of luring me (and many others) into initially free, then cheap introductory prices. They made the real money on domain renewals at inflated prices. Over the years, I’ve accumulated around 10 domains, including vanity domain names like spao.net, paos.us, and pao.mx, business domains like hillwork.com, hillwork.us, hillwork.org, and hillwork.net, as well as blog domains like time-restricted.com, retiredpdx.com, and bykumi.com (for Marsha). For each of these domains, IONOS was charging me at least $10 more per year than they were actually worth. In my defense, domain names felt cheap when I bought them. In my further defense, this is not actually a defense.
I realized that with a little sweat equity, I could escape this trap entirely. By moving to a hyper-optimized “budget stack,” I was able to reduce my baseline costs.
Domains: I transferred all ten domains to Cloudflare and Porkbun, escaping the retail markup trap and getting near-wholesale pricing. That alone saved me $100 per year right out of the gate.
Email: I still pay for Microsoft 365 for our family’s actual email. But for all the automated emails my sites and apps send (password resets, notifications, that kind of thing), I moved to Purelymail for a flat $10/year.
Server: A dead-cheap $60/year virtual private server from RackNerd.
By combining the email and server for $70/year, I saved over $200 per year. I’m now hosting seven different websites and five personal apps for less than the cost of a fast food meal per month. The catch? To “save money,” I built two tech stacks so complicated there’s just about no way that saving only $300 per year was worth it.
What I Actually Built (The Part Where I Lose Half of You)
Fair warning: this next section is where other techies will nod along and everyone else will briefly wonder if they left the oven on. I’ll keep it short. The point isn’t the technology. It’s the sheer disproportionality of it.
The Resume: Just Vercel
My resume at hillwork.us gets the simplest treatment of the three. It’s a single page, so I dropped the WordPress backend entirely. Vercel hosts it directly. To be honest, I don’t update it often. If I need to update it in the future, I plan to just describe the change to an AI and let it rewrite the relevant code. Prompting AI to update a webpage seems easier to me than logging into WordPress for one page. Which, now that I write it out, raises the question of why I used WordPress to host that site in the first place.
The Family Portal and Blog: WordPress + Vercel + GraphQL
For the family portal and the natural health blog, there’s years of existing content in WordPress that I wasn’t about to migrate. So, for these two sites, I implemented a new setup. WordPress runs in the back doing content management, shielded behind Nginx Proxy Manager so the public never hits it directly. Out front, Vercel serves the actual pages from its own global network. When the front needs fresh data from the back, they talk to each other through something called GraphQL, which is essentially a very polite, very efficient courier. If a million people visit at once, Vercel handles it. The WordPress server in the back doesn’t even know it’s happening.
Apps (Docker + Isolated Private Networks)
For the four WordPress sites I host for my wife and older daughter, plus the five apps I built myself, I created what is essentially a tiny private cloud on that same $60/year server. Every single app lives in its own sealed container, like individual storage units in a facility where none of the tenants can see each other, share a wall, or accidentally knock over someone else’s stuff. A traffic manager (again, Nginx Proxy Manager) stands at the front door and routes each visitor to exactly the right unit.
The five apps I built myself are things I’d otherwise have lived with in a more compromised way.
A link-in-bio page. Linktree would have been free, but with their ads plastered all over it.
A group scheduling tool. Doodle’s free version would have done the job, also with ads.
A private gratitude-sharing app for close friends and family. Some freemium thing with constant upgrade nudges would have technically worked.
A tracker for my private lending activities. I was handling this in Excel. Awkwardly.
An app that generates repeated fabric patterns. Marsha’s influence, not mine. I’m not sure there’s even a free alternative for this one.
With all three of these setups now live, every time I vibe code a new feature, I just push the code to GitHub. The infrastructure automatically builds and deploys it in the background via Vercel or Docker while I make another pot of tea. That part is genuinely as satisfying as it sounds.
The Hilarious Reality Check
The irony is real. I took a system that was zero-maintenance, where IONOS handled the server updates, security patches, and backups, and I traded it for a system where I have to do all of that.
In terms of actual day-to-day utility, this setup gives everyone else involved almost nothing new. When people visit my sites, the text is the same, the buttons are the same, and the images are the same. My vibe-coded apps work exactly as they would on a simpler setup. The users have no idea they’re running inside sealed Docker containers on a $60/year server. And Marsha and my older daughter? I didn’t change their WordPress experience at all. They log in the same way they always have. They have absolutely no idea anything is different. In some sense, I built several nuclear reactors to power a collection of toasters. Nobody using the toasters noticed.
On the flip side, if a container hangs or a background code library breaks on a Saturday night, I can’t call customer support. I have to put down my beer, open a terminal, and debug lines of code just so our friends can read our annual Christmas letters.
The Ultimate Silver Lining
So why do it?
I am retired. Nobody is looking at my CV anymore. My occasional consulting business is just helping out friends’ companies, and they certainly don’t care about my tech stack. Updating my resume with corporate buzzwords boasting about my hands-on experience at this point would be completely pointless.
So the real victory isn’t a career flex. It’s just the satisfaction of knowing I built the thing myself, on my own terms, for about the cost of a nice dinner. That’s retirement, I suppose. You finally have time to do things the hard way. Nobody can stop you and nobody needs to!
AI disclosure: I used AI tools during the drafting and editing process to help clarify structure and language. All ideas, judgments, and final wording are my own.


