All writing

Hello world

A sample post that shows how posts render on this site. It will be replaced.

This is a sample post. It shows how each part of a post renders on this site, from the title and date down to the footnotes, and it will be replaced by a real post.

It says nothing about security, GRC or GenAI. Each section below uses one kind of element, so the page doubles as a visual test.

A paragraph of body text sits at a comfortable line length. It can hold a link to the home page, some bold text, a little italic text and inline code. A keyboard shortcut looks like Ctrl + K.

A sidenote adds an aside without breaking the flow of the paragraph it belongs to. On a wide screen it sits in the right margin; on a narrow one it appears as a box in the text.Sidenote: This is a sidenote. It holds a short aside that would clutter the main text.

Lists

An unordered list:

  • The first item in a list
  • A second item, long enough to wrap onto another line on a narrow screen so the indent shows
  • A third item
  • A bold lead-in. Then a short line.

An ordered list:

  1. Write the post as an MDX file
  2. Commit it and push
  3. Read it on the site

Code

A code block with a file name shows the name in its window bar. Every code block has a copy button.

src/lib/reading-time.ts
const WORDS_PER_MINUTE = 230;
/** Minutes to read `text`: words / 230, rounded up, at least 1. */
export function readingTime(text: string): number {
const words = text.split(/\s+/).filter(Boolean).length;
return Math.max(1, Math.ceil(words / WORDS_PER_MINUTE));
}

A code block without a file name shows its language instead:

bash
pnpm install
pnpm dev

Long lines

A long line scrolls inside its block rather than widening the page:

text
This line is deliberately long so that it runs past the edge of the code block on a narrow screen and has to scroll sideways.

Callouts

Callouts come in four types. Each one has an icon and a label.

Figures and tables

A figure is an image with a caption, in an outlined card.

Diagram of three boxes joined by arrows: an MDX file named index.mdx, then the astro build step, then the output page index.html.
A post starts as an MDX file, and the build turns it into an HTML page.

A table scrolls sideways on a narrow screen:

Element Written as Rendered as
Heading ## Heading A heading with an anchor link
Callout <Callout type="tip"> A coloured box with an icon and a label
Sidenote <Sidenote> A note in the margin, or a box in the text
Footnote [^1] A numbered note at the end of the post

Quotes and footnotes

A blockquote renders as a pull quote:

A pull quote repeats one line from the post in large type.

A footnote marker sits in the text1 and links to its note at the end of the post. Each note links back to its marker.2

Footnotes

  1. This is the first footnote. ↩

  2. This is the second footnote. It is a little longer, to show how a footnote wraps. ↩