Blog archive
All 101 posts, newest first.
August 2026
July 2026
- Your Own Spotify: Navidrome and the Subsonic EcosystemJul 11, 2026
- XML Sitemaps Past 50,000 URLs: Sharding Without TearsJul 11, 2026
- Who Pays for Open Source? Sustainability Behind Your StackJul 11, 2026
- VRAM Math: What Actually Fits on Your GPUJul 11, 2026
- vLLM vs llama.cpp: Pick by Workload, Not by HypeJul 11, 2026
- Self-Hosting Your Passwords With VaultwardenJul 11, 2026
- Off-Lease Enterprise Hardware: A Buyer's Field GuideJul 11, 2026
- TLS Everywhere: Let's Encrypt Done RightJul 11, 2026
- Threat Modelling for Normal PeopleJul 11, 2026
- Thin Content at Scale: Why Google Ignores 40,000 of Your PagesJul 11, 2026
- Synthetic Data That Doesn't Collapse Your ModelJul 11, 2026
- Structured Output From LLMs: Schemas, Grammars, RetriesJul 11, 2026
- Self-Hosted Status Pages That Calm People DownJul 11, 2026
- The State of Self-Hosting in 2026Jul 11, 2026
- SSO for Your Homelab: Authentik vs AutheliaJul 11, 2026
- Site Migrations Without Losing Rankings: A Field ChecklistJul 11, 2026
- Shipping AI Features Behind FlagsJul 11, 2026
- SEO Split-Testing on a Static SiteJul 11, 2026
- Self-Hosted vs SaaS: Honest Total-Cost-of-Ownership MathJul 11, 2026
- Self-Hosting 101: Your First Server, Start to FinishJul 11, 2026
- Measuring SEO With Self-Hosted AnalyticsJul 11, 2026
- Self-Hosted Git: Gitea, Forgejo, or GitLab?Jul 11, 2026
- Self-Hosted Email: An Honest AssessmentJul 11, 2026
- A Complete Self-Hosted AI Stack: Ollama, Open WebUI, WhisperJul 11, 2026
- RSS Isn't Dead: FreshRSS, Miniflux, and Reclaiming Your FeedJul 11, 2026
- Robots.txt for AI Crawlers: Block, Allow, or Negotiate?Jul 11, 2026
- Caddy vs Nginx vs Traefik: Choosing Your Reverse ProxyJul 11, 2026
- Remote Access Three Ways: WireGuard, Tailscale, Cloudflare TunnelJul 11, 2026
- RAG vs Fine-Tuning: When Each Actually WinsJul 11, 2026
- Quantisation Explained: GGUF, AWQ, and What You Actually LoseJul 11, 2026
- Proxmox, Docker, or Both? Picking Your Virtualisation LayerJul 11, 2026
- Prompt Injection: Threat Model and Practical MitigationsJul 11, 2026
- Prompt Engineering Is Just EngineeringJul 11, 2026
- Prompt Caching: The Cheapest Optimisation You're Not UsingJul 11, 2026
- Programmatic SEO in 2026: The Complete PlaybookJul 11, 2026
- Postgres for Everything: One Database to Back Your HomelabJul 11, 2026
- Network-Wide Ad Blocking: Pi-hole vs AdGuard HomeJul 11, 2026
- Raspberry Pi vs Used Mini PC: Where to Run Your HomelabJul 11, 2026
- Going Paperless With Paperless-ngxJul 11, 2026
- Own Your Data: The Export-Everything HabitJul 11, 2026
- GEO: How to Get Cited by ChatGPT, Perplexity, and AI OverviewsJul 11, 2026
- Open-Weight Models in 2026: What's Actually UsableJul 11, 2026
- AGPL, MIT, BSL: Licences Explained for Self-HostersJul 11, 2026
- Ollama Beyond the Laptop: Serving Models ProperlyJul 11, 2026
- Notes You Own: Joplin, Trilium, and Obsidian Sync AlternativesJul 11, 2026
- Nextcloud vs Syncthing: Different Tools, Same AnxietyJul 11, 2026
- Multimodal Pipelines: OCR, Vision, and Audio in One StackJul 11, 2026
- Model Routing: Send Small Models FirstJul 11, 2026
- Meta Descriptions in the AI-Snippet EraJul 11, 2026
- Making Nextcloud Fast: A Performance Tuning GuideJul 11, 2026
- LoRA Fine-Tuning on a Consumer GPUJul 11, 2026
- Long-Tail Keyword Research With Zero BudgetJul 11, 2026
- Local-First AI Apps: Patterns and PitfallsJul 11, 2026
- Local AI and Privacy: What Actually Stays on Your MachineJul 11, 2026
- Tool Calling Patterns That Don't Fall Apart in ProductionJul 11, 2026
- Tracing and Observability for LLM AppsJul 11, 2026
- LLM Inference Optimisation: Batching, KV Cache, Speculative DecodingJul 11, 2026
- LLM Cost Engineering: Treat Tokens Like a Budget LineJul 11, 2026
- Surviving LLM API Failures: Timeouts, Fallbacks, QueuesJul 11, 2026
- Link Building for Developer Tools: What Works in 2026Jul 11, 2026
- Leaving Google Photos: Immich in PracticeJul 11, 2026
- Latency Budgets for AI UX: Streaming, Prefetch, FallbacksJul 11, 2026
- JSON-LD That Actually Moves the Needle (and the Schema That Doesn't)Jul 11, 2026
- Jellyfin: The Complete Setup GuideJul 11, 2026
- IPv6 in the Homelab: Finally Worth It?Jul 11, 2026
- Internal Linking at Scale: An Architecture That CompoundsJul 11, 2026
- Immich vs PhotoPrism: The 2026 VerdictJul 11, 2026
- Monitoring Your Homelab: From Uptime Kuma to Full ObservabilityJul 11, 2026
- What Your Homelab Really Costs in ElectricityJul 11, 2026
- Home Assistant: Your First Month, MappedJul 11, 2026
- Hardware for Self-Hosted LLMs: From 8GB Laptops to 80GB RigsJul 11, 2026
- Fail2ban vs CrowdSec: Modern Brute-Force DefenceJul 11, 2026
- Evals Before Vibes: Testing LLM Apps ProperlyJul 11, 2026
- Embeddings Search: From Cosine Demo to ProductionJul 11, 2026
- E-E-A-T for Niche Directories: Signals You Can ShipJul 11, 2026
- Duplicate Content: Diagnosis Before MedicineJul 11, 2026
- Docker Compose Patterns for a Sane HomelabJul 11, 2026
- DNS for Self-Hosters: Records, TTLs, and Split-HorizonJul 11, 2026
- Ditching Google Analytics: Plausible, Umami, or MatomoJul 11, 2026
- Distillation: 80% of the Quality at 5% of the CostJul 11, 2026
- De-Googling in 2026: A Practical Migration MapJul 11, 2026
- Getting 50,000 Pages Crawled: Crawl Budget in PracticeJul 11, 2026
- Core Web Vitals on Static Sites: Winning the Last 10%Jul 11, 2026
- Context Window Management: Budgeting, Caching, CompactionJul 11, 2026
- Content Freshness: What dateModified Actually DoesJul 11, 2026
- Updating Containers Without Starting FiresJul 11, 2026
- Container Security: The 20% That Stops 80% of AttacksJul 11, 2026
- Anatomy of a Comparison Page That RanksJul 11, 2026
- Cloud Repatriation: When Moving Back On-Prem PaysJul 11, 2026
- Choosing a Vector Database: pgvector Until It HurtsJul 11, 2026
- Canonical URLs: Eight Edge Cases That BiteJul 11, 2026
- Building an MCP Server: Field NotesJul 11, 2026
- Benchmarking Local LLMs Without Fooling YourselfJul 11, 2026
- Batch vs Real-Time Inference: Two Different SystemsJul 11, 2026
- The *arr Stack Explained Like You're New HereJul 11, 2026
- A Realistic AI Pair-Programming WorkflowJul 11, 2026
- AI Code Review: Where It Helps, Where It LiesJul 11, 2026
- Agent Architectures in 2026: Loops, Graphs, and HandoffsJul 11, 2026
- The 3-2-1 Backup Strategy for Self-HostersJul 11, 2026
- 12 Self-Hosting Mistakes Everyone Makes OnceJul 11, 2026