Jekyll blog with Org-mode sources, ready for bebekim.github.io.
make install
make build
make serveWrite posts in org/_posts/ with filenames like 2026-07-27-welcome.org.
Keep unpublished drafts in org/_drafts/.
Commit the exported index.html and _posts/*.html; GitHub Pages runs Jekyll, not Emacs.
Gemfile matches GitHub Pages; Gemfile.local keeps local builds working on macOS system Ruby.
Separate from the regular posts, org/curriculum/ holds guided exercise modules
by track:
org/curriculum/
math/
m01-algebraic-inequalities-induction/
m02-...
cs/
cs01-invariants/
cs02-...
physical-mathematics/ (planned, no modules yet)
Each module has its own numbered id (m01, cs01, ...) used both in its URL
and as the key for its Bitwarden item. Add a new module by creating a new
numbered directory alongside the existing ones and registering it in
scripts/encrypt-solutions.mjs.
Each exercise page (index.org) has a matching hints/index.org. Their
readable solution sources live outside Jekyll, in the gitignored
_solutions/<module-id>/<exercise-slug>.html.
Every module is locked with its own password, stored as a Bitwarden item named
blog-solutions-<module-id> (e.g. blog-solutions-m01, blog-solutions-cs01).
Nothing in this repo ever sees the password in plaintext — the encryption
script shells out to the Bitwarden CLI (bw) for it at build time.
bw login # once
export BW_SESSION="$(bw unlock --raw)"
make solutionsThis reads every module's password from Bitwarden and (re)writes the encrypted
.../<exercise>/solution/index.html pages under each module's own password.
Never commit _solutions/ or any password.