Testing the pipes — a formatting tour of thought sandboxes
A kitchen-sink walk through everything this renderer can do — headings, code, tables, task lists, Obsidian embeds — doubling as the first post that ever left the vault.
This is the first post to flip hide: false and leave the vault, so it has one job: exercise every pipe between an Obsidian note and the page you're reading. Everything below is written in plain markdown in my vault, pushed to a private repo, and rebuilt into this site in about a minute — the same machinery described in the site's source.
If you're reading this in dark mode you're in the book; press t and the same document relights as paper. That's not two designs — it's one sheet under different light.
Text, the basic food groups
Emphasis comes in italic, bold, and both at once; struck-through regrets survive the trip too. Inline code like getPosts() and hide: false sinks back to the terminal ground, which is the one place the mux is allowed to bleed through the prose.
Links follow the site's rules: a link whose text names its destination, like harness.nz, opens directly in a new tab — but an ambiguous one, like the lab that taught me humility, asks before it takes you anywhere.
Blockquotes get the accent rule. Good for the sentence you want to argue with later — past me writes them, future me collects them.
Lists of every temperament
Unordered, with nesting:
- the portfolio surface — five workspaces, one session
- the sandbox surface — this one
- drafts stay in the vault (
hide: true) - published posts get rebuilt into static HTML
- drafts stay in the vault (
- attachments ride along only when their post is published
Ordered, for when sequence is the point:
- write in Obsidian
- flip
hide: false git push- wait roughly one deploy
And the task list, straight from GFM:
- headings feeding the outline in the sidebar
- code blocks on the terminal ground
- an image embedded with Obsidian wikilink syntax
- a reader who made it to the end
Code keeps its accent
// the entire draft contract, more or less
export function getPosts(includeDrafts = process.env.SHOW_DRAFTS === "1") {
return readVault("posts")
.filter((p) => includeDrafts || !p.hide)
.sort((a, b) => b.date.localeCompare(a.date));
}
Tables speak mono
| pipe | source | verdict |
|---|---|---|
| frontmatter | YAML block up top | parsed |
| wikilinks | ![[file.png]] |
resolved from attachments/ |
| task lists | GFM | rendered |
| drafts | hide: true |
never leave the vault |
Images cross over from the vault
The embed below is Obsidian syntax — ![[wikilinks]] with a caption — resolving against the vault's attachments folder. This one is a render from my NASA MODIS wildfire visualization work, plotted onto a globe in Maya:

And when a wikilink points at something that never got pasted into the vault, the renderer refuses to pretend — this broken reference is here on purpose:
That's the tour. The pipes hold. Everything after this post is just writing.
-- ibraheem amin · 518 words --