Write The Web, 2020
For 2020, I’m writing a new blog app. It’s just for myself, a toy to remind me why I love the web. It’s called Goldfrog, and it sounds a bit like “Go, blog!”
Why in the hack, in this day and age, would I spend time writing my own #blogging software, when you can’t sign up for a VPS anywhere without tripping over offers to help you set up Wordpress, or Ghost, or what have you?
A few reasons.
New Year, New You
2019 was shite-filled, and due to politics, the tech trashfire, and the friction of blogging through several variations of static, git-powered versions of this site, I simply stopped blogging. I’ve wanted to, but the effort killed the motivation before I could get some words out.
So I finally decided to write something myself, that did just the things I wanted. #goldfrog is written in Go, because while I will love Python to my dying day, my brain needed a kick in the pants this year, which relates to my next point.
The Builder’s High
Rands writes eloquently on the builder’s high. With family engagements and work over the last few years my hobby coding has dropped to almost nil (None if I were writing Python).
I needed something to reboot my creative juices, and trying to write something I really wanted, that thought would be quick, in a new language, seemed like a good way to go (I did want it, it wasn’t easy, and Go hates me. But I’m learning and that feels great!)
A bit more about Goldfrog: the single feature I wanted was a posting form on the home page, right up front. Various Userland products had had this, and it always felt right.
Second to this was an “Edit” link next to every post, wherever it was found on the site.
Finally, my main technical “innovation”: My content is still stored on the filesystem as Jekyll-compatible Markdown files. However, build times via Jekyll or Hugo are fairly slow for my 2800+ posts (since 2000, baby) and I hate that. So #goldfrog indexes all posts in a sqlite database on disk. Post creation and edits go to the DB and to the filesystem, so I can still periodically sync the changes to the git repo I have checked out there. But all the list views, archives, tag pages, and search functionality go to the DB, and are really fast.
This is really the app I’ve wanted for a long time.
- It’s hosted on a Linode “nano”
- The app builds on CircleCI and the binary is pushed to an S3 bucket.
- I’ve got ansible playbooks that setup the VPS pretty much from scratch with Nginx fronting Goldfrog.
I really need to get my logging story fixed, and I’ve got some idea on adding basic metric tracking to the app.