Professional notes by Craig Johnston
long-form, short-form, working drafts · since 2008
long-form, short-form, working drafts · since 2008
VOL. XIX · MMXXVI
132 NOTES IN PRINT
132 NOTES IN PRINT
See the Whole Platform: Prometheus, Grafana, Loki, and OpenTelemetry
Self-hosted observability for everything you built, on the open standard instead of a per-host APM bill
→ Read this noteLatest note · folio diagram
mindmap
root((Observability))
Metrics
Prometheus
Alertmanager
Logs
Loki
SeaweedFS backend
Traces
OpenTelemetry
Tempo
Grafana
one pane over all three
Every component in this series has been exposing metrics: Postgres, Kafka, OpenSearch, Cilium, the cluster itself, each one had a line about the monitoring stack scraping it “later.” This is later. The 2020 …
Recent Notes
CXXXI
When Do Agents Use Stored Knowledge?
A benchmark that killed its own hypothesis: strong models re-derive what they can check, and a weak model trusts a stale note over the evidence in front of it
2026-07-26
CXXXCilium: One eBPF Data Plane for Networking, Security, and Encryption
The CNI that replaced Weave Net, kube-proxy, and a hand-rolled WireGuard overlay with a single component
2026-07-25
CXXIXcontainerd Without Docker: the Runtime Under Your Cluster
The container runtime the kubelet actually uses, and how to configure and debug it now that the Docker shim is gone
2026-07-23
CXXVIIIDoes a Semantic Knowledge Layer Make an Agent Measurably Better?
A reproducible benchmark: 42.7% to 98.7% on knowledge-trap questions, and a platform that learns from empty
2026-07-22
CXXVIIGitOps: Git as the Source of Truth for Your Cluster
Argo CD and Flux, the deployment half the 2020 book left out, with manifests reconciled from a repo you own
2026-07-21
CXXVIBuild Images Inside Your Cluster, Without the Docker Socket
Rootless container builds in CI with BuildKit, and where supply-chain guardrails belong
2026-07-19
CXXVYour Git Forge Belongs on Your Cluster: Forgejo
Self-hosted source, CI/CD, and a registry, on the lightweight fork that left its for-profit parent
2026-07-17
CXXIVThe Agent Gateway to Your Platform: mcp-data-platform
An Apache-2.0 MCP server that gives frontier models access and grounded context to everything you built
2026-07-15
CXXIIIA Data Catalog Your Agents Can Read: DataHub
Metadata, lineage, and a business glossary over the whole platform
2026-07-13
CXXIISelf-Hosted BI with Apache Superset
Dashboards and SQL exploration over the lakehouse and Postgres, a Tableau replacement on the platform's SSO
2026-07-11
CXXISelf-Hosted Integration with Apache NiFi
Visual dataflow and ETL on your own cluster, instead of Workato and the iPaaS vendors
2026-07-09
CXXSelf-Hosted SSO with Keycloak
One login for every user-facing tool on the platform, instead of renting Okta or Auth0
2026-07-07
CXIXYour Own Snowflake: A Trino and Iceberg Lakehouse
SQL analytics over open table formats on the object storage you own
2026-07-05
CXVIIISelf-Hosted S3 with SeaweedFS
S3-compatible object storage for the data lake, backups, and the lakehouse
2026-07-03
CXVIIA Search Layer You Own: OpenSearch on Kubernetes
The index for the platform, on the Apache-licensed fork of Elasticsearch
2026-07-01
CXVIKafka Without ZooKeeper: KRaft on Kubernetes with Strimzi
A real-time event backbone, without the separate ZooKeeper ensemble to operate
2026-06-29
CXVWhen Your Tools Lie to the Agent
I drove my own platform as a real client and told it to find every place a tool said one thing and did another. A case study in MCP SDLC.
2026-06-28
CXIVA Database You Own: Postgres with CloudNativePG
High-availability PostgreSQL on your own storage, without the managed bill
2026-06-27
CXIIIWhere Tribal Knowledge Goes
An insight an analyst shares mid-session becomes a reviewed, signed-off change to the catalog rather than vanishing when the conversation ends.
2026-06-26
CXIIIngress-Nginx Retired. Meet the Gateway API.
Exposing services and automating TLS in 2026, with Cilium and cert-manager
2026-06-25
CXISteering Agents Without Caging Them
Steering agents from the server middleware instead of the tool descriptions.
2026-06-24
CXStorage the Cluster Owns: Rook and Ceph
Portable block and shared-filesystem persistence for stateful services, no managed disks required
2026-06-23
CIXOne Process, Many MCP Servers
Compose mcp-trino, mcp-datahub, and mcp-s3 as Go libraries behind one endpoint, instead of running three servers that can't see each other.
2026-06-22
CVIIIBuild a Kubernetes Cluster You Own
The vendor-neutral substrate for a self-hosted platform: kubeadm, containerd, and Cilium on generic VMs
2026-06-21
CVIIWhy I Build MCP Servers in Go, Not Python
An MCP server faces an agent on both sides. Go lets me leash the agent that writes it and harden the contract the agent reads.
2026-06-19
CVIBuild a Better Platform Than You're Renting
Cloud-grade data platforms from FOSS on Kubernetes, now that agents run the hard part
2026-06-14
CVA Complete MCP Server and Client in Go
One server that uses every primitive, runs over both transports, sits behind auth, and is tested end to end, with one annotated trace through all of it
2026-06-08
CIVRunning Ollama and pgvector on Kubernetes
Vector Search Without the Vector Database, Part 3
2026-06-07
CIIITasks: Durable, Async Tool Calls
The experimental 2025-11-25 primitive that turns a request into call-now-fetch-later, hand-rolled on the wire because the SDK has not caught up
2026-06-06
CIISecurity: Tool Poisoning, Prompt Injection, and the Trust Boundary
A server's words flow straight into the model's context. The anatomy of how that becomes an attack, and where the host has to stand to stop it
2026-06-04