First blog post
So I've wanted to have a new blog for a long time, but I haven't fully settled on architecture until now. I had an idea today for using Github Actions to build a dynamic-feeling website using Issues and Comments on a Github repository as the content for the blog, and so vibe-coded this up. Pretty happy with the result so far!
Some of the priorities of this blog are:
- Simple
- Dynamic
- "Batteries Included"
- Social
- Distributed
Simple
This should be welcoming to use, even if you aren't familiar with programming or know what a "pull request" is.
People have been self-hosting blogs on Github Pages for quite a while, but I don't like the idea of needing to create a new .md file and push a commit every time I want to write a post. I want to be able to jot down a quick post from my phone and post it as easily as I can to something like Facebook.
So for that, we are adopting a structure where code is code, and data exists in the Github repo metadata.
Post do not exist as Markdown files -- they exist as Github Issues, and comments exist as comments on those.
If you want to post on your blog, create a Github Issue. Use the nice WYSIWYG editor to add Markdown, upload image attachments, etc. This gives you a nice interface (that's even mobile-friendly), and will automatically trigger a re-render of your website whenever you create or modify a blog post. Similarly, comments from users show up as comments on the blog post.
Want to add category labels to your posts? Add a label to the issue in the Github interface.
We strive to be seamless and "don't make me think" as much as is reasonable while (ab)using the features of Github.
Dynamic
Even though Github Pages is static-only, we aim to make this feel as dynamic as possible. We use Github Issues as a database backend, but can also ingest content from other places.
One thing that bugs me is how places like Facebook, LinkedIn, and X will de-prioritize / shadowban content if it links off-platform. I regularly want to share links to great YouTube videos that I watch, but it's hard to get my friends to be able to view them on social media. So one of the ingestors on SimpleGitBlog is the ability to pull in videos that are added to a YouTube playlist so that I can quickly add a "ShareThis" playlist in YouTube, configure it as a video playlist source in SimpleGitBlog, and then new additions will get crawled and ingested and added to my "What I'm Watching" spot on my blog.
Similar for ingesting my Hacker News comments and submissions for my "What I'm Reading" list -- I regularly interact on that site, and being able to automatically ingest my content from that site feels pretty powerful and dynamic.
"Batteries Included"
Because all data exists in project metadata, configuration is not copied when you clone the repository. That way, you can clone the "live" version of my site, and you don't get any of my blog posts or settings -- you get a blank slate that is your own. Pretty cool, right? The goal is to make it as simple as possible for others to build off of this work.
Social
If you fork this repository to create a blog of your own, then commenting on my posts will cross-link over to your blog. Let's bring back link-surfing!
Distributed
I don't like the idea of standardizing on yet-another-website, but Github is reasonably stable, and feels like a decent compromise in terms of places to get long-term free hosting, and also giving you some measure of retaining ownership of your own data.
Utilize Github Pages (normally for static sites only) in a way that feels dynamic. Do this by leveraging features of Github itself to translate dynamic project elements (issues, comments, pipelines) into blog posts, comments, etc.
Conclusion
So this is an experiment along those regards. We'll see how well it works? Feel free to comment here if you want to be part of the experiment!
Testing comments. This should be able to be used by anyone on the site -- not just me!
Hi Clint!!