New blog!


Welcome to my new blog!

Well, it’s not completely new, but it looks different! That counts for something, right?

Let’s start off with the url. I’m making the move to, it’s short and obviously a .run domain is where it’s at. As for, that url is now aliased to, so both urls work completely interchangeably. No links to old blog posts will be broken and you can still get here by going to If you want. But why would you want to?

I’ve also moved off of Wordpress. I’ve been blogging on Wordpress for more than ten years, most of that time on self-hosted Wordpress installs. But I’ve been wanting to leave it for a while. It’s not that Wordpress is bad, but it always felt a bit cumbersome for a simple blog. Plus, it can be really slow if you don’t put a little effort into it or you install too many plugins. And, lastly, it makes moving your site between hosts so much extra work.

We’ve been hosting our blogs on the same cloud hosting provider for years and years, but I’ve been looking to move to Digital Ocean so could have complete control over things. The thing is, every time I thought about having to migrate my Wordpress blog, I just noped right out of that project.

With the decision to move from Wordpress and to a different host, the question was to where? I love Tumblr, but I’ve never wanted to put a text-based blog there. I’ve always thought Tumblr was terrible at longform. And I prefer to own where my stuff is, which also rules out Medium.

I started looking at static blogging platforms. Something that didn’t rely on a database and is based on static files. Not only is it super fast, but it’s also so much easier to host and maintain.

I ended up deciding on going with Hugo. It’s easy to work with and checked the boxes for what I’m looking for. I wanted to be able to write posts in markdown to allow for easier copying-and-pasting from from wherever I’m drafting my posts, usually on iOS and macOS. It generates content that can be hosted via Github Pages. And it’s completely configurable.

As for hosting, with a static site, I don’t need to use a Digital Ocean droplet like I had originally planned. While working on the site, I was hosting on Github Pages, but I decided to actually host on Netlify instead. Mainly my decision came down to the builtin continuous integration they offer that would run the builds to spit out actual site pages. I could do the same with Github Pages, but I’d have to set up the CI myself.

With all that sorted out, the biggest thing was simply designing my site and doing the migration.

I’m not a designer at all. I hate frontend web development and I’m terrible at designing stuff visually. I know how I like things laid out and what kind of UX flows make sense, but when it comes to aesthetics, nope. Not my thing.

I went through some themes available for Hugo and ended up picking Beautiful Hugo and going from there. I made a few tweaks to how it worked, but it’s mostly stock.

This step was mostly just a lot of reading through Hugo’s documentation and learning how the framework works. It was fun a fun project to work through.

In the end, what I wanted was a site that was clean and easy to read. I find 95% of content online insufferable to read without using Safari’s Reader View. I wanted something that was clean just like that and didn’t require Reader View to be a pleasure to read. I often write long posts—it’s not uncommon for me to post 2,000-3,000 words—and I wanted a site that handed that well.

The worst and most tedious part of the whole project was the content migration. Oof.

I used Wordpress’s export to generate and XML file and went from there. There is a Wordpress export plugin for Hugo, but you can’t use it without terminal access to your server which our hosting provider won’t provide. I tried to find whatever migration tool I could to convert the XML to markdown files with Hugo’s metadata, but this turned out to be much more difficult than expected. Most of what I found either didn’t work or didn’t work well. The converter I ended up using got me about halfway there. It created markdown files for each post and got the appropriate metadata generated for each file, but the conversion of actual content left something to be desired.

I wrote a few regexes to fix some of the common issues I found. Most of those were for links and images. Links were easy. And converting Twitter and Instagram embeds to Hugo shortcodes was easy as well. Images sucked, though. There were a few different formats in my posts and trying to catch them all via regexes was difficult. In the end, I had to go through each post one-by-one. I’d open a post, run a find-and-replace using the best regex I could put together for it and then scroll through looking for anything that was broken. While tedious, this gave me an opportunity to fix other weird conversion issues. This whole process took me a few hours, but it wasn’t that bad.

So, that’s really about it. I hope you enjoy the new site. And I hope I get better about finding time to regularly post stuff here.

If you see or find anything weird or that doesn’t look right, please let me know! I plan for this to be just the initial layout and design and to evolve as time goes on. Hugo seems to make tweaking a live site a ton easier than Wordpress does.