How to add a post to this site
This post exists so you can see what the formatting looks like when it renders, and so you have something to copy when you write your first real article. Delete it whenever you like — remove content/blog/2026-06-15-how-to-post.md and rebuild.
The three steps
- Create a new file in
content/blog/namedYYYY-MM-DD-a-short-slug.md. - Write it (front matter first — see below).
- Run
python3 build.py, then commit and push. The site rebuilds and deploys itself within a minute or so.
Front matter
Every post starts with a small block between two --- lines:
---
title: Nobody reads your alerts
date: 2026-08-10
description: One sentence that appears on the blog index and in Google results.
tags: [detection, soc]
draft: false
---
title, date and description are the ones that matter. Set draft: true to keep a post out of the built site while you work on it. The URL comes from the filename, with the date stripped off — so the file above becomes /blog/nobody-reads-your-alerts/ if you name it 2026-08-10-nobody-reads-your-alerts.md.
Formatting that works
Regular paragraphs need no special treatment. Bold, italic, inline code and links all behave as you'd expect. External links open in a new tab automatically.
Lists
- Bullet points, one per line
- Nested content is best kept flat
- Short lines read better than long ones
- Numbered lists work the same way
- Useful for procedures and runbooks
Code blocks
Fence them with three backticks. A language name after the opening fence is optional:
import hashlib
def sha256(path):
digest = hashlib.sha256()
with open(path, "rb") as handle:
for chunk in iter(lambda: handle.read(65536), b""):
digest.update(chunk)
return digest.hexdigest()
Tables
| Field | Purpose | Required |
|---|---|---|
title | Shown as the headline | Yes |
date | Sort order and display date | Yes |
description | Index card and meta description | Recommended |
tags | Small labels on the card | Optional |
Quotes
Useful for pulling out a finding, a definition, or a line from an advisory that you want to sit apart from your own text.
Images
Put the file in static/ and reference it as /assets/filename.png:

Always write real alt text. It matters for screen readers, and it's what displays if the image fails to load.
A note on what to write
The posts that do the most for a personal site are the ones only you could write: something you debugged, something that surprised you, a process you worked out because the documentation didn't cover it. Those are also the easiest to write, because you already know the material.
Publishing something imperfect regularly beats polishing something perfect indefinitely.