David Walend's blog about Scala, AI, graphs, and coding — https://blog.walend.net
Eleventy 3.x, building Markdown and Liquid into static HTML, deployed to GitHub Pages. Syntax highlighting runs at build time through Prism, so no JavaScript is shipped to the browser for it.
npm ci
npm run serve # local preview with live reload
npm run build # one-shot build into _site/Two environment variables control where the site thinks it lives:
| Variable | Default | Use |
|---|---|---|
SITE_URL |
https://blog.walend.net |
Absolute URLs in the feed, sitemap, and llms.txt |
PATH_PREFIX |
/ |
Set to /blog/ when deploying to dwalend.github.io/blog |
PATH_PREFIX=/blog/ SITE_URL=https://dwalend.github.io npm run buildsrc/
├── _data/metadata.js site metadata (replaces Jekyll's _config.yml)
├── _includes/ layouts and partials, in Liquid
│ └── feed-body.njk one feed body, shared by both feed permalinks
├── posts/ published posts; posts.json sets their shared defaults
├── css/main.css
├── img/og-default.png the site-wide OpenGraph card
├── index.liquid
├── feed.njk RSS at /feed.xml; Nunjucks, for the RSS plugin's filters
├── rss.njk the same feed at /rss.xml, where Hashnode published it
├── CNAME the custom domain, copied through to the artifact
├── feed.xsl.liquid XSLT so browsers show the feed as a page, not raw XML
├── robots.txt.liquid generated
├── sitemap.xml.liquid generated
└── llms.txt.liquid generated from the post list
_pending/ drafts, not built
disentangleParGraphs/ d3 plots from the 2015 Disentangle posts
plans/ the restart and migration plans
bin/ sweep.sh, and the Route 53 change batches for the cutover
Posts get permalinks of the form /YYYY/MM/slug/. Older URLs from the 2014–2016
Jekyll site and the 2024 Hashnode site are preserved with redirect stubs.
GitHub Actions builds and deploys to GitHub Pages on push to master. The
workflow reads PATH_PREFIX and SITE_URL from the Pages configuration, so it
works unchanged at dwalend.github.io/blog and at the custom domain later.
Three different things live here, under three different terms:
- Posts and prose — CC BY 4.0. Quote, translate, mirror, and syndicate freely; attribution is all that is asked. The RSS feed carries full post text precisely so that this is easy.
- Code samples inside posts — public domain. Copy them into your own work with no attribution and no obligation.
- The site's own machinery — Eleventy config, templates, CSS — MIT.
Crawlers are welcome, AI systems included. See src/robots.txt.liquid.
disentangleParGraphs/js/ vendors two of Mike Bostock's libraries, both
BSD-3-Clause, with their license headers restored in the files themselves: