- Haskell 57.7%
- Typst 24.2%
- Nix 14.1%
- JavaScript 3%
- Just 1%
| .github/workflows | ||
| css | ||
| cv | ||
| fonts | ||
| nix | ||
| notes | ||
| posts | ||
| root | ||
| src | ||
| static | ||
| typst/pkgs/html-shim/0.1.0 | ||
| .envrc | ||
| .gitattributes | ||
| .gitignore | ||
| .hlint.yaml | ||
| .prettierrc | ||
| cabal.project | ||
| flake.lock | ||
| flake.nix | ||
| fourmolu.yaml | ||
| justfile | ||
| LICENSE | ||
| README.md | ||
| rednoise.cabal | ||
| tailwind.config.js | ||
web.youwen.dev
This is my personal site. It is built using a rather hacked version of the Hakyll system, a static site generation framework configured using the Haskell language.
You can view the site at web.youwen.dev, deployed using GitHub pages and cached through Cloudflare's CDN.
I wrote the contents of the website and all the code by hand without AI, and I intend to continue to do so indefinitely. Without taking a stance here on the morality, effectiveness, or philosophical quandaries of AI coding, I think having a personal web garden fully hand-wired down the entire stack is deeply satisfying.
tech stack
build time
- Haskell
- Hakyll (the static site generator library I use)
- blaze (an HTML combinator library I use for templating)
- clay (CSS preprocessor as a Haskell eDSL)
- pandoc (this one needs no introduction)
- LiquidHaskell (a highly experimental theorem prover which refines Haskell types using logical predicates to guarantee correctness, developed at UCSD)
- Nix
- Typst
run time
- HTML
- CSS (tailwind)
- JavaScript (almost none, soon to become PureScript)
hacking
(only works on Linux because I’m lazy.)
Install nix, then run this to compile the SSG binary,
which you can run with result/bin/rednoise watch for a hot reloading server.
Here you can hack on the Typst source files to edit the content without
recompiling everything.
nix build
To run a local preview server (not hot reloading) of the production website (sans the fonts),
nix run
# server will run at localhost:8000
To get a development environment,
nix develop
Or you can direnv allow, if you have it. A pre-commit hook will also be
installed automatically. Inspect justfile for useful scripts.
Before submitting a PR run all Haskell tests, formatting checks, lints, etc, using
nix build .#checks.x86_64-linux.pre-commit-check
Note that nix flake check always fails due to haskell.nix IFD jank so we
have to run the pre-commit-check explicitly, which bundles all other checks.
license
Most markup content (primarily in Typst files) is CC-BY-SA-4.0. The rest (that is, everything not covered by the Creative Commons license), including but not limited to logical code units, is GPL3 licensed. This includes any Typst code that does not contain useful content (i.e. prose), but rather is used for programming purposes.
