Testing 1 2 3

The Intro

So basically my personal website's been more-or-less unmaintained for way too long, in no small part due to indecision on what I want to use instead of the current Jekyll-based codebase. My wishlist:

Different enough from Jekyll that the setup feels “new” and “exciting”, such that it's easier to overcome my writer's block

Self-hosted on my own server (of the “virtual private” variety)

Portable (in case my own server goes kaput; I've been a very happy 1984.is customer for a few years now, but you never know)

Versioned (so that I can revert to a known-good state if I manage to thoroughly discombobulate my website)

As little JavaScript as possible (preferably none, or at least so little that the site is still viewable on browsers with JS disabled/unimplemented)

Easy to edit from anywhere, even if I only have my phone on me (which means either a built-in editor (obviously incompatible with the “as little JS as possible” preference) or a codebase that's easy to edit and build entirely from my phone's terminal app)

Previous experiments along those lines:

A Fossil repo with nothing but wiki pages (which I started awhile back but never quite finished enough for me to pull the trigger on redirecting the homepage to it)

A static site built with Scroll (which is now seemingly kaput, so as cool as Scroll was, this would leave me worse-off than just staying with Jekyll in terms of future-proofing)

A static site built with Typst's recent support for HTML exports (which would've been cool for making elegantly-typeset PDF exports of my posts alongside the HTML versions, but when I tried this the HTML features seemed very underbaked — but maybe things have improved in the intervening months since I last investigated this?)

Of those three, Fossil is currently in the lead - not just because it's the one that entails the least effort to get working (I've already been migrating away from Git (and GitHub in particular) toward Fossil for my FOSS projects), or because it's the one I got furthest in terms of migrating the existing site content, but because I really like Fossil's flavor of Markdown — in particular the footnotes and the built-in support for Pikchr diagrams.

HOWEVER

In the intervening time between those experiments and now, I've starting digging hard into ATproto — starting with Bluesky, of course, but also the various other applications in the broader "ATmosphere" ecosystem. This has added some new avenues of exploration:

Leaflet, which is where I'm writing this post

WhiteWind, which seems to be the most mature “publish webpages on ATproto” platform

Something totally custom, like what Stella Cannefax did for her blog

Since you're (probably) reading this on Leaflet, you can probably guess which one of these I'm focusing on with this post.

The Good

By default Leaflet pages look absolutely beautiful. Even my half-assed attempt to make a page look like complete garbage turned out pretty acceptable.

The editing experience is also pretty slick. I normally hate WYSIWYG editors (their “conveniences” tend to be more inconvenient than convenient; I'd usually much rather have a consistent markup language), but Leaflet's is a very nice exception to that aversion. I appreciate the Markdown-esque shortcuts for common formatting commands, too — like # to start a header and - to start a bulleted list (though the editor doesn't seem to understand backslash escapes, so something like ` ` is a bit tricky to enter when Leaflet doesn't offer an apparent way to say “I want a literal backtick; please stop treating this as syntax for inline ‘code’ formatting kthx”).

Everything in a Leaflet page is a block, and (at least for “normal” / non-publication pages) there are lots of cool options for those blocks — including “subpages”, which are clickable button thingamajigs that then expand to the right of the current page into a whole new page. Quite a neat navigation approach, though I imagine rather JS-heavy. Too bad I can't demo those in this page because…

The Bad

Publication pages seem to have fewer features than non-publication pages. For example: these are the available “blocks” for a publication page (like this one):

And for a non-publication page (like the sample linked above):

Pretty major bummer, since the “subpage” concept is one of those things that I really like about Leaflet's approach, and which I was in fact hoping to use pretty heavily here. I guess I could just ignore publications for now and only use non-publication pages until their feature set gets unified a bit better.

Leaflet pages also seem to be horrifyingly complex under the hood. Like look at all these scripts when I hit F12 on that sample page and reload:

Given that long list of scripts, it was no surprise that Leaflet is a no-go without JS:

The Ugly

Documentation on self-hosting a Leaflet-based website/publication seems to be non-existent (as far as I've been able to find). Leaflet itself is MIT-licensed, so it might be theoretically possible to spin up that codebase on my own server and tweak it such that it only shows the pages I specify. There's also a GitHub repo floating around for a thingamabob that loads Leaflet pages statically within an Astro-based site, so that's another option (as is Astro itself, given that it's advertised as a pretty straightforward replacement for Jekyll).

There are a lot of things I'd be missing even from “normal” Markdown (let alone Fossil's flavor), like tables (and apparently numbered lists‽). Not a huge deal, but still.

The Verdict

Leaflet seems to be “good enough” to be a long-form extension of my presence on Bluesky — a macroblog counterpart to a microblog app. I can see myself using it to that effect quite often; after all, if you can access bsky.app (or one of the various third-party forks of it), you can surely access leaflet.pub, so all my quibbling about JS dependence and self-hosting is moot for that use case.

However, I also want to maintain a more traditional web presence, and I think that's where a custom self-hosted web app comes in that presents Leaflet (and Bluesky, and other ATproto app) records to my liking. That traditional presence needs to be in stark contrast to the app-centric JS-heavy approach that Bluesky and Leaflet currently take; I want my “brand”, so to speak, on the World Wide Web to be one of robustness and reliability — and ATproto seems to have the potential to enable that in a way that connects that old-school WWW mentality with the more modern new-school social networking mentality.

So long story short: I probably won't be migrating yellowapple.us to Leaflet as-is, but incorporating Leaflet pages is now something I'm strongly considering as a goal for my website's future state.