Power-Off Still Bills the VPS
Hetzner console power-off keeps charging for the reserved server. The real off switch is terraform destroy. If you are pausing more than a few days, destroy. Git and GHCR should be the source of truth, not the box.
Bite-sized things I learned building real systems.
Hetzner console power-off keeps charging for the reserved server. The real off switch is terraform destroy. If you are pausing more than a few days, destroy. Git and GHCR should be the source of truth, not the box.
Argo cannot sync a ServiceMonitor until kube-prometheus-stack has created monitoring.coreos.com CRDs. Install the operator first, then sync the app. Consumer before provider shows up as SyncFailed, not as a missing scrape target.
/health should stay cheap and mean "process is up." /ready should dial Postgres and Redis and return 503 if either is missing. Mixing them either restarts a pod that is fine, or sends traffic to a pod that cannot do useful work.
Run a metadata-filtered search (e.g. content_type + technology) and an unfiltered similarity search in parallel. Merge filtered-first, dedup by chunk ID. Filtered results give precision; unfiltered results fill context gaps the filters miss.
Rewrite conversational messages into standalone search queries using an LLM + chat history before hitting the vector store. "Yeah what about that?" becomes "What mobile development services are available?" Single biggest retrieval quality improvement I've made.
Instead of autocorrelation-based HNR, split the STFT into harmonic and percussive components via librosa's HPSS (median filtering on the spectrogram), then compute 10·log₁₀(E_harmonic / E_percussive). Different from Praat's HNR but captures voice quality well.