Blog · September 30, 2026 · 2 min read

Placeholder: a tour of the post template.

A sample post that uses every piece of the blog's template, so you can see how each one looks before writing a real post. Delete it once it has served its purpose.

The mark in coral, with cream echo lines spreading out from it and from a typed page.

This is a placeholder. It exists to show every element the blog template can style, in the order a real post might use them. The first paragraph of every post is set a size larger, like the first line on a fresh sheet.

Everything below is ordinary Markdown. The few extras (callouts, pull quotes, figures) use small conventions that are listed as they come up, so this file doubles as a reference for whoever writes the next post.

Headings get the full stop

Second-level headings are set in the logo’s face and end in the coral full stop, like every heading on the site. Use them for the sections of a post.

Third-level headings stay quiet

They are smaller and have no full stop, for the odd subsection.

Body text is Besley, the editor’s default face. It supports italics, bold, strikethrough, links to other pages, and inline code. Keyboard shortcuts can be written as Ctrl + S.

A longer block of code sits on the dark slot the home page uses for ciphertext:

// Anything in a fenced block keeps its spacing exactly.
const draft = await open('chapter-14.md');
draft.save({ encrypted: true });

Lists

  • Bulleted lists take a teal marker.
  • They wrap naturally when an item runs past the end of a line and onto the next one.
  • Keep them short.
  1. Numbered lists work the same way.
  2. Use them when order matters.

Callouts

Write a callout by fencing a few lines with three colons and a name. The text in square brackets becomes its title; leave it off and the title is simply “Note” or “Warning”.

Pull quotes

A line lifted out of the text is written between :::pull and :::. It is set big, in the logo’s face, hung from a thick rule.

Simple by default, complex by choice.

An ordinary quotation, for someone else’s words, is a plain Markdown blockquote:

The Selectric had a single job and no ambitions beyond it.

Figures

An image on its own line becomes a figure. Put a caption in quotes after the file name, and it is printed underneath:

A sketch of the editor, with a binder of pages on the left and a ruled page on the right.
The editor, drawn at its simplest: a binder of pages and the page you are on.

Images live next to the posts in src/content/blog/images/. Astro resizes them at build time.

Tables

Tables are drawn as a ledger, like the comparison on the home page:

Element Written as
Callout :::note[Title] … :::
Warning :::warning[Title] … :::
Pull quote :::pull … :::
Figure ![Alt](./image.png "Caption")

Footnotes

Footnotes are collected at the end of the post.1 They are numbered in teal and each one links back to where it was cited.


A horizontal rule, written as three hyphens, becomes a typed row of asterisks, the old manuscript mark for a scene break.

Footnotes

  1. Like this one. ↩

Now, the only thing stopping you is writer's block.

The demo is the full app. It just can't save your work.