This repository is the source for ingmarsturm.com, a production GitHub Pages site for Ingmar Sturm's survey methodology, data quality, quantitative research, and research-automation work.
The site is built with Jekyll and a heavily customized academicpages / Minimal Mistakes theme. This repository is not maintained as a reusable website template; the current content and configuration are specific to the live site.
The public navigation is intentionally small:
- Work — selected case studies and project evidence
- Consulting — survey preflight, data-integrity audits, fractional quantitative research leadership, and research automation
- Academia — academic research and publications
The homepage is _pages/about.md with permalink /. The custom domain is defined by CNAME as ingmarsturm.com.
| Path | Purpose |
|---|---|
_pages/ |
Public page content, including homepage, services, work, academia, case studies, and utility pages |
_data/navigation.yml |
Main site navigation |
_config.yml |
Site-wide Jekyll configuration, metadata, author information, plugins, include/exclude rules, and defaults |
_layouts/ |
Page layouts |
_includes/ |
Reusable Liquid / HTML fragments |
_sass/ |
Theme and site styling sources |
assets/ |
Site assets used by the theme and pages |
images/ |
Images published with the site |
files/ |
Public downloadable files |
Gemfile / Gemfile.lock |
Ruby and GitHub Pages dependencies |
robots.txt |
Search-crawler policy and sitemap pointer |
CNAME |
GitHub Pages custom domain |
Two local working directories are intentionally not public site content:
courses/— local teaching materialcv-source/— local CV working files
They are ignored by Git and also excluded in _config.yml because Jekyll reads the working directory independently of .gitignore.
Most content changes belong in _pages/. Keep page metadata in the YAML front matter accurate, especially:
permalinktitlebrowser_titledescriptionexcerpt
The main navigation is controlled separately in _data/navigation.yml.
Site-wide identity, structured-data fields, Open Graph defaults, author information, plugins, and build exclusions live in _config.yml. Jekyll does not automatically reload _config.yml while serving locally, so restart the local server after changing it.
Prerequisites are Ruby and Bundler. The repository uses the github-pages gem so local builds stay close to the GitHub Pages environment.
bundle install
bundle exec jekyll serveThen open http://localhost:4000.
For a build-only validation:
bundle exec jekyll buildDo not casually delete Gemfile.lock: it records the dependency set used by this site. If dependencies need updating, update them deliberately and validate the resulting build.
main is the production source branch. GitHub Pages serves the site at the custom domain declared in CNAME.
Before publishing a structural change, check:
- Jekyll include/exclude rules in
_config.yml. - Liquid includes and layout references.
- Internal links and page permalinks.
- Image, stylesheet, JavaScript, and downloadable-file paths.
- The local Jekyll build.
Jekyll's underscore-prefixed directories such as _pages, _data, _includes, _layouts, and _sass have framework-specific roles. Do not rename or reorganize them as ordinary folders without updating the corresponding Jekyll configuration and references.
The site currently uses:
- per-page browser titles and meta descriptions
- Person structured data from
_config.yml - service-offering structured data on the consulting page
- a site-wide Open Graph image fallback
jekyll-sitemaprobots.txtwith a sitemap reference
When changing page positioning or titles, update the visible copy and metadata together so the browser title, description, structured data, and on-page message do not drift apart.
This site originated from the academicpages GitHub Pages template, itself based on the Minimal Mistakes Jekyll theme. The repository has since been detached and customized for this site. See LICENSE for licensing information.
Historical template README (archival)
The text below is preserved from the repository's former generic academicpages README for provenance. It is not the operating guide for this site; use the instructions above for the current repository.
A Github Pages template for academic websites. This was forked (then detached) by Stuart Geiger from the Minimal Mistakes Jekyll Theme, which is © 2016 Michael Rose and released under the MIT License. See LICENSE.md.
I think I've got things running smoothly and fixed some major bugs, but feel free to file issues or make pull requests if you want to improve the generic template / theme.
Note: if you are using this repo and now get a notification about a security vulnerability, delete the Gemfile.lock file.
- Register a GitHub account if you don't have one and confirm your e-mail (required!)
- Fork this repository by clicking the "fork" button in the top right.
- Go to the repository's settings (rightmost item in the tabs that start with "Code", should be below "Unwatch"). Rename the repository "[your GitHub username].github.io", which will also be your website's URL.
- Set site-wide configuration and create content & metadata (see below -- also see this set of diffs showing what files were changed to set up an example site for a user with the username "getorg-testacct")
- Upload any files (like PDFs, .zip files, etc.) to the files/ directory. They will appear at https://[your GitHub username].github.io/files/example.pdf.
- Check status by going to the repository settings, in the "GitHub pages" section
- (Optional) Use the Jupyter notebooks or python scripts in the
markdown_generatorfolder to generate markdown files for publications and talks from a TSV file.
See more info at https://academicpages.github.io/
- Clone the repository and made updates as detailed above
- Make sure you have ruby-dev, bundler, and nodejs installed:
sudo apt install ruby-dev ruby-bundler nodejs - Run
bundle cleanto clean up the directory (no need to run--force) - Run
bundle installto install ruby dependencies. If you get errors, delete Gemfile.lock and try again. - Run
bundle exec jekyll liveserveto generate the HTML and serve it fromlocalhost:4000the local server will automatically rebuild and refresh the pages on change.
There is one logistical issue with a ready-to-fork template theme like academic pages that makes it a little tricky to get bug fixes and updates to the core theme. If you fork this repository, customize it, then pull again, you'll probably get merge conflicts. If you want to save your various .yml configuration files and markdown files, you can delete the repository and fork it again. Or you can manually patch.
To support this, all changes to the underlying code appear as a closed issue with the tag 'code change' -- get the list here. Each issue thread includes a comment linking to the single commit or a diff across multiple commits, so those with forked repositories can easily identify what they need to patch.