macwright.org is now served over HTTPS.
I rarely change the stack of this website - after switching from Tumblr in 2011, I’ve stayed with Jekyll and, besides deleting code, haven’t changed that much. But I feel strongly that HTTPS should be a web-wide standard, so I’ve abandoned GitHub Pages in favor of Netlify. Netlify gets me the same ‘publish on commit’ workflow as Pages, as well as the ability to do fancier build processes or switch to newer static site generators like Hugo, though I haven’t yet and don’t have concrete plans to. Plus, they use Let’s Encrypt to provide SSL on custom domains even on their free plan, the free, automatable certificate authority that people are justifiably excited about.
The process isn’t terribly interesting, but the one quirk that I did have to work around is GitHub Pages’s behavior when it comes to repositories under your username.
The rules, for GitHub pages, are as such:
- https://github.com/tmcw/tmcw.github.com -> macwright.org
- https://github.com/tmcw/biggie -> macwright.org/biggie
Netlify doesn’t support this pattern yet, as far as I know, and I also didn’t really want to continue relying on it. So instead I wanted to serve biggie and other
gh-pages branches from tmcw.github.io, like https://tmcw.github.io/biggie/
Unfortunately, I have 169 repositories under my user, so manually finding every gh-pages branch would be a pain. So I wrote this tiny utility in clojure that scans all of my repositories and generates redirects, which I then added to this website. clojure is quite a lovely language, and I think it’ll be my preferred tool for this kind of scripting in the future.
I also had to deal with a lot of legacy cruft, like HTTP image urls to Flickr from 2011. For that, I used sed, the ancient ‘stream editor’ utility with which I am slowly forging a friendship. Here are some of the sed tricks:
Update internal links, so they don’t have to be redirected
sed -i '' 's,http://macwright.org,https://macwright.org,g' _posts/*.md
Update Flickr URLs
sed -i '' 's,http://farm,https://farm,g' _posts/*.md
Update Amazon URLs
sed -i '' 's,http://amzn,https://amzn,g' _posts/*.md
<iframe> src attributes
sed -i '' "s,src='http:,src='https:,g" _posts/*.md
That’s it! The above castle is Neuschwanstein.