Carl Boettiger's open lab notebook, built with Hugo and deployed to GitHub Pages via docs/.
The CV lives in two forms:
- Web version —
content/vita.md(rendered by Hugo at carlboettiger.info/vita) - PDF version —
static/files/cv.pdf(also served at carlboettiger.info/files/cv.pdf)
content/vita.md is the single source of truth. It contains employment, education, grants, teaching, talks, and service directly, and pulls in three sections via Hugo shortcodes:
assets/includes/publications.mdassets/includes/book_chapters.mdassets/includes/software.md
The PDF is generated by pandoc using static/files/cv-template.tex.
-
Edit
content/vita.md(or the relevantassets/includes/*.mdfile for publications, book chapters, or software). -
Regenerate the PDF from the repo root:
bash static/files/update_cv_pdf.sh
This resolves Hugo
{{< include >}}shortcodes, strips YAML frontmatter, and runs pandoc to producestatic/files/cv.pdf. -
Copy the PDF to
docs/so it's live on GitHub Pages:cp static/files/cv.pdf docs/files/cv.pdf
-
Commit both files.
A condensed, two-page version is generated from the same sources (no separate copy to keep in sync):
bash static/files/update_2pg_cv.sh
cp static/files/2pg-cv.pdf docs/files/2pg-cv.pdfstatic/files/make_2pg_vita.py pulls employment, education, grants, awards,
teaching and national service out of content/vita.md and the most recent
publications out of assets/includes/publications.md, shortening each entry
(surnames only, title hyperlinked to the DOI, no volume/page numbers). Output
goes through static/files/2pg-cv-template.tex (moderncv, 11pt).
If the PDF spills onto a third page (the script warns when it isn't exactly two
pages), lower the N_PUBS / N_GRANTS / N_AWARDS / N_SERVICE counts at the
top of make_2pg_vita.py.
Publications missing from ORCID (0000-0002-1642-628X) are listed in static/files/orcid-missing-works.txt. These must be added manually through the ORCID web interface (Search & Link via CrossRef) since we do not have API-based write access.