Well, I finally updated the Jekyll instance that runs this blog. If everything went to plan, this post will be the inauguration of a new era. One that looks a lot like the last era, hopefully.

My Jekyll install had been stuck in about 2012 because a lot of the custom plugins I’d written over the years required very specific versions of various libraries, and it was working, so it got left alone. Then I got an M1 Mac mini, and my very specific requirements became impossible.

Much of the transition to Apple Silicon is easy, thanks to most developer’s readiness1 combined with Rosetta and Universal Binary, but anyone who spends time on the command line will know that things are a little stickier once you get into your shell. After wrestling with Mackup, brew bundle, and dotbot for a weekend, I got things mostly working.

The Homebrew community has done a great job of updating brew formulae for ARM compilation, and I only had trouble with about 3% of my (fairly large) Brewfile when I installed it on the M1. (It does, however, install everything to /opt/homebrew instead of /usr/local/bin, so I had to update a few scripts here and there where I’d hardcoded paths. But easy enough.)

However, Node and Ruby are a little bit stickier. If you want the latest versions of either, no problem, the edge builds are fine on ARM. But if you need, say, Node 10 and Ruby 2.6.5 for something (like this blog), you’re in trouble. You can kind of work around the Node issue by launching Terminal (or iTerm) using Rosetta (Get Info -> Open Using Rosetta) and using the arch command to fake an Intel machine, but no such luck with Ruby. Big Sur on the M1 ships with Ruby 2.6.3. If you want to use another version, you can install 3.0.1. That’s it. That’s all that will actually build.

So I’ve been updating everything to use newer versions of the various tools. The last thing that was keeping me from letting go of my Intel MacBook Pro was this blog. (Well, that and Izotope plugins for Logic Pro X. I really miss the RX plugins — which crash Logic on the M1 — and hope they get their act together soon.) I spent the weekend rewriting Jekyll plugins, giving up a few that I didn’t really need anymore, and revamping some templates and scripts as needed to work with Jekyll 4.

I have a 2012 Mac mini that actually handles the final build/deploy of this site (I needed an always-on machine to handle post scheduling hackery). It takes that machine about 30 minutes to render this blog with about 2100 posts dating back to 2010. I had gotten used to it. Now, with Jekyll 4 on an M1 Mac mini, it builds in 3-4 minutes. And that’s with all the crazy plugins I wrote to create tag indexes, search tools, related posts, and myriad other shenanigans. Running without plugins, it builds in about 30 seconds. Not bad!

I haven’t had time to pore over the site thoroughly and see if anything broke that I didn’t account for. Everything I consider vital seems to be working. If you’re looking around and something seems amiss, please let me know!

I’ll post again soon with some news about the new job I started last week at Oracle, some cool new stuff in the Bunch beta, and some updates to other projects that I’ve squeezed in despite the whole corporate day job thing.

  1. And then there’s me, who didn’t realize Marked 2 had reverted back to Intel-only after some library changes. Update forthcoming.