Colophon
How this site is made, what powers it, and the principles behind it.
Stack
base, layout, article, home, archive, components, and print stylesheets. No preprocessors, no Tailwind. #080a09), muted green accent (#8ed957), built with custom properties. Dark mode only. blog-comments repository. og-default.svg. Principles
- No third-party tracking. No analytics, no cookies, no fingerprinting. I don't know who visits.
- Static first. Every page is a pre-rendered HTML file. No server, no database, no API at request time.
- No JavaScript required. The content is readable with JS disabled. Interactive elements (search, code copy, link previews) are progressive enhancements.
- Self-hosted assets. Fonts, icons, and search index are served from the same domain. The only external request at runtime is Giscus for comments, loaded lazily.
- Readable offline. Print stylesheet strips chrome and preserves content.
- Content longevity. URLs are stable. Slugs don't change. Old posts are updated with corrections and version notes rather than replaced silently.
Writing toolchain
I write posts in Obsidian on NixOS, with niri as the Wayland compositor. Posts are Markdown files with YAML frontmatter, versioned in Git alongside the site code.
The content lives in src/content/blog/, one .md file per post. The frontmatter schema requires title, description, draft, type, tags, and date at build time.
History
This blog has gone through five iterations:
2019
A prototype on ricardof.dev, probably built with Hugo. Portuguese-only, with a few articles and a projects section. Source code lost.
2022
Built with Jekyll, deployed to GitHub Pages at blog.ricardof.dev. Minimalist layout, mostly in Portuguese with some posts in English.
2024
Posts lived directly in Obsidian, published with the Digital Garden plugin (Eleventy under the hood). Translated remaining Portuguese posts to English.
Early 2026
An Obsidian vault published with Quartz. Kept the Obsidian workflow but added backlinks, graph view, and callout rendering.
Mid 2026
Migrated to Astro for finer control over layout, performance, and the content pipeline. This is the current version.