It has been a long time since I built a static website for fun.
Last time, 8 years ago, I looked for a cheap and safe way to host it. I chose Google App Engine to avoid hassles like setting up HTTPS. I even added a comment section. This required JavaScript, storage, and complex styling, which I did not enjoy learning.
Eight years later, I was afraid to change the site. I thought I had lost the source files. Eventually, I found my old backups and decided to stop porkrastinating.
I had very little documentation. The old App Engine runtime was deprecated. I wasn’t sure if App Engine was still the best choice. I wanted to use modern libraries, remove dependencies and keep the setup simple.
In the past, I enjoyed making macros for LaTeX or tinkering in Emacs. I do not really like working with HTML, CSS, or JavaScript. However, some of this work is necessary even for a static site.
I wanted to separate the content from the technical parts, and structure the technical parts better. This would let me create new sites easily, and make future upgrades easier. I also wanted to test serving from a VPS using Docker and Caddy, sqlite and lightstream instead of App Engine. I wanted to document the new architecture and automate building and testing.
My 8 year younger self would have finished this happily in two weeks with a lot of strain and effort. But that version of me would have listened to his inner Schweinehund and skipped the documentation and automation.
Now, I used AI tools like Gemini Antigravity to help. These tools made it easy to automate, build, and document the site. I could separate the site content from the server scaffolding easily.
I can now host the site from App Engine, a VPS, or locally. It is much easier to manage multiple sites and track my debugging steps now.
This took about a day. The most valuable part was logging every decision and automating all these tasks:
Setting up DNS records
Setting up the server, Docker, and config files
Building and deploying versions
Pushing to GitHub
Debugging issues
The AI wrote an architecture document, a debugging guide, and a makefile doing every part of the work. The AI also kept these docs up to date as I added features or made changes. Here is where the inner Schweinehund lost its power over you.
There were some problems, too. The AI set up the hosting very quickly but forgot the database, and then wondered for a long time why things were not working. It also tried to do everything for me instead of teaching me how to fix issues. I believe developers should understand how their tools work.
Designing the look and feel was much harder for the AI. It tried hard to talk me into a corporate style with “on brand” colors, fonts, and fancy animations. I think those things often make websites worse. I ended up fighting the directions AI gave me and spent a long time going back and forth on small details without making much progress. I learned that a) It is easy to get stuck on tiny details, with or without AI, and b) You can always ignore the AI’s suggestions c) for easy projects like this, the least expensive Gemini model seems perfectly able to do a great job.
Overall, I am now in a better position to maintain my site for years to come. Time well spent.
Alas, up and to the right!
P.S. If you are interested in the details, leave a comment.
Written on April 29, 2026