In which I organize my thoughts about LLMs, Generative AI, cool papers from arxiv.org, and other marginalia on topics in data science and machine learning.
This blog is built with Hugo using the Hextra theme.
hugo
and its prerequisites git
, go
and dart-sass
are required.
I also use Task to define standard tasks (see ./Taskfile.yaml and ./.taskfiles/hugo/taskfile.yaml),
such as automatically creating a new branch per post for drafting (task: hugo:new title="<title>"
),
and publishing posts when ready (task hugo:publish path="<relative path to index.md>"
).
The Hextra theme is added as a git submodule:
git submodule add [email protected]:imfing/hextra.git hugo/themes/hextra
To update/pin the submodule to a tag:
cd hugo/themes/hextra # path/to/submodule
git checkout <tag or commit sha>
# commit with detailed message
cd ../../..; git commit -am "feat: Pinned hextra@<version or tag>" -S
Drafts are managed in their own blog/<title>
branch.
Content is written using "standard" markdown (Goldmark, specifically). The Hextra theme provides additional features, like shortcodes for callouts, cards, hide/show details, etc. Footnotes are supported, as is LaTeX, Mermaid diagrams, and syntax highlighting.
Once a draft is finished, it can be published (task hugo:publish path="<relative path to index.md>"
) on its branch,
then PR'd into main
.
Once the pull request is complete, a Github Action will build a new multi-arch container image and push to ghcr.io/ahgraber/aimlbling-about
.
Versioning is datetime-based (YYYY.MM.DDHHMM
) since semver doesn't really make sense (no sense of major.minor.patch for a blog).
It is hosted on my kubernetes (k3s) homelab. A Renovate workflow in my homelab repo watches for new image versions. Once detected, it will automatically create a PR to deploy the new blog image to prod.
[ ] giscus - a comments system powered by GitHub Discussions [x] umami analytics - a simple, fast, privacy-focused alternative to Google Analytics