Doing it for me

This isn't going to be your normal "here's how I built my website using a bespoke ssg" blog thing. ... Even though I have written a bespoke ssg and built this website with it, and I've *been* doing that for years now (when my site is languishing, unloved and even more static than usual).

No, I'm writing this to talk about my desire to write "shippable" software and the journey (or descent) I've made into realizing that really, I should be writing it for me.

If you look at my various git repos online, you'll see a lot of abandoned ssgs in various languages. When dabbling in a new language, I like to write an ssg as a practice project: it is a pretty well-defined goal that covers a decent amount of progamming concepts like filesystem access, transforming text, and working with paths. (Now that I type this out I realize that that is really not much of the programming field. I should maybe pick a new test project.) It also has the bonus feature of letting me feel like I'm doing something while not actually adding to my ouevre, which is great for a procrastinator like me.

Anyway, I haven't put the program (named bm) on any code forge yet, and I don't know if I will. Not that it's closed-source or proprietary---email me if you want a copy---but because it's never going to be polished enough for publishing. I don't want to write a README, I don't want to finish out the API or write a CLI front-end, and I don't want to deal with bug reports or merge requests or any of that. I wrote this for me.

To publish this page when I'm finished writing it, I'm going to navigate to ~/code/bm, open one of the lisp files in there, start a Lisp repl, and run

(ql:quickload "bm")
(load "test") ; this file is in ~/code/bm, tho my site is in ~/site
(test/build)  ; this builds the site and plops the result in /tmp
(test/serve)  ; optional, to make sure it looks good locally
(test/deploy) ; rsync wrapper to ... deploy the site to my server

I haven't put that workflow in a script or a Makefile or anything else. If I run into problems when running any of the above functions, the repl will yell at me and I'll fix it on the fly. While writing this post, in fact, I added a feature to my gemtext-processing code to allow me to enter inline html (that's where the <abbr> and <code> tags up above come from). It's all very manual, and I realized recently that that's all it has to be.

Lately (read: this week), I've been thinking about shifting my site to be dynamically-generated instead of statically-built, using hunchentoot, sql, and that kind of thing to serve the content. I asked myself, "why?" and answered, "because it could be fun and I'd learn some things." That is enough reason, I'm coming to understand.

Of course, doing so would be another distraction from actually writing anything online, but that's okay too. Even while writing this---as in, while typing these exact words---I'm thinking to myself, "this post isn't going anywhere, it means nothing." I do want to do something worthwhile with my life, but I can also do things that aren't. There are no filler episodes.

Anyway, I might (or might not) do a more technical exploration of how I build this site later on. Just know that whatever I do, I'm doing it for myself.