Built With #
This site is built using Eleventy (v3.1.2), a powerful static site generator. The source code is kept in a local Git repository.
Key features and plugins:
- Syntax highlighting with Prism via @11ty/eleventy-plugin-syntaxhighlight
- RSS/Atom feeds and JSON Feed via @11ty/eleventy-plugin-rss
- Responsive image optimization with @11ty/eleventy-img
- External link security (automatic
rel="noopener noreferrer") with visual indicators - JSON-LD structured data for better SEO
- WCAG 2.1 Level AA accessibility compliance
Hosting #
The site is hosted on a Capsul VPS running Debian. The web server is Caddy, which handles HTTPS automatically.
I use Porkbun as my DNS registrar.
Design & Theme #
The design follows a brutalist minimalism philosophy—focusing on readability, accessibility, and semantic structure over decorative elements.
Design principles:
- Custom CSS with no frameworks or dependencies
- System fonts for zero latency and familiarity
- AAA color contrast ratios in both light and dark modes
- Semantic HTML5 with proper landmarks and ARIA labels
- Responsive design with a mobile-first approach
- Skip links, focus indicators, and keyboard navigation support
Typography, spacing, and layout are intentionally minimal to put the emphasis on content.
Content Workflow #
Posts are written in Markdown and version-controlled with Git. I write and edit posts locally using a combination of Typora and Visual Studio Code.
I write drafts as plain markdown files in a local folder. When a post is ready, npm run prep-post prompts for metadata (description, date, tags), converts images to optimized shortcodes, and moves everything to its final location. From there, npm run publish builds the site and deploys it.
Build and deployment:
npm run prep-post # Import draft, add metadata, optimize images
npm run publish # Build with Eleventy and rsync to production
npm run syndicate # Cross-post to Mastodon and Bluesky
Links I share via Pinboard are automatically pulled into the site and published via a cron job on my workstation. No CMS, no database, no SaaS-hosted build process—just text files, rsync, and a web server.
Content #
Beyond blog posts, the site includes a book log, watch log, and links for sharing interesting things I've found on the web. Each has its own dedicated feed.
Feeds #
Subscribe to updates via Atom or JSON Feed:
| Feed | Atom | JSON |
|---|---|---|
| Everything (firehose) | /feed.xml | /feed.json |
| Posts only | /posts/feed.xml | /posts/feed.json |
| Books only | /books/feed.xml | /books/feed.json |
| Watching only | /watching/feed.xml | /watching/feed.json |
| Links only | /links/feed.xml | /links/feed.json |
Each feed includes the 10 most recent entries with full content.
Analytics #
This site uses Fathom Analytics, a privacy-focused analytics platform that doesn't use cookies or track individual users. It provides simple, anonymous traffic insights without collecting personal data or compromising your privacy.
I use Fathom to understand which pages are being read and where visitors come from, so I can improve the site without invading anyone's privacy.
Revisions #
- 2026-04-09 - Remove Codeberg reference; source code is kept in local Git repos only
- 2026-04-05 - Migrate hosting back to Capsul.org from Hetzner VPS
- 2026-04-03 - Simplify post workflow: single-step import from ~/Documents/Drafts/ with metadata prompts, image optimization, and syndication fields
- 2026-02-21 - Migrate hosting from Capsul.org to Hetzner VPS, update content workflow and feeds sections
- 2026-02-14 - Add book log, watch log, content-specific feeds, and social cross-posting
- 2026-02-12 - Major redesign: brutalist minimalism theme, accessibility improvements, external link indicators, Prism syntax highlighting, feeds, and improved build workflow
- 2025-01-31 - Remove Buttondown and EchoFeed from content workflow section