Skip to content
Daniel Schroeder's Programming Blog - Sharing my tips, tricks, and code to help other developers be more productive
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode Display drafts when running locally Aug 17, 2019
_data New comment by Kevin Severud Sep 9, 2019
_drafts Update draft template a bit Aug 18, 2019
_includes Put a bit of padding between advertisements and footer content Aug 10, 2019
_pages Update to use markdown syntax consistent with posts Jun 9, 2019
assets Update my draft post a bunch more Aug 17, 2019
.gitignore Remove entry I added to the .gitignore file, as it's no longer needed May 19, 2019
Gemfile Add some comments Apr 28, 2019 Update ReadMe to show how to show line numbers in code blocks Sep 8, 2019 Update ToDo Aug 18, 2019
ads.txt Add ads.txt file so AdSense recognizes this site as authorized Jun 13, 2019
index.html Initial clone of Apr 28, 2019
staticman.yml Update encrypted secret to be the proper value Aug 10, 2019

Daniel Schroeder's Programming Blog

This repository was initially cloned off of Minimal Mistakes GitHub Pages Starter, and then updated with my content and configuration.

I currently use the Minimal Mistakes theme. View the documentation.

Running Jekyll locally


  1. Install Ruby, as well as have it install MSYS2 after installation.
    • Use ruby -v to see which version is installed.
  2. Install the Jekyll gem using gem install jekyll bundler
    • Use jekyll -v to see which version of jekyll is installed.

Run Jekyll locally

To run Jekyll locally, from the site directory run bundle exec jekyll serve. Include the --incremental (or -I) parameter to do faster incremental builds.

Some features are only enabled for production builds (e.g. comments, advertisements). To build in production mode, use JEKYLL_ENV=production bundle exec jekyll serve -I. Also, it doesn't seem to work from PowerShell or Cmd; you must run it from Bash.

If you've written a draft post in the _drafts directory and want it to show up on the site, use jekyll serve --draft to start Jekyll.

Jekyll typically runs locally at

Keeping up to date

To ensure that the GitHub Pages and other gems are up-to-date, periodically run bundle update to update all gems.

To use a newer version of the theme, update the _config.yml file and change the line:

remote_theme: mmistakes/minimal-mistakes@[tag|commit|branch]

to use a newer tag/commit from the theme repo.

Additionally, since we are overriding some files (see the Customizations section below), you may also need to update those files with newer versions if they have been changed in theme updates.

Installing new gems and themes

Simply modify the Gemfile with the new gem to use, and then run bundle install to have it install the new gems.

Typically themes are installed from gems, and then you update the _config.yml file to specify the new theme to use.

Currently with the MinimalMistakes theme we are not installing it from a gem, but are instead using the remote theme method instead.

Customizations I've made to the theme / site

Anywhere that I make custom code changes, I try to put Dan's Customizations in comments, so doing a search of the repo for Dan should find all places I've changed / overwritten code. This doesn't include the _config.yml though, as we're expected to set custom settings in there.

Here's a list of places I've changed code:

  • assets/css/main.scss: Adjusted font sizes a bit, and added class used in the masthead.html.
  • _includes/masthead.html: Added site description below site title.
  • _includes/read-time.html: Added post/page date in with the reading time.
  • _includes/footer.html: Added advertisements to the bottom of the footer.
  • _config.yml file.

Here's a list of files I've added:

  • Everything in the _posts and _drafts directories.
  • The _pages\ page.
  • Everything in the _assets\Posts and _assets\Site directories.
  • Everything in the _data\comments directory.
  • The favicon.ico image.
  • The .vscode directory.
  • The file.
  • The ads.txt file with my Google AdSense info.
  • The CNAME file was added automatically by GitHub when setting up GitHub Pages to use my custom domain name.

Additional Info

Supported code language highlighters

By default Jekyll uses Rouge for syntax highlighting of code blocks. See this page for the list of supported languages. e.g. csharp, css, html, http, ini, json, liquid, markdown, powershell, sql, text, xml, yaml, and many more.

We may want to look at replacing Rouge with Pygments to get support for more languages, like AutoHotkey and batch files. Unfortunately GitHub Pages only supports Rouge at this time (June 2019) so we have to stick with it, but that may change in the future. There are open issues to add more languages to Rouge though, like Batch and AutoHotkey files.

Supported Kramdown options

By default Jekyll uses Kramdown for markdown processing. See this page for the list of supported options that may be used in _config.yml.

To show line numbers in code blocks, rather than using the traditional ``` syntax, do this instead (replacing 'powershell' with the appropriate language):

{% highlight powershell linenos %}
Your code goes here
{% endhighlight %}

Other sites using the same theme

Here are some other sites using the same theme, so we can see how they've configured theirs and customizations they've made:

Site history

The site was migrated from WordPress to Jekyll in April 2019, and before WordPress it was hosted in GeeksWithBlogs. This is why the posts before 2019 have additional front matter on them; the tool to export them from WordPress to Jekyll added it.

Some tools I used to convert the site from WordPress to Jekyll:

  • WordPress to Jekyll Exporter - Used to migrate all of the posts and uploads to a Jekyll format.
  • wordpress-comments-jekyll-staticman - After exporting your WordPress blog comments to an xml using the native export functionality, use this tool to convert the xml file into Staticman-format comments for use in Jekyll.
You can’t perform that action at this time.