This is a personal blog and portfolio website built with Jekyll using the Minimal Mistakes theme, deployed to GitHub Pages.
Run the Jekyll site locally with drafts and live reload in Docker:
docker run --rm \
--volume="$PWD:/srv/jekyll:Z" \
--publish 4000:4000 --publish 35729:35729 \
jekyll/jekyll \
jekyll serve --draft --livereload
The site will be available at http://localhost:4000.
bundle install
_posts/ — Published blog articles with front matter (YAML metadata)_drafts/ — Unpublished work-in-progress content (not rendered in production)_pages/ — Static pages like About, Blog, Articles, Talks (included in site build via include in _config.yml)_includes/ — Reusable HTML snippets (currently overrides theme components like author profile)_layouts/ — Custom layout templates (e.g., talk.html for talk pages)_talks/ — Talk collection with custom renderingassets/ — Images, CSS, and other static assets_config.yml — Jekyll configuration including theme, plugins, and defaultsUses Minimal Mistakes v4.24.0 (remote theme) with the “contrast” skin. Customizations are minimal and loaded via jekyll-remote-theme.
jekyll-remote-theme — Load theme from GitHubjekyll-sitemap — Auto-generate XML sitemapjekyll-paginate — Pagination for blog archivesjekyll-seo-tag — SEO meta tagsjekyll-feed — RSS feed generationjekyll-include-cache — Performance optimization for includesFile format: _posts/YYYY-MM-DD-slug.md
Front matter example:
---
title: Article Title
excerpt: Brief summary shown in blog archives
tags:
- tag1
- tag2
toc: true
---
<!-- more -->single with read time and sharing enabledStatic pages (About, Blog, Articles, etc.) use layout: splash or single. Include permalink: to control URL structure. They must be listed in _config.yml under include: - "_pages" to be rendered.
Create markdown files in _talks/ directory. The custom layout talk.html is automatically applied (defined in _config.yml defaults).
Automatically deploys to GitHub Pages on every push to main branch. The workflow:
_site/ directoryView workflow: .github/workflows/jekyll.yml
Always test locally with the Docker command above. Verify:
_config.yml highlights:
timezone: Europe/Amsterdam — Blog post timezonepermalink: /:categories/:year/:month/:day/:title — URL slug formatsass.style: compressed — CSS minificationtag_archive.path: /tags/ — Tag page locationG-19Y7T9TVQW_posts/YYYY-MM-DD-slug.mdmainSame as above but use _drafts/ instead of _posts/. It will render locally with --draft flag but not in production.
_includes/ (currently has author-profile-custom-links.html)_config.yml (collections, front matter defaults, etc.)Edit Gemfile or remote_theme in _config.yml. Run bundle install locally to test.
jekyll/jekyll)package.json, used if needed for asset pipeline)