
MIDNIGHT BUREAU BLOG EXPANSION
by Tobin M. Albanese
PORTFOLIO — IN PROGRESS Sat Feb 01 2025
Why expand now. Readers land on a single post from search, bounce, and never discover the rest. The expansion focuses on discovery: topic/entity filters, cross-search with portfolio entries, and clean printing so deep reads don’t feel like wrestling a billboard on letter paper.

Unified taxonomy. I’m merging tags, topics, and entities into one shared schema used by both the blog and the portfolio. One label = one ID = one facet across the whole site. That lets the archive page, post pages, and portfolio listings stay in sync without custom exceptions.

Search architecture. For a hosted index, I’ll consider Typesense/Algolia with per-record weights for title, deck, headings, and resource labels. For a zero-dependency fallback, Lunr.js builds a client-side index at build-time with chunked loading. Either path supports synonym maps (“U.S.” ↔ “United States”) and typo tolerance without smearing relevancy.

Archive navigation. Year-month slices stay, but the UX adds quick-jumps for Topics (World & Diplomacy, Security, Energy, etc.) and Entities (countries, orgs, people). Pagination becomes cursor-based so I can prefetch the next slab while you’re still reading.

Long-form readability. Better typography, hyphenation, and rhythm (narrower measure on mobile, larger first-line height), sticky subhead mini-TOC for long reads, and a “focus” toggle that hides chrome. Pull-quotes and figures get semantic markup so they survive print/export.

Print & offline mode. A real @media print stylesheet (CMYK-safe colors, link URLs inline, no nav, no ads), plus an optional Service Worker to cache the current post, its images, and linked resources for subway reading.
Accessibility & performance. Keyboard-first filters, visible focus states, and color contrast that clears WCAG 2.2 AA. Images lazy-load with correct intrinsic sizes; headings are linearized for screen readers; Lighthouse budgets keep CLS and LCP honest.
Analytics you can defend. Events are boring on purpose: filter use, search queries (with privacy guardrails), time-on-section, and print/export clicks. The goal is editorial feedback, not surveillance: no keystroke logging, no cross-site tracking.
Risks & next steps. Index bloat on the client is the main risk; mitigations include splitting by route and compressing the index. Next steps: migrate legacy tags → unified IDs, ship entity filter, wire cross-search with portfolio, then layer print and offline.