Live site: https://xw675.github.io/cs-ds-notes/
Exam-ready study notes for a CS + Data Science degree, published from my Obsidian vault with Quartz 4.
Covers units:
- FIT1047 (Computer Systems, Networks & Security)
- FIT1058 (Foundations of Computing)
- FIT1043 (Introduction to Data Science)
- FIT1008 (Fundamentals of Algorithms)
- FIT2094 (Databases)
- FIT2099 (Object Oriented Design)
- FIT2004 (Algorithms and Data Structures)
- FIT2014 (Theory of Computation)
- FIT2086 (Modelling for Data Analysis)
- FIT2102 (Programming Paradigms)
- FIT2109 (Computer Science Workshop)
- FIT3003 (Business Intelligence and Data Warehousing)
as interlinked atomic notes with unit cheatsheets, toolkit cheatsheets, LaTeX math, Mermaid UML diagrams, full-text search, backlinks, and a graph view.
Obsidian vault (source of truth)
│ ./sync-content.sh
▼
content/ 10_Units · 20_Concepts · 90_Attachments
│ git push → GitHub Actions
▼
quartz build markdown → static HTML (wikilinks, KaTeX, Mermaid)
▼
GitHub Pages static files, no server
Notes are written and maintained in Obsidian. This repo holds a synced copy of the published folders plus the Quartz generator; nothing here is edited by hand except content/index.md (the homepage) and configuration.
| Path | What it is |
|---|---|
content/ |
Published notes (synced from vault — do not edit directly) |
content/index.md |
Homepage (hand-written, survives sync) |
quartz/ |
Quartz static site generator (TypeScript) |
quartz.config.ts |
Site title, theme, plugins |
sync-content.sh |
Copies vault folders in + normalizes math fences |
.github/workflows/deploy.yml |
Build + deploy on every push to main |
quartz/ is upstream Quartz with one deliberate change — re-apply it after any upstream merge:
| File | Change | Why |
|---|---|---|
quartz/plugins/transformers/ofm.ts |
commentRegex skips fenced and inline code |
Upstream strips %%…%% with a raw-text regex that ignores code blocks, so a literal %% (R's modulo, the Lex/Yacc section separator) pairs with an unrelated %% elsewhere in the file and silently deletes everything between. Obsidian itself does not treat %% in code as a comment. |
./sync-content.sh # pull latest notes from the vault
git add -A && git commit -m "update notes" && git pushThe GitHub Action rebuilds and redeploys automatically (~2 min).
npm ci # first time only
npx quartz build --serve
# → http://localhost:8080Two deviations from upstream Quartz v4.5.2, both required for this vault:
-
Math fence normalization (
sync-content.sh) — Obsidian accepts compact$$\begin{aligned}/\end{aligned}$$fences on shared lines; Quartz's stricter markdown parser (micromark) discards content after an opening$$and misses closers at line ends, which silently swallowed entire pages into one broken KaTeX block. The sync script splits multi-line display-math fences onto their own lines; single-line$$x = 1$$equations are left untouched. -
Mermaid
<<annotation>>fix (quartz/components/scripts/mermaid.inline.ts) — upstream restores diagram source vianode.innerHTML, so the browser parses<<interface>>as an HTML tag and mangles it to<>, breaking every class diagram with UML annotations. Patched tonode.textContent, which preserves the source literally.