Markdown field notes

Before publishing anything substantial here, I wanted to see what the formatting pipeline actually does with everyday markdown. Astro’s native pipeline handles GitHub-flavored markdown out of the box, so everything below is plain text — no plugins, no MDX, no embedded components.

Headings and rhythm

Headings are the skeleton of a post. Two levels are usually enough; three means the post probably wants to be two posts.

Lists, ordered and otherwise

Shopping-list thoughts belong in bullets:

  • Plain text survives every editor, OS, and decade
  • Diff-friendly: a one-word edit is a one-line diff
  • Portable: any future CMS can import these files

When sequence matters, number them:

  1. Write the words
  2. Add frontmatter (title, description, date, tags)
  3. Run the build
  4. Ship it

Quoting

Markdown is intended to be as easy-to-read and easy-to-write as is feasible.

— John Gruber, Markdown: Syntax

Code

Inline code like bun run build gets a quiet monospace treatment. Fenced blocks get real syntax highlighting at build time — again, zero runtime cost:

# install dependencies and produce ./dist
bun install
bun run build

JavaScript highlights too:

// Every page on this site is generated from loops like this one
const posts = await getCollection('blog');
const sorted = posts.sort((a, b) => b.data.pubDate - a.data.pubDate);
console.log(`${sorted.length} posts ready`);

Tables

Thing Ships as Weighs
This post Static HTML ~10 KB
Dark mode CSS media query 0 KB JS
RSS feed /rss.xml 0 KB JS

Small print

Horizontal rules separate moods, emphasis whispers, bold insists, and links do the heavy lifting. That’s the whole vocabulary — and honestly, it’s enough for most of what anyone needs to say.