This blog has been featured by GitHub!
This blog has been featured by GitHub!*
Well, sort of.
To publish posts to this blog, I’m abusing GitHub’s excellent Issue tracking capability. I have a GitHub Issue Form Template at .github/ISSUE_TEMPLATE/new-blog-post.yml
which gives me a nice template to complete with fields like blog title
, date
, section
etc.
The form template automatically labels the issue as a new-blog-post
which triggers a GitHub Actions workflow to (very hackily) dump the contents of the Issue into a Markdown file and commit.
The commit triggers a Cloudflare Pages hook that builds my site with Hugo and deploys it to my abstractnonsense.xyz
domain.
To parse the issue template, I’m using the excellent issue-ops/parser
workflow maintained by Nick Alteen, a GitHub staffer! Nick’s very kindly featured my blog as an example of IssueOps, described as:
the process of interacting with GitHub Issues and Pull Requests to invoke commands. For example, approving requests to access important systems.
The key advantages of this workflow are:
- I can publish posts on mobile! In fact, this post was written all on mobile! This was probably the biggest requirement. I wanted to be able to make the writing experience as frictionless as possible and push content from anywhere without having to have my laptop on-hand.
- I get rich Markdown rendering support with GitHub Flavoured Markdown
- I can sort of abuse GitHub’s user-upload-file-to-Issue CDN for storing media. This is probably sub-optimal, and I should probably migrate to an idiomatic pattern like Cloudflare’s R2 or AWS S31 at some point. But for now, it just works 😉.
And yes, this is indeed an obligatory blog post about how I write blog posts. I spend far too much time thinking about blogging, tweaking my blog internals, or blogging about blogging instead of actually blogging. I’m trying to change that, I swear.
-
Or just plain old git - premature optimisation is the root of all evil, after all. ↩︎