SVGs loaded via <img> tags run in isolated documents with no
awareness of page scroll position. animation-timeline: view()
requires DOM presence. Switch from .. image:: to .. raw:: html
with :file: so SVGs embed directly in page HTML.
RST: replace "only new contributor" with rehydrated contributor framing,
add hope paragraph with Discord sprint link. Dot files: TB layout for
contributor-decay and mystic-pronouns, fix fontcolor #333333 to #1a1a1a,
expand eight-eyes with trinity cluster and consciousness layers.
Replace loopN keyframes with animation-timeline: view() so diagram
elements fade in as the reader scrolls past them instead of cycling
on a fixed timer. Add @supports fallback for Safari: unsupported
browsers show all elements immediately.
kill footer. weave 20+ cross-references into prose naturally.
nested-lookup origin, webwords 42 languages, SLOP protocol,
Salt states, Kubernetes, ago, remarkbox public domain.
replace build with grow. swap most Jason to JSON, keep Jason
for emotional beats only (falling in love, crawling back,
every developer has a Jason, writing a custom encoder).
three graphviz SVG diagrams:
- nested JSON hell (response.data.data.results[0].data)
- bipolar love cycle (discover → euphoria → frustration → crawl back)
- format rivals (JSON vs YAML vs XML vs TOML)
link nested-lookup origin to pagination post where the function
first appeared. deduplicate footer references.
new post: semi-bipolar love story about JSON personified as Jason.
swings between euphoria & despair over structured data.
CLAUDE.md: add writing constraints to avoid "the" & verbs "to be"
in blog posts, prefer active verbs & dropped articles.
- CLAUDE.md: Add cover letter RST format guide
- Makefile: Use cover-letter.style for PDF generation
- lib/generate_llms_txt.py: Add contact, payment, software, ML expertise & commission sections
- New cover letters: Phantom Backend (Money Movement), Solflare Backend Developer
- cover-letter.style: rst2pdf styling for clean PDF output
- rst2md.py now creates both index.md (with metadata) and index-slim.md (clean)
- generate_jsonblog.py references index-slim.md for clean content
- Fixes "Error: No content found" in blog viewer
- strip_pelican_metadata() removes title and metadata fields
Changes blog.json generation to link to hosted markdown files instead of
embedding full content. Each post now includes a content_url field pointing
to {site_url}/{slug}/index.md. This significantly reduces blog.json file
size while maintaining full content access via standard HTTP requests.
Updated README.rst to document the new linking behavior & how blog.json works.
Set FEED_MAX_ITEMS = None to include all posts in the Atom feed.
Before: blog.json had only 100 posts (Pelican default limit)
After: blog.json has all 188 published posts
This ensures blog.json contains the complete blog archive for
AI agent consumption and the russell.on.unsandbox.com deployment.
Force pipeline to regenerate all formats including:
- blog.json with updated UN Inception post (5 releases, 4.2.6 data)
- Updated aggregated charts
- All Markdown and plain text versions
Update build workflow to include 'make formats' as part of standard build:
- make clean && make html && make formats
This ensures all agent-friendly formats are generated:
- Markdown versions (index.md via pandoc)
- Plain text (index.txt)
- JSON Feed (feeds/all.json)
- JSON Blog (blog.json with Markdown content)
- AI agent onboarding (llms.txt)
Makes the preferred build workflow explicit for future reference.