[{"content":"A reminder to myself, since I will forget.\nCreate the post mise run post -- \u0026#34;My new post\u0026#34; That slugifies the title into a filename, copies archetypes/default.md into content/posts/my-new-post.md, and writes the title back verbatim, so punctuation and Dutch capitalisation survive. Pass --slug when the derived slug is unwieldy.\nFront matter --- title: \u0026#34;Writing a post\u0026#34; date: 2026-08-01T14:30:00Z draft: false summary: \u0026#34;Shown on the index pages.\u0026#34; tags: [\u0026#34;hugo\u0026#34;] --- Only title and date are required. summary overrides the auto-generated excerpt on the home and section pages; tags render as pills under the title.\nAdd a Dutch version Translations sit next to the English file with a language suffix, and get a Dutch slug so the URL reads properly too:\nmise run post -- \u0026#34;Mijn nieuwe bericht\u0026#34; --lang nl That writes content/posts/mijn-nieuwe-bericht.nl.md and sets the slug, so it publishes to /nl/berichten/mijn-nieuwe-bericht/. A post without a translation simply does not appear in the other language.\nPreview it mise run dev This serves the site at http://localhost:1313 with live reload, and includes drafts. Flip draft to false, commit, and open a pull request. CI builds the site and comments a Cloudflare preview URL on the PR. Merging to main publishes it.\n","permalink":"https://scratchpad.ravensberg.org/posts/writing-a-post/","summary":"The commands needed to add a post to this site, how the front matter works, and how translations fit in.","title":"Writing a post"},{"content":"Every few months I solve something, feel clever about it, and then forget the details entirely. This is the fix: a scratchpad.\nWhy a scratchpad, and not a blog The label matters more than it should. The moment something is A Blog Post, I want it to be complete: a proper introduction, a tidy conclusion, a diagram, one more read-through before it goes out. That standard is reasonable for a long-form article. It is a bad fit for \u0026ldquo;here is the flag that fixed it\u0026rdquo;.\nCalling this a scratchpad sets the expectation differently, for whoever reads it, and mostly for me. An entry here can be three paragraphs and a command that happened to work. It can be informal, it can be opinionated, and it can be superseded next month. Nothing needs to be the definitive word on anything; it just needs to be written down.\nSo the format is deliberately freestyle. If a post occasionally reads like a note to myself, that is the point.\nThe stack, and why it is boring The whole point of this site is that it should still build in five years without much attention. That ruled out most of the fun options.\nHugo, a single static binary. It renders Markdown to HTML and does nothing else. It arrives via the hugo-extended npm package, so there is no separate toolchain to install. PaperMod, pulled in as a Hugo Module rather than a vendored copy or a git submodule. The theme is pinned in go.mod, so Renovate bumps it like any other dependency. No JavaScript of my own. Nothing to bundle, nothing to patch. That last point is the one I care about. I have had a Hugo theme go unmaintained before, and digging a vendored theme out of a repository years later is miserable. Treating the theme as a tracked dependency means I find out when it stops moving, instead of discovering it the next time Hugo changes an API.\nDeployment Pushing to main triggers a GitHub Actions workflow that builds the site and runs wrangler pages deploy against Cloudflare Pages. Pull requests get their own preview URL, posted back as a comment. Both come from a reusable workflow shared across my repositories, so this repo only holds the configuration.\nSecurity headers live in static/_headers, which Cloudflare applies at the edge, no server to configure.\nWhat goes here Short notes about infrastructure, security and automation, mostly the kind of thing I would otherwise have to rediscover from a stale browser tab.\n","permalink":"https://scratchpad.ravensberg.org/posts/hello-scratchpad/","summary":"Why this is a scratchpad rather than a blog, and the deliberately boring stack behind it.","title":"Hello, scratchpad"},{"content":"I\u0026rsquo;m Jean-Paul van Ravensberg. This is my scratchpad: short write-ups about things I ran into while working on infrastructure, security and automation.\nThe site is built with Hugo using the PaperMod theme, and is deployed to Cloudflare Pages straight from GitHub.\n","permalink":"https://scratchpad.ravensberg.org/about/","summary":"\u003cp\u003eI\u0026rsquo;m Jean-Paul van Ravensberg. This is my scratchpad: short write-ups about\nthings I ran into while working on infrastructure, security and automation.\u003c/p\u003e\n\u003cp\u003eThe site is built with \u003ca href=\"https://gohugo.io/\"\u003eHugo\u003c/a\u003e using the\n\u003ca href=\"https://github.com/adityatelange/hugo-PaperMod\"\u003ePaperMod\u003c/a\u003e theme, and is\ndeployed to Cloudflare Pages straight from\n\u003ca href=\"https://github.com/DevSecNinja/scratchpad\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e","title":"About"}]