Welcome — how this blog works
A quick tour of the writing features available on this site: callouts, syntax highlighting, copy buttons, a table of contents and more.
This post exists to show what Markdown authoring on this site can do. Drop a new
.md file into src/content/writeups/, fill in the frontmatter, and it appears
in the blog index automatically.
Frontmatter
Every post starts with a small block of metadata:
---
title: "Your title"
date: 2026-09-05
category: "CTF Writeups" # OSCP Notes | CTF Writeups | Notes | anything new
tags: ["web", "idor"]
summary: "One or two sentences shown on cards and in search."
cover: ./cover.png # optional
draft: false # true hides it from production builds
---
Adding a new category takes nothing more than typing it — the index picks it up.
Code with syntax highlighting
Fenced code blocks are highlighted at build time (zero client JS) and get a copy button on hover. Several languages render out of the box:
# recon one-liner
ffuf -u https://target/FUZZ -w wordlist.txt -mc 200,301,302 -t 60
import requests
def check(host: str) -> int:
r = requests.get(f"https://{host}/health", timeout=5)
return r.status_code
Get-ChildItem -Recurse -Filter *.kdbx | Select-Object FullName
Callouts
Use GitHub-style alerts for emphasis:
NOTE
This is a note. Good for context or side information.
TIP
A tip — a shortcut or a better way to do something.
WARNING
A warning — something that can bite you.
CAUTION
A caution — destructive or dangerous actions.
Headings become a table of contents
Any ## and ### heading is collected into the sticky table of contents on the
right (on wide screens) and highlights as you scroll.
A sub-heading
Reading time is estimated automatically from the word count, and previous/next links appear at the bottom to move between posts.
Wrapping up
That is the whole authoring surface. Write Markdown, commit, and the site does the rest.