Re-Architecting This Website X

Share

My last update on this project was just over six years ago. Everything worked, and I moved on. The software industry didn’t stand still, and neither did I.

I work in operations at an AI startup. I use tools like Claude Code daily to get my work done. I’ve grown my usage of these tools over the last year or so, for both work and personal projects, but it became clear I needed to push a little further. So I decided to build a bigger project using these tools while trying to minimize my involvement as much as possible. That project is now the platform this blog is hosted on.

I remember the first time I used Heroku. It blew my mind. Everything was so simple and easy, and it just worked. I’d never seen that layer of the infrastructure stack handled so brilliantly. Even today, I consider it the north star for Platform-as-a-Service.

Something akin to that (though much, much less ambitious) is what I set out to create. I provided user stories, rough specs and designs, infrastructure constraints, and a budget, and got something built that could run a Docker image and wire in a MySQL connection string and S3-compatible storage. That was seven days ago.

Next, I kept it going by asking for platform support for other applications I’d consider running: n8n, WordPress, Grafana, etc. Each one stretched the platform and required additional features to support it.

In parallel, I’d go through the application once or twice a day and compile a list of things I wanted added or changed: new features, weird UI bugs, pages that didn’t make sense to me, and so on. The agents I’d created would run off and build, test, pentest, document, and blog about what they’d done once finished. In short, my very first software factory.

I’d like to tell you how I set this factory up, but I’m honestly not sure it’s worth sharing. The short version is that I created a root prompt with basic requirements and a couple of ideas for agent personas. Literally one-liners on what each agent would be responsible for. Ultimately, Claude created those agents. When it needed my feedback (usually in the form of an API key to do something), it would update a file and ask me to answer the questions and/or mark them as done. The next time I fed it my list (I’m not using loops, but I could), it would chunk up the list along with any pending work waiting on answers and go off and continue building.

All that said, I think the best metaphor for using Claude Code this way is that you’re a dev manager with a penchant for micromanaging. Your staff is a handful of very capable but also very junior devs. They need mentoring, lots of guidance, and constant supervision. They can code, but they have zero taste and don’t work well with others.

Okay, so about this blog. It was previously hosted on WordPress on a VM with an old 7.x build of PHP. When the horrible CVE came out on October 21st, I grabbed my latest backup and shut the server down, since I couldn’t easily patch it (the VM was still running CentOS 8). My first thought was to re-home it on this platform. I pushed for the changes needed so WordPress could run here, and at the time of writing I even have a backup of the old blog running in WordPress on this platform. That said, I don’t really need much of what WP can do. This is just a little blog. The first app I got running was Ghost, so I decided that re-architecting this website also meant migrating the entire thing to Ghost. So far, I’m very happy with that decision.

Oh, this “platform” I keep mentioning? It’s called PicoPaaS. It runs on DigitalOcean using their managed Kubernetes service (DOKS), Spaces (S3), and managed MySQL and PostgreSQL databases. It’s essentially tooling that makes it easy to deploy an app and effortlessly get a database, blob storage, a volume, and backups. For now, the code isn’t public, but I intend to open up the repo once I’m closer to a “V1.” You can read more about it at picopaas.xyz.

I’m not sure what’s next. Again, this entire project was an attempt to take what I know deeply and stretch myself to use AI coding tools more effectively. I learn best by doing, and so as not to completely let go of the reins, this project needed to be written in languages I understood (Python and JS) and be about a subject I understood (Kubernetes, cloud computing, etc.). It’s amazing what can be built in a week now, though...

Finally, I know I skipped IX in this series. This was a more ambitious jump than the others, so I think it’s fair to skip from eight to ten.

UPDATE: I mentioned that managing agents is like micromanaging junior devs. Here’s an example. While upgrading from Ghost 5 to Ghost 6 (because you also have to tell these tools to look for the latest stable release, otherwise they use whatever they were trained on), the agent hit a platform limitation. Its proposed solution was to make a custom build of Ghost 6 and then raise the issue with the Ghost devs. I had to stop it and tell it to fix the platform so Ghost 6 runs, rather than trying to fix Ghost 6. If that’s not an overly ambitious junior dev, I don’t know what is.