My previous “blog” was “written” with Hugo and hosted on Netlify. I use quotes because for the last two years it had no content at all so it wasn’t much of anything. Today I was chatting at work with some folks about what blog platforms we use and I wanted to not feel like such a poser.
That preface out of the way, I’ve decided that a new year means a new blog and I’m resolving to write weekly about my various adventures and thoughts revolving around technology here. Hopefully 2020 is a better year in oh so many ways. “What is this new blog written in?” you ask. It’s Hexo and it is running on Zeit Now.
Why did I chose those two? Despite my firey hate of all things JavaScript, it is a useful language to learn, the community around Hexo seems much more vibrant, and it’s stupidly easy to use. As for my decision to use Zeit, it seems like if I want to jump into any squirrely experiments with different cloud platforms and serverless functions, Zeit is much more flexible than Netlify while still retaining the simple Github-based workflow that I like.
Given how much easier it should be to maintain and update this blog, I’m hoping it will be easy to keep that resolution to write here biweekly. 🤞
How I set this up on OSX
Delete old empty blog commit
1
2
3
4# nuke everything, boring git stuff
git rm -rf *
git commit -m 'Dump netlify and hugo'
git push origin master-
1
2brew install nodejs # could also download the pkg or YOLO curl | bash
npm install hexo -g Use
hexo init
to make a new blog from the default templateSince I already had a git repo checked out, I had to use
hexo init
in a subdirectory and move it out.1
2hexo init blog
mv blog/* .Fiddle with
_config.yml
commitYet another YAML file in my life. Browsed through it and fiddled with settings like
title
,url
, etc.Make the beginnings of this blog post commit
Created a new file
source/_posts/New-Year-New-Blog.md
by callinghexo new 'New Year New Blog'
. Filled it out with some pretty standard Markdown content.Add a theme and fiddle with it’s settings commit
I was originally going to use
git submodule
to checkout my fork of the theme I found but then I remembered that submodules are terrible so I usedgit rebase -i
to pave over that chapter of history, replaced it with a literal copy of my local checkout of my fork (minus the.git
folder) and force pushedgit push origin master -f
over the evidence. 🔥📁🔥 I’ll just pull down fromupstream
on my fork and copy over the files whenever I want to update or make changes.In Hugo, themes can also have settings. So I fiddled around with those a bit. 🤷♂️ I just have to remember to copy the
_config.yml
hacking I did back over to my fork of the theme.Make this blog post :inceptiontop: commit
Checked out what it will look like locally with
hexo server
.Login to Zeit create a new project
I created a new project, filled it out with the details for my blog and linked it to my Github repo. I restricted the permissions to the small set of static sites that I deploy and not include the hundreds of work forks. It’s pretty easy to update them again later, if you search for a repo but Zeit can’t find the repo, Zeit offers a link to the app config on Github.
Once the repo was added, Zeit immediately began build it (I think it uses npm actions in
package.json
) and then deployed it to a temporary domain.Setup Zeit domain
I didn’t want to have to deal with NameCheap and CloudFlare for this silly blog, so I ported DNS management over to Zeit on NameCheap. For some reason the bulk edit didn’t like the single character subdomains on Zeit (for example,
a.zeit-world.org
) but the “Manage” screen was fine with it. 🤷♂️ Sounds like a fun bug for someone that isn’t me to fix. DNS migrated super-quick and easy.
That’s about it. Hopefully you’ve learned something from this overly verbose guide. 😅 Hello to all the crawlers and bots out there!