Blog Setup

Since getting back into the habit of blogging, I wanted to share a little of how my workflow goes. It’s not the most eloquent

Server Side

I was using Ghost for a while because it was stupid simple to just write and post, however I feel that Ghost is not meant for blogging. There is a lot of bloat there and many tools are for subscribing users, making money from the site, etc. That’s not for me and that’s not what this blog is about. So I decided to go back to my previous blogging software: Hugo. Hugo is a static site generator that’s fairly easy to get up and running with little effort. The big hurdle with Hugo, in my opinion, is finding the right theme.

I HATE blinding white color schemes and themes. Why would you burn my eyeballs out like that?!

I’m more prone to use dark themes or if it needs color, use a darker shade.

After trying many themes, I decided to stick with Yinyang and edit the CSS as I see fit. The only changes that I’ve made (so far) is the background color to darken it a bit, and to remove the bolding of text when you hover your mouse over a link. It’s distracting. There will be more changes to come for sure as I’d like to make it different looking enough to stand out and not be like hundreds of others who are using this theme.

Finally, my Ubuntu server runs Caddy for all the services that I publicly serve. Caddy has a built in feature where I can have it serve my static files with no web server needed. Very simple and SSL maintenance is no more.

Client Side

I use Neovim as my editor of choice in Alacritty on my Macbook Air M1. Also, I use Espanso for MacOS to allow me not to have to type so much.

Using Espanso, I have some shortcuts that will allow me to quickly create new posts and edit them:


‘hugonew’ will type out “hugo new posts/” for me; the cursor will automatically go where the _, allowing me to type the file name immediately. ‘hugoedit’ types out “nvim content/posts/”, placing the cursor at the end so I can quickly type the file I want. I didn’t want to combine these two because sometimes you need to just edit an existing file or you may want to just create a new post and write it later.

Once the writing is complete and I’m happy with what I have, SyncThing will sync my local Hugo folder with the folder on my Ubuntu server. I’m still trying to figure out the best way to send a “hugo” command to my server so that it can build my site and be live immediately. And before you say that Hugo does live reloading automatically, I don’t use the Hugo built in server, Caddy does the work for me. Maybe I can write a quick bash script with cron so it runs every so often? Not sure what to do there.

Misc Things

Here are a few miscellaneous things that help me out along the way:

# To only allow spellchecking on Markdown files
autocmd BufRead,BufNewFile *.md setlocal spell spelllang=en_us

# Use ']s' and '[s' to move to previous/next misspelled words, 'z=' to show suggestions, and 'zg' to add to dictionary

Wrapping Up

I really enjoy this process so far but I want to see if there are just simply better ways to do it. More shortcuts, more keyboard commands, more Neovim tips and tricks, more automation. If you have any suggestions, please feel free to send me a message on Mastodon or Matrix.

This is day 2 of #100DaysToOffload.