Commit Graph

1705 Commits

Author SHA1 Message Date
kennethreitz 83f5a0ee95 Add new essay: PyTheory Is Awesome
On chord detection from fingerings, world music systems (Arabic maqam,
Indian raga, Japanese pentatonic, gamelan), 25 instrument presets, and
why the quietest library is the one that means the most.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 04:08:36 -04:00
kennethreitz bda48b9c25 Bump rate limit to 600/min for load testing
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 03:58:20 -04:00
kennethreitz 28a276261f Bump to 4 Granian workers in production
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 03:55:11 -04:00
kennethreitz b09168011e Switch to dedicated performance CPUs on Fly.io
2 dedicated cores, 4GB RAM. No more shared CPU contention.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 03:54:19 -04:00
kennethreitz 33a4a11353 Add make run-prod — 4 workers for M4 performance cores
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 03:49:32 -04:00
kennethreitz 3de8f9b558 Switch from uvicorn to Granian — Rust-based ASGI server
2.7-6.2x faster across all routes. Essays 7,928 req/s (was 2,747),
Archive 8,449 req/s (was 1,354). Everything sub-1.3ms.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 03:44:54 -04:00
kennethreitz 8f1fc2a366 Add rate limiting — 120 requests per minute per IP
Uses responder's built-in RateLimiter. Returns 429 with Retry-After
header when exceeded. Adds X-RateLimit-Limit and X-RateLimit-Remaining
headers to all responses.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 03:36:47 -04:00
kennethreitz e15b83e316 Remove unused find_adjacent_posts, add markdown render cache
find_adjacent_posts result was never used in template (like
find_related_posts before it). Added _cached_render() to cache
parsed markdown in memory — content only changes on deploy so
there's no reason to re-parse on every request.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 03:28:38 -04:00
kennethreitz f8d807fe9e Remove unused find_related_posts — 5.6x essay speedup
find_related_posts was doing TF-IDF comparison against all 250+ essays
on every request (1 second each) but the result was never rendered in
the template. Essays now serve at 105 req/s instead of 19.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 03:24:50 -04:00
kennethreitz eadfee1a42 Link essays to /archive on homepage
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 23:37:35 -04:00
kennethreitz bd3c5f54d4 Add 16 missing essays to theme pages
consciousness-and-ai (6), for-humans-philosophy (3),
open-source-and-community (2), spiritual-practice (2),
psychology-and-consciousness (2), evolution-of-ideas (2).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:49:26 -04:00
kennethreitz 183a36f082 Add The Interface Is the Subconscious to spiritual practice theme
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:46:42 -04:00
kennethreitz 943bfe3e6c Fix theme name casing — store proper display names
AI Personalities not Ai Personalities, API Design not Api Design.
Theme names now stored with correct casing in cache, removed | title
filter from templates.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:43:55 -04:00
kennethreitz b77a9bb027 Remove link preview tooltip
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:42:11 -04:00
kennethreitz ba8173572e Tighten auto-detected theme patterns — smaller, more specific collections
Stricter regex for lived experience (require full disorder names),
for humans (require philosophy/trademark context), contemplative
practice (require practice context), photography (Leica or street).
Remove duplicate algorithm eats entry. 13 themes, most under 30 essays.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:39:22 -04:00
kennethreitz 3c674a3f09 Overhaul auto-detected theme patterns for better signal
- Merge spiritual/contemplative/mindful into "spiritual practice"
- Tighten "recursive" to "recursive loop"
- Add "open source" and "algorithmic critique" (was missing)
- Add "lived experience" for first-person mental illness accounts
- Use word boundary on "consciousness" to exclude "subconscious"
- Drop "technology" (too generic) and broken "AI" pattern

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:32:30 -04:00
kennethreitz 93f6a4be29 Sort theme groups alphabetically instead of by size
More stable ordering — won't shuffle when new essays are tagged.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:29:56 -04:00
kennethreitz b2693c7262 Rename page title to Themes Index
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:28:39 -04:00
kennethreitz 858ae64e1e Add context paragraph to auto-detected themes page
Explains that themes are programmatic, not curated, and links
to the hand-curated themes index.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:28:26 -04:00
kennethreitz dd7aab4f3b Remove dates from theme articles, sort newest first
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:27:02 -04:00
kennethreitz 2b2553c9d1 Restore theme badges on essay pages
The catch-all route wasn't passing article_themes to the post template.
Now looks up detected themes from the themes cache for each essay.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:26:25 -04:00
kennethreitz 89294491b8 Fix breadcrumb hover color in dark mode
Was hardcoded #111 (invisible on dark backgrounds), now #fff in dark mode.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:22:53 -04:00
kennethreitz ab2bc917d4 Add family photo to family page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 19:10:02 -04:00
kennethreitz f1dc9ee6f0 Convert bold paragraphs to bullet lists in narcissistic partner essay
Pattern Recognition, Recognition and Recovery, and Lessons Learned
sections now use proper ul formatting.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 19:04:42 -04:00
kennethreitz 614cc4b3a9 Fix typo: stuffer → stiffer in Fujifilm X100T review
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 19:02:45 -04:00
kennethreitz 0345d0efb6 Add hero image to photography index page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 19:02:17 -04:00
kennethreitz c148fd37bd Self-host all legacy images — zero external dependencies
Downloaded 217 images (131 Squarespace, 85 Flickr, 1 AI section)
to /static/images/legacy/ and updated all references across 60 files.
Removed 1 broken Flickr image. Site now serves all images locally.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:58:22 -04:00
kennethreitz 04652615f6 Fix docker-compose.yml — correct module ref, remove Flask env vars
engine:app → engine:api to match Responder. Remove FLASK_ENV and
DISABLE_ANALYTICS which were leftover from the Flask era.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:53:23 -04:00
kennethreitz f22a9cf7b8 Soften core self description in plurality page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:47:38 -04:00
kennethreitz d2d86fa59d Rewrite plurality page — grounded, less intense
Keep the honesty but lead with normalization ("most people have
internal voices"). Remove raw transmissions and all-caps quotes.
Consolidate system details into how-it-works overview. The door
metaphor stays — it's the most important part.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:46:14 -04:00
kennethreitz f6cf52f0c3 Add closing paragraph to great-music
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:44:54 -04:00
kennethreitz aae4fb3e99 Add closing paragraph to great-books
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:44:15 -04:00
kennethreitz 3ca77dfa19 Rewrite README for current Responder-based architecture
Was still describing Flask blueprints, gunicorn, and old project
structure. Now reflects the single-file Responder app, Fly.io
deployment, cached search, bot detection, and actual feature set.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:42:13 -04:00
kennethreitz f28356a3ac Expand to Top 100 songs from current Apple Music library
Added 51 new tracks including Rich Flex, Lateralus, STARGAZING,
Childish Gambino, Halsey, Green Day, R.E.M., Mac Miller, Paramore,
and more Infinite State tracks.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:34:52 -04:00
kennethreitz c1c27baaa7 Update Top 50 songs from current Apple Music library
New entries: LINKIN PARK (From Zero), 311, Father Of Peace, Drake
(No Face, Circadian Rhythm), Infinite State (Alchemical Divorce).
Dropped duration column, cleaned up album names.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:32:29 -04:00
kennethreitz 3f7406734f Remove Elect the Dead from favorite albums
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:30:11 -04:00
kennethreitz 0312e06954 Merge pull request #10 from kennethreitz/content-improvements
Rewrite family, yoga-meditation, and great-music pages
2026-03-24 18:28:30 -04:00
kennethreitz 045c9f1843 Add back Top 50 songs table to great-music
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:23:56 -04:00
kennethreitz d646f51ad0 Rewrite family, yoga-meditation, and great-music pages
family.md: Full rewrite in Kenneth's voice — mentions Sarah, blended
family reality, Malachi, and links to related essays. No more template
language.

yoga-meditation.md: Lead with personal practice instead of encyclopedia
entry. Jnana Yoga front and center, meditation warning prominent,
cross-linked to themes and essays.

great-music.md: Curated albums with personal annotations, consolidated
artist lists, own music section. Removed raw iTunes data export table.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:21:51 -04:00
kennethreitz d75251a787 Merge pull request #9 from kennethreitz/search-improvements
Search overhaul, AI indexes, and Lumina cleanup
2026-03-24 18:20:37 -04:00
kennethreitz 9d297988e4 Search overhaul, AI index files, Lumina poetry index cleanup
Search:
- Build search index at startup instead of scanning 727 files per query
- Add /api/search/autocomplete for whole-site title matching
- Autocomplete now server-side, covers all content not just essays
- Remove client-side /api/blog preload from search page

AI section:
- Create 5 missing index.md files for navigational orphan directories
- Update "277 file" count to actual 352 across all references
- Tone down Lumina poetry index to match actual content quality

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:19:50 -04:00
kennethreitz 9f6c48125a Fix light mode typography — use subpixel rendering on light backgrounds
Switch from antialiased to auto font-smoothing in light mode. Antialiased
thins glyphs on light backgrounds; auto lets the OS use subpixel rendering
for more visual weight. Dark mode keeps antialiased where it looks better.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:13:05 -04:00
kennethreitz 0cf5594286 Rename NSFW gallery title to The Female Form
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:10:23 -04:00
kennethreitz 2dbf28a43e Add closing paragraph to themes index
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:04:30 -04:00
kennethreitz fbd4ed50ae Bidirectional linking between mental health page and theme
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:00:01 -04:00
kennethreitz ec004bdbac Rename Mental Health & Technology theme to Mental Health
The thread is broader than just the tech intersection — it covers
lived experience, design implications, and recovery. Updated all
14 references across essays, themes, homepage, and indexes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:59:11 -04:00
kennethreitz 197352108b Site-wide content and quality sweep
Essays (72 files):
- Strip bloated italic footer link-blocks from all 2025-2026 essays
- 669 lines of directory-style footers removed

Poetry (7 files):
- Fix typos: benig, Analouge's, forsee, y et, seperateness
- Remove third-person sidenotes from 6 poems

Talks (1 file):
- Remove third-person sidenote from developer-burnout

Themes (10 files):
- Add warm closing paragraphs before Related Themes sections
- Fix "he built" → "I built" in evolution-of-ideas

Software (3 files):
- Fix multiline sidenotes in clint.md
- Clarify contradictory maintenance status in autoenv.md
- Add Infinite State Sample Pack to software index

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:54:25 -04:00
kennethreitz e5f6847326 Clean up contact page — simpler, no phone number, consistent list
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:47:51 -04:00
kennethreitz d052673c92 Add link to poemsbysarah.com in family page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:46:55 -04:00
kennethreitz cc1c585c57 Security, performance, and quality improvements across the site
Security:
- Add path traversal protection to serve_data_file and og_image routes
- Bound OG image cache to 256 entries to prevent memory growth

Performance:
- Pre-build legacy URL lookup tables at startup instead of rglob on every 404
- Extract _generate_pdf helper, eliminating duplicate PDF code

Templates:
- Add dark mode support to graph.html and error.html

Content:
- Remove third-person sidenotes from yoga-meditation.md, great-music.md,
  and idea_amplification essay
- Fix sidenote formatting in yoga-meditation.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:45:56 -04:00