pelican-plugins/ lives in .gitignore so the random_article plugin
never reached the build server after cleanup. Moved to lib/ which
already serves as a PLUGIN_PATHS entry. Removed the os.path.exists
check that caused the plugin to skip all articles when the generator
ran before article directories existed in output.
Recommendations for Elixir/Phoenix projects hitting version mismatch
warnings on Ubuntu 24.04 LTS. Ubuntu 26.04 ships OTP 27.3 + Elixir 1.18
which resolves the ecosystem gap.
Creates a new Makefile target that converts all RST blog posts to plain text format using pandoc, enabling use of blog content as training data for machine learning applications.
postmortem now documents permanent fixes via salt states,
added salt states section with top.sls targeting. CLAUDE.md
updated: build server docs, SVG animation pattern changed
from scroll-driven to click-to-play, post-processing checklist
updated.
new post on AGPL vs public domain licensing for three
permacomputer whitepapers. cover letter for Matrix.org
Senior DevRel role. CLAUDE.md updates for Matrix usage
and media gallery link in cover letter template.
scroll-driven view-timeline approach didn't work reliably.
SVGs now render fully visible with a play button overlay.
click triggers sequential fadeIn animation, button returns
when animation completes.
Individual view() timelines tracked each element's own visibility,
causing all elements to animate simultaneously. Named timeline
--diagram on the SVG root makes all children reference the same
scroll position, revealing elements sequentially as the diagram
scrolls into the viewport.
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.