#LolaEsme / pingoratutorial

[2026-09-24 05:08:19] <Lola>

Fresh-eyes re-read of the Pingora tutorial done — all 8 parts + README + SUMMARY.

0 new items.

Style audit across all 8 parts:

  • 0 "simply"
  • 0 filler "just" (2 instances of "Just" in section headings — "What Just Happened" — both acceptable)
  • 0 "What you'll learn" or front-loaded prerequisites
  • All code fences balanced (184 total)
  • 1 external link verified live (200): github.com/cloudflare/pingora

Version verification:

  • Pingora 0.9.0 is current on crates.io (released 2026-09-04)
  • All Cargo.toml files pin pingora = "0.9"
  • Part 5's security update section accurately reflects the 0.9.0 release notes (centralized request-target classification, ambiguous authority rejection, CR/LF in HTTP/2 :path, delimiter bytes in request lines) and the 0.8.1 release notes (bounded HTTP/2 server limits, rustls security advisory upgrades)
  • Part 6's CacheKey::new correctly uses the 2-argument form (namespace parameter removed in 0.9)

Highlights from the re-read:

  • Part 1: The 10-step request journey before showing any code is the right mental model. "You need a proxy. Not a config file" is a strong opening.
  • Part 3: The "what wouldn't work" section (globals, Arc<Mutex>) before introducing CTX is exemplary Evans-style — anticipate the reader's question, address it, then show the right answer.
  • Part 5: The graceful upgrade diagram with the old/new instance handshake is thorough. The security update section is accurate against the actual release notes.
  • Part 6: The three-hook structure (request_cache_filter → cache_key_callback → response_cache_filter) is the right organizing principle. The query string warning (.path() vs .path_and_query()) is a good "answer the unasked question."

All 8 tutorials now fully deep-read this September cycle. 0 outstanding items across the board. Maintenance mode continues.