New site!
You might be looking at this post and thinking "What, again?" And that would be a fair question. The answer, of course, is "yes".
Why?
That's a simple question, with a long answer. I'm going to give that answer - mainly because I need a bunch of content to test the site with!
In the beginning, there was hand-crafted HTML. And that was fine, because I am a nerd, and we nerds love doing that kind of thing. I think I even had a couple of the little standard-of-the-day sized buttons that read "Made with Notepad" and "Best viewed in a web browser". Yes, I am that guy.


Anyway, over time it became too much like hard work to write pages by hand and upload them all the time, and things like Wordpress (not linking for moral reasons) had started to exist so I played with a few of them. Now it was all about dynamic sites, using server-side scripting languages like PHP and databases like MySQL with an Apache front end. Cool.
Time passes, and things change. Wordpress (both the core platform and millions of plugins) are full of exploitable vulnerabilities (to be fair, Wordpress itself is fairly solid these days). Apache still makes up a huge chunk of the internet, but newer server platforms like Caddy are smaller, faster, more flexible and secure by default.
The tipping point for me came when the founder of Wordpress started behaving like a complete tool. To each their own, but for me I didn't want to be relying on software being controlled by this guy. That coupled with the ongoing effort required to keep a server secure made me change direction to the new-fangled things known as static site generators, or SSGs.
On the surface, this all seemed great: export my existing content from the Wordpress back-end database, do some messing around and feed a bunch of files into an SSG. Upload the output to a web server, and done. No active content, no server side processing, just fast delivery of HTML to a client. However, I quickly ran into some stumbling blocks...
The big one is my own knowledge, or lack thereof. SSGs were typically based on Go, or Ruby, or JavaScript. I've never had any real exposure to these languages, so every time I tried to get one working the way I wanted to I was constantly fighting my lack of experience. I'd typically also need to install the relevant toolchain, which in some cases I didn't really want to do. I don't want to install Node, and pull random packages I don't understand from a package repo.
I did look at a couple of SSGs that were more my jam. Paul Hudson of Hacking With Swift released Ignite, an SSG built in Swift. I already use Swift for developing for macOS and iOS. I already have the toolchain installed. Seemed like an obvious solution! Ultimately, there were just a couple of little niggles that I couldn't get get past. I also looked at Raptor, which is an evolution of Ignite, which has some different little niggles. Both are great, just didn't quite do it for me.
At some point, can't remember when, I discovered SQLPage. Rather than writing HTML, you can build a web site purely from SQL queries. Yes, this meant going back to server side processing, but I could minimise the attack surface through careful infrastructure design, and by literally not having any internet-facing code that could modify content or execute random code or queries. It's super cool.
The obvious flaw here: I'm a hack when it comes to SQL! Traditionally this has been a bit of a barrier to me doing anything complex, but hell, it's 2026 and Claude is really good at reading the docs and writing SQL code for me. And here we are...
This has let me do some really cool things. For example, I've been a SmugMug user for a very long time. Most of my photos live there. Rather tham have to grab a copy of the photos I want to include on a post, I've created a local cache of the albums, which I can link to a post. Like magic, the linked album shows up. This way all the large content is served from the SmugMug content network, not my tiny server.
I started this process in late March 2026. I'm writing this on April 1. I'm about to start migrating content, but it will probably be at least a few more days until this all goes live and replaces the previous site.