These are source files for my site web.evanchen.cc.
Formerly, the website was generated using Poole. We now use a custom build script with Jinja2 and Python-Markdown (with extensions). The build script is intentionally short, less than 100 lines of code.
- Content is written in
input/, and written tooutput/. A pagefilename.mdis written directly tooutput/filename.html. To keep things simple, directory structures are explicitly not supported. - There is only one Jinja template:
data/page.html.j2. - Navigation links on the right are controlled by
data/nav.toml. - Python macros are written in
data/macros.py, available to Jinja.
After installing uv, run
uv run prek installto install pre-commit hooksuv run scripts/build.pyto builduv run scripts/audit.pyto check for broken linksuv run scripts/devserver.pyto run a development server
This website has some subfolders.
applets: Sync'ed toapplets/herehandouts: Sync'ed usinghandouts/sync.shopals/: Sync'ed from an external OPAL repository, contains published puzzle PDF filesotis/: Sync'ed from external OTIS artwork repositorystatic: Sync'ed tostatic/heretwitch/: Sync'ed usingscripts/upload-twitch-tex-and-pdfs.sh
You may want to periodically check no random files got in here by accident.
exams/: Contains lots of math contests of various sorts.- uploads from
SolArchivewith EGMO, USA(J)MO, USA TST(ST), IMO. - ELMO PDF's and award slides
- OTIS Mock AIME files
- USEMO problems and reports
- statistics from some contests
- uploads from
notes/: Manually uploaded lecture notes. Probably pretty fixed now.textbooks/: Various longer textbooks I've written.upload/: The miscellaneous box. Kind of the wild west in here. Read at your own peril.