Files
Vijay Janapa Reddi 4846513629 periodic-table: add canonical YAML, generator scripts, and paper
Add the Periodic Table of Machine Learning Systems source of truth and
the academic paper that introduces it.

  * table.yml — canonical 90-element design space (8 abstraction layers
    x 5 information-processing roles), with table.schema.json
  * scripts/ — Node.js tools that build index.html from the YAML,
    migrate prior HTML to YAML, and validate the schema
  * paper/ — LaTeX paper "The Periodic Table of Machine Learning Systems:
    A Constraint-Driven Design Heuristic with Compiler Correspondence"
  * paper/scripts/generate_periodic_svg.py — vector hero figure
    generator that reads table.yml and emits a crisp SVG/PDF the paper
    embeds in place of a screenshot
  * paper/figures/ — molecular_ml, mamba, and periodic_table_hero
    figures (SVG sources + PDF outputs)
  * paper/Makefile — full build pipeline (svgs -> rsvg-convert -> pdf)
  * paper/references.bib — bibliography including Hennessy-Patterson,
    Hooker, Sze/Emer, Halide, GPipe, PipeDream, Korthikanti, Kung
2026-04-07 10:35:53 -04:00

37 lines
1.2 KiB
Makefile

# Periodic Table of ML Systems — build orchestration.
#
# table.yml is the single source of truth. Both index.html (the standalone
# shareable artifact) and the StaffML React data file are generated from it.
#
# Usage:
# make — same as `make all`
# make all — validate the YAML, regenerate index.html, sync the React TS file
# make html — regenerate periodic-table/index.html from table.yml
# make sync — regenerate interviews/staffml/src/data/periodicTable.ts from table.yml
# make validate — schema-check table.yml + run cross-reference invariants
# make clean — remove generated files (DESTRUCTIVE — only run after committing)
REPO := $(shell cd .. && pwd)
YAML := table.yml
HTML := index.html
TS := $(REPO)/interviews/staffml/src/data/periodicTable.ts
NODE := node
.PHONY: all html sync validate clean help
all: html sync
@echo "✓ Built $(HTML) and $(TS) from $(YAML)"
html:
@$(NODE) scripts/build-html.mjs
sync:
@$(NODE) $(REPO)/interviews/staffml/scripts/sync-periodic-table.mjs
validate:
@$(NODE) scripts/validate.mjs
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " %-12s %s\n", $$1, $$2}'