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.
Updated generate_jsonblog.py to:
- Load Markdown content from output/<slug>/index.md files
- Set content_type: 'markdown' for each post
- Fall back to plain text if index.md not found
This ensures blog.json contains native Markdown content converted
from RST via pandoc, rather than stripped HTML from the Atom feed.
Works with the build order in make formats:
1. rst2md converts RST to Markdown
2. jsonblog reads the Markdown files
3. blog.json contains proper Markdown with content_type set
Result: 100/100 posts now have Markdown content with content_type field.
Add comprehensive documentation for make formats and all generated files:
- blog.json (JSON Blog format at root)
- feeds/all.json (JSON Feed v1.1)
- llms.txt (AI agent onboarding)
- index.md (Markdown versions)
- index.txt (plain text versions)
Documents purpose, usage, requirements, and individual make targets
(rst2md, jsonfeed, jsonblog, plaintext, llms).
- lib/rst2md.py - RST to Markdown converter using pandoc
- lib/generate_jsonfeed.py - JSON Feed v1.1 generator
- lib/generate_jsonblog.py - JSON Blog format (jsonblog.dev)
- lib/generate_plaintext.py - HTML to plain text converter
- lib/generate_llms_txt.py - AI agent onboarding file
These scripts generate multiple formats for AI/LLM consumption:
- blog.json at root (entire blog in one file)
- feeds/all.json (JSON Feed format)
- llms.txt (onboarding documentation)
- index.md (Markdown versions)
- index.txt (plain text versions)
- Add make formats to .gitlab-ci.yml build script
- Generates blog.json at site root (jsonblog.dev format)
- Generates feeds/all.json (JSON Feed v1.1)
- Generates llms.txt for AI agent onboarding
- Converts all RST to Markdown
- Creates plain text versions (index.txt)
New section: "what is un inception?"
- Explains how un.c fractured into 42+ language-specific CLI/SDK implementations
- Each language has its own native CLI/SDK (Python, Go, Rust, JavaScript, etc.)
- Each implementation is both functional tool & test case
- Fractal validation: clients test platform, platform tests clients
- Links to unsandbox.com/cli for all language implementations
- Links to un.c source in GitLab
Added llms.txt reference for curious agents:
- unsandbox.com/llms.txt
- api.unsandbox.com/llms.txt
Post now explains the inception concept: the fracture became better
than the whole. 42 implementations proving cross-language consistency.
Added 45 lines explaining the testing framework philosophy.
- Introduce UN early with link to unsandbox.com
- Link to api.unsandbox.com/docs when mentioning REST API
- Add call-to-action links to start experimenting
- All external links now point to approved domains only:
- git.unturf.com (GitLab)
- unsandbox.com
- api.unsandbox.com/docs
- www.unturf.com (permacomputer manifesto)
Added massive "beyond ci/cd: the laboratory awaits" section:
- 15+ cross-language science experiments
- Language shootout revival via UN sandbox
- Algorithm correctness verification across 42 languages
- Numeric precision, crypto performance, parallel patterns
- Regex engines, GC behavior, parser combinators
- Unicode handling, JSON conformance, sorting stability
- Datetime edge cases, compiler optimization archaeology
Integrated permacomputer manifesto values (truth, freedom, harmony, love)
and Ryu's warrior philosophy: "The answer lies in the heart of battle"
Emphasis on measurement over assumption, verification over trust.
42 languages = 42 perspectives on truth through experimentation.
Post grew from 367 to 867 lines (+501 lines of research ideas).
new file: content/pages/cover-letters/2026-01-17-lumos-devops-engineer-russell-ballestrini.rst
new file: content/pages/cover-letters/2026-01-17-octane-staff-platform-engineer-russell-ballestrini.rst
new file: content/pages/cover-letters/2026-01-17-prompt-health-senior-devops-engineer-russell-ballestrini.rst
- Makefile: Add jsonresume-all-html target to export resume in 30 themes
- Makefile: Curate list of 30 tested working JSONResume themes
- pelicanconf.py: Add extract_first_image filter for social media unfurling
- Resume: Add Queues skill category (SQS, RabbitMQ, ZMQ)
- Add russell.ballestrini.resume.json in JSONResume v1.0.0 format
- Add jsonresume Makefile target to copy JSON to output
- Update contact page with JSONResume link
- New blog post announcing free agent status & explaining JSONResume benefits