Jekyll-based personal programming blog hosted on GitHub Pages at blog.danskingdom.com. Uses the Minimal Mistakes theme with extensive customizations. Migrated from WordPress in 2019 (posts before this have additional front matter).
remote_theme: mmistakes/minimal-mistakes@4.27.3 pinned to specific version for stability# Use VS Code task "Create new blog post" OR:
./Scripts/NewBlogPost.ps1
_drafts/ with filename YYYY-MM-DD-Sanitized-Title.mdassets/Posts/YYYY-MM-DD-Sanitized-Title/# Use VS Code task "Rename blog post" OR:
./Scripts/RenameBlogPost.ps1
# Standard (drafts not shown):
bundle exec jekyll serve --livereload
# With drafts:
bundle exec jekyll serve --livereload --draft
# Production mode (enables ads/comments):
# PowerShell:
$Env:JEKYLL_ENV='production'; bundle exec jekyll serve
# Bash:
JEKYLL_ENV=production bundle exec jekyll serve
--incremental for faster builds (but skips site-wide changes like layout/styles)---
title: "Post Title With Capitals"
permalink: /Post-Title-With-Capitals/
#date: 2099-01-15T00:00:00-06:00 # Uncomment when publishing
#last_modified_at: 2099-01-22 # Optional
comments_locked: false
toc: false # true for long posts
categories:
- Category Name
tags:
- Should all
- Start with
- Capitals
---
/assets/Posts/YYYY-MM-DD-Post-Title/image-name.pngLine numbers in code: Use Liquid syntax instead of backticks:
```liquid
1
2
Your code here
- __Markdown__: Use standard markdown syntax.
Avoid HTML unless necessary.
Use underscores for emphasis, not asterisks.
## Customization Patterns
### Finding customizations
Search for `Dan's Customizations` to find all theme overrides. Custom files use __PascalCase__ naming; theme overrides use __lowercase-kebab-case__.
### Key overridden files (see [ReadMe.md](/ReadMe.md) for full list)
- [_includes/analytics-providers/google-gtag.html](/_includes/analytics-providers/google-gtag.html): Cookie consent wrapper
- [_includes/footer/custom.html](/_includes/footer/custom.html): Donations, advertisements
- [_includes/masthead.html](/_includes/masthead.html): Light/dark mode toggle
- [_layouts/default.html](/_layouts/default.html): Cookie notice, custom scripts
- [_layouts/single.html](/_layouts/single.html): Ads above/below post content
### Custom code location
All custom components in `_includes/_DansCustomFiles/`:
- CookieNotice.html
- DonationButtonAndModal.html
- MicrosoftClarityAnalytics.html
- RunThirdPartyCodeThatUsesCookies.js
## Theme Updates
When updating `remote_theme` tag in [_config.yml](/_config.yml):
1. Find latest stable tag from [theme changelog](https://github.com/mmistakes/minimal-mistakes/blob/master/CHANGELOG.md)
1. Update `remote_theme` to new tag
1. Checkout theme repo at that tag
1. Search this repo for `Dan's Customizations`
1. Copy updated code from theme while preserving customization blocks
1. Test locally, commit changes
## Environment Setup
### DevContainer (recommended)
Open repo in VS Code with DevContainer support—automatic setup via [.devcontainer/devcontainer.json](/.devcontainer/devcontainer.json).
### Manual setup (Windows)
1. Install [Ruby + Devkit v3.3](https://rubyinstaller.org/downloads/) with MSYS2
2. `gem update --system`
3. Handle SSL issues if needed (see [ReadMe.md](/ReadMe.md) for Cisco Umbrella Root CA fix)
4. `gem install jekyll bundler`
5. `bundle install`
### Keeping dependencies updated
```bash
bundle update # Update all gems periodically
_posts/YYYY-MM-DD-title.md (published)_drafts/YYYY-MM-DD-title.md (not shown unless --draft flag)assets/Posts/YYYY-MM-DD-title/_pages/*.md (About, Privacy, Kudos, etc.)_data/comments/ (Staticman-generated YAML files)