Markdown Kitchen Sink
A quick sanity-check post. If everything renders correctly, you're good to ship.
Headings
H1 — The Big One
H2 — Section Header
H3 — Subsection
H4 — Sub-subsection
H5 — Getting Small
H6 — Whisper Level
Paragraphs & Inline Formatting
This is a normal paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
This is bold text, this is italic text, and this is bold and italic. You can also use strikethrough for things you regret writing. Inline code snippets look like this.
Here's a link to the Go docs and a relative link to another post.
Blockquotes
"The best way to get a project done faster is to start sooner." — Someone on the internet, probably
Nested blockquotes:
Outer quote — setting the scene.
Inner quote — things are getting philosophical.
Lists
Unordered
- Goldmark for markdown parsing
- Chroma for syntax highlighting
- Templ for type-safe templates
- HTMX for hypermedia interactions
- Nested item one
- Nested item two
- Doubly nested
Ordered
- Install Go
- Write some handlers
- Parse some markdown
- Deploy somewhere cheap
- Tell nobody and hope they find it
Task List
- [x] Set up project structure
- [x] Configure Goldmark
- [x] Add Chroma highlighting
- [ ] Write actual blog posts
- [ ] Convince people to read them
Code Blocks
Go
1package main
2
3import (
4 "fmt"
5 "net/http"
6)
7
8func main() {
9 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
10 fmt.Fprintln(w, "Hello, blog!")
11 })
12
13 fmt.Println("Listening on :8080")
14 http.ListenAndServe(":8080", nil)
15}
JavaScript
1document.addEventListener("DOMContentLoaded", () => {
2 const posts = document.querySelectorAll(".post-card");
3
4 posts.forEach((card) => {
5 card.addEventListener("click", (e) => {
6 console.log("Navigating to:", e.currentTarget.dataset.slug);
7 });
8 });
9});
HTML
1<!DOCTYPE html>
2<html lang="en">
3 <head>
4 <meta charset="UTF-8" />
5 <title>My Blog</title>
6 </head>
7 <body>
8 <main>
9 <h1>Hello, world</h1>
10 </main>
11 </body>
12</html>
CSS
1:root {
2 --color-bg: #0f0f0f;
3 --color-text: #e2e2e2;
4 --color-accent: #7c6af7;
5}
6
7body {
8 background-color: var(--color-bg);
9 color: var(--color-text);
10 font-family: "Inter", sans-serif;
11 line-height: 1.7;
12}
Bash
1# Build and run
2go build -o ./bin/blog ./cmd/blog
3./bin/blog
4
5# Or just
6go run main.go
Plain text (no highlighting)
This is plain preformatted text.
No highlighting. Good for logs,
config files, or raw output.
Tables
| Feature | Supported | Notes |
|---|---|---|
| Tables | ✅ | Via Goldmark extension |
| Syntax highlighting | ✅ | Via Chroma |
| Task lists | ✅ | Via GFM extension |
| Footnotes | ✅ | If extension enabled |
| Raw HTML | ⚠️ | Disabled by default in Goldmark |
Horizontal Rules
Three ways to write them, all should render the same:
Images
Image with a title attribute (hover text):
Footnotes
Goldmark supports footnotes if you enable the extension.1 They're great for asides that would interrupt the flow.2
Hard Line Breaks
This line ends with two trailing spaces
so this should be on a new line without a paragraph gap.
HTML Passthrough
If you've enabled raw HTML in Goldmark, this should render as a styled element:
This text should be highlighted — if raw HTML is allowed.
Edge Cases
Empty-ish content below a heading — make sure spacing holds up.
A heading with no text (bad practice, but shouldn't explode).
Very long unbroken word to test overflow: superlongidentifierthatmightcauseoverflowissuesifyouarenotcareful_v2_final_FINAL.
Unicode: 日本語テスト • Ünïcödé • العربية • 中文 • Ελληνικά
Emoji: 🚀 🦫 🧪 ✅ 🎯
If everything above looks right — headings, code blocks with highlighting, tables, lists, blockquotes, images, and footnotes — your markdown pipeline is solid.