Our great sponsors
-
karl.berlin
My blog and homepage at karl.berlin, as well as the minimal blog engine used to create the pages.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
utterson
a minimal static blog generator written using old-school unix tools (make, ksh, m4, awk, procmail and a pinch of elisp)
-
pages-gem
A simple Ruby Gem to bootstrap dependencies for setting up and maintaining a local Jekyll environment in sync with GitHub Pages
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
naif-blog-engine
A static blog generator powered by GNU Make, Node.js & SQLite. Includes support for podcast feeds & FTS (full text search)
> I found his GEMINI approach quite funny - it strips out most of the formatting with a regexp.
Do you mean the regexp in https://github.com/karlb/karl.berlin/blob/master/blog.sh#L4 ? It doesn't remove the formatting, just HTML comments (because they would show up on the page, otherwise) and rel="me" attributes (because they don't work with md2gemini). Feel free to read the blog post about adding Gemini support for more details: https://www.karl.berlin/gemini-blog.html
I love the code [1]. Mine [2] is a bit over engineered because I wanted hot-reloading (without JS), and it was a delightful yak shave.
But the basic idea is the same --- heredocs for templating, using a plaintext -> html compiler (pandoc in my case), an intermediate CSV for index generation.
Very nice!
[1] https://github.com/karlb/karl.berlin/blob/master/blog.sh
[2] https://github.com/adityaathalye/shite
utterson https://github.com/stef/utterson/tree/master is generating blogs using make for a 14 years now...
It's a neat idea, though I have to point out that if you're already pushing to Github, you could just push the source and Github will publish your markdown as a hosted page: https://pages.github.com/
I did some similar experiments some time ago. It includes Makefiles, Rakefiles, SASS, Ruby erb, Jade, m4, and a few other tools.
https://github.com/W4RH4WK/static-page-generators
Over all, I quite like Ruby since it comes with rake and erb.
Most of the Static Site Generators default to generating blog from markdown, which is not feasible for company websites etc. For such projects I like Middleman (https://middlemanapp.com) which provides layouts/partials and things like haml templates.
My number one reason to use make is to have a single centralized location for project commands. If I see a Makefile at the root, I can quickly scan it and have an overview of what high level actions I might execute.
Note that I have recently switched to Just (https://github.com/casey/just). While not technically the exact feature set as make, it covers all of the ground for what I typically do. It gets the benefit of history and discards a lot of make cruft to make a more predictable experience.
I check for orphan files in 'build' only before doing deploy. It's easy enough:
* save a sorted list of targets in file A
* save a sorted list of files from an output dir in file B
* diff -u A B
an example: https://github.com/gromnitsky/naif-blog-engine/blob/58c55497...
As long as we're sharing our own projects...
One of the things I did during the pandemic lockdown was work on the simplest possible blog in a single html file. Something that requires essentially no technical knowledge beyond typing text into a file. I recently dusted it off and yesterday I posted the most recent iteration.
Demo: https://bachmeil.github.io/minblog/blog.html
Source: https://github.com/bachmeil/minblog/blob/main/blog.html
There's very little styling, but that's not the objective (and it'd be trivial to add).
Update: I made it into a bash script, and now it only runs on changed or new files. Far more efficient, both because it's just bash, and because it only runs on what's needed.
https://github.com/askiiart/askiiart.github.io/blob/main/md2... or https://git.askiiart.net/askiiart/askiiart-net/src/branch/ma...