Principles · The following are important:

  1. The words and pictures here are generally not AI-generated; the rare exceptions are clearly labeled.

  2. The blog is plain HTML+CSS, with a few snippets of handcrafted JavaScript for minor on-screen fine-tuning. This is the best way to deliver on the World Wide Web and should be used unless there’s a reason it can’t be.

  3. I have no plans to open-source any of the code discussed below, because I’m not proud of it.

Details · I write ongoing in an XML dialect that is mostly HTML with a few little extras; I edit with Emacs but any old text editor would do.

The essay fragments that make up ongoing are organized by date into a directory tree (visible in the URIs), and each is filed into one or more hierarchical categories; you can navigate around both the date and category apparatus.

The paragraph font is FF Tisa Web Pro, delivered via Typekit; I wrote the process up.

Since I'm a hopeless geek, I couldn't possibly use any one of the excellent personal-web-site or blogging tools out there; it's all done with a Perl script imaginatively named ong.pl, less than three thousand lines in total, that maintains a MySQL database containing basic metadata for each essay. The Perl script runs over the source tree, figures out what needs to be updated, generates any new notes, and always regenerates the top-level page and RSS/Atom feeds. It's not rocket science, there are less than 3,000 lines of Perl representing weeks not months of effort.

Then there’s the comment system, which is under 1,000 lines of Ruby; its design is brutally minimal, involving no databases or framework code.

The little picture on the right that changes every so often involves some JavaScript voodoo.

A lot of the work is in handling the pictures, which exist in three sizes. Some are resized by hand but often it’s ImageMagick. I used to add my own drop shadows, but modern CSS takes care of that.

The JavaScript code that makes the expended versions of the pictures go away is generated by GPT-4.

The text used to be right-justified but eventually I became convinced that that hurt readability. So now I don’t have to think about hyphenation.

One virtue of the setup is that it works exactly the same on my MacOS laptop staging environment and the Debian box where ongoing lives. The blog is entirely served out of static files, but… no wait. If you can possibly serve something like this that way, you should. Linux contains literally engineer-millennia of investment in making the filesystem fast in and of itself, and caching hot files intelligently. Ongoing runs on a very basic VPS and stands up to the load when something I write catches fire and gets fetched a few hundred thousand times. Because static files.

Anyhow, static files, but the production process depends crucially on MySQL, ImageMagick, and many big ol’ Perl libraries. Getting all this software to work together is dead easy on the Debian box, but a major pain in the butt on my Mac. For many years I was depending on Homebrew, but recently switched to MacPorts, which has less trouble getting Perl to play nice with MySQL.

The layout tries pretty hard to be good clean CSS; the original 2003 version, stolen from the best, namely Eric Costello and Tantek Çelik, survived until 2011; an intermediate big step is described in Reflowing. Well, except then I figured out how to expand pix into the left margin because size matters. But eventually I gave up on mastering modern CSS without being a serious student and in 2023 paid someone to fix mine.

Also, there's a DOCTYPE declaration that claims the output is XHTML 1.1 and the W3C validator seems to agree, so to the extent that’s virtuous, so is ongoing.

I've got it all terribly automated so I can start a new entry, proof an entry, and publish it to the website with single key-chords in Emacs; I recognize lots of people wouldn't be OK with that.

On the "pro" side I can type in any HTML weirdness that strikes my fancy, which might be a "con" except for the XML processor in the pipeline helps keep me honest.

Header Graphics · Occasionally I get mail asking “what’s that picture behind the title?

Header graphic: Big Island sunset detail

Hawai’ian sunset from a Big Island mountainside.

Header graphic: Regina amaryllis detail

Detail of an amaryllis blossom in Regina, Saskatchewan’s city conservatory.

Header graphic: Toronto skyline from the     airport, spot the CN Tower

Toronto skyline from the airport; spot the CN Tower.

Header graphic: Sake bottle detail

Detail of a sake bottle.

Header graphic: leaves

Leaves.

Header graphic: Oxford English Dictionary plate        detail

Detail of one of the plates used to print the original 1928 version of the Oxford English Dictionary.

Header graphic: Koper-Capodistria door detail

Detail of a door in the old town in Koper-Capodistria.

Header graphic: English countryside detail

Wiltshire countryside under clouds.

Header graphic: Bodleian library courtyard           detail
Header graphic: Makuhari Prince hotel            detail

The side of the Makuhari Prince hotel, not far from the beach.

Header graphic: Moss on a tree

Close-up of springtime moss on a tree-side.

Header graphic: Brick storefront on Main Street           detail

Sunlit brick storefront on Vancouver’s Main Street.

Header graphic: seawater.

Ocean waves.

Header graphic: Vancouver sunset detail

Vancouver sunset.

Header graphic: Jellybean slide scan detail

Old scanned 35mm slide of some jellybeans.

Header graphic: Trans-Canada highway in Coquitlam          detail

Trans-Canada highway in Coquitlam, shot from moving car heading west and home.

Header graphic: Book binding detail

Binding of an old book.

Header graphic: Pansies at Murray’s detail

Pansies at Murray’s.

Header graphic: Rose shot with the then-new Canon S50 detail

Rose shot with the then-new Pentax S50.

Header graphic: Red sunset clouds detail

Detail, red sunset clouds.

Header graphic: Mom’s carpet detail

This is the first header graphic ongoing ever had. It’s a close-up of a piece of oriental carpet in my Mom’s collection. For the first couple of years after launch, it was tiled across the top, until I got tired of looking at the same thing all the time; and it’s still the basis of the little diamond-shaped ongoing icon that might be appearing right now in your browser’s address bar.

Header graphic: Fourth Ave. in Vancouver        detail

Shot through the windshield on Vancouver’s Fourth Avenue.

Header graphic: Fireworks at the ballpark       detail

Fireworks at the ballpark.

Header graphic: Shingles at #3 West 19th      Ave. detail

Shingles on the old house at #3 West 19th Ave., Vancouver, in a eulogy for the old Canon S50.

Header graphic: Vancouver slug detail

Extreme close-up of Vancouver wildlife, caught in motion.


author · Dad
colophon · rights
Random image, linked to its containing fragment

By .

The opinions expressed here
are my own, and no other party
necessarily agrees with them.

A full disclosure of my
professional interests is
on the author page.

I’m on Mastodon!