The garden

Notes that grow.

Working notes on system design, architecture decisions, and infrastructure. Nothing here is published once and abandoned — notes are planted, tended, and stamped with how far they've grown.

seedling — a fresh idea, lightly tended budding — worked through, still growing evergreen — stable enough to build on
Infrastructure seedling planted Feb 2026 · tended Mar 2026 · 9 min

Helm charts: how we manage 12 services across 3 clusters

Kubernetes YAML sprawl hit us at service number 5. Helm brought it under control -- but only after we learned how to structure charts properly.

Infrastructure seedling planted Feb 2026 · tended Mar 2026 · 10 min

Apache Airflow: the orchestrator, not the pipeline

Airflow schedules, monitors, and retries your data workflows. It does not process data. Confusing these roles is the most common Airflow mistake.

Architecture seedling planted Feb 2026 · tended Mar 2026 · 9 min

Why we chose Qdrant over Pinecone for production RAG

Vendor lock-in starts at the vector database. We moved to Qdrant after hitting Pinecone's walls in a healthcare knowledge system.

Infrastructure seedling planted Jan 2026 · tended Mar 2026 · 8 min

Why we run Traefik at the edge and NGINX inside containers

We stopped choosing between them. Traefik handles dynamic routing and TLS at the edge. NGINX handles static serving and caching inside containers.

Architecture seedling planted Jan 2026 · tended Mar 2026 · 11 min

Explainable AI pipelines: every answer cites its sources

In healthcare and enterprise contexts, "the AI said so" is not an acceptable answer. We build RAG systems where every claim has a citation.

Architecture seedling planted Jan 2026 · tended Mar 2026 · 9 min

Go for the plumbing, Python for the intelligence

We run both in production. Go handles 50,000 req/s at the gateway. Python runs the ML models. Here is why we split them.

Architecture seedling planted Jan 2026 · tended Mar 2026 · 10 min

Frappe v16: the application framework hiding behind ERPNext

Most teams discover Frappe through ERPNext. The framework underneath is a full application platform that we use for custom business systems.

Architecture seedling planted Jan 2026 · tended Mar 2026 · 10 min

Apache Kafka in production: what the tutorials leave out

We run Kafka for event-driven systems processing 2M+ events/day. The tutorials teach producers and consumers. Production teaches everything else.

Infrastructure seedling planted Dec 2025 · tended Mar 2026 · 9 min

GitOps with ArgoCD: Git push is the only deploy command

We manage 40+ applications across 3 clusters with ArgoCD. No CI pipeline touches the cluster. No one runs kubectl apply from a laptop.

AI Engineering seedling planted Dec 2025 · tended Mar 2026 · 10 min

MCP: giving LLMs access to your systems without giving away the keys

The Model Context Protocol lets LLMs query Frappe doctypes, search internal wikis, and call APIs -- with scoped permissions and full audit trails.

Infrastructure seedling planted Dec 2025 · tended Mar 2026 · 8 min

Kubernetes vs Docker Compose: we deploy both ways

K8s is not always the answer. We use Docker Compose for 60% of client deployments and Kubernetes for the rest. Here is the decision framework.

Infrastructure seedling planted Nov 2025 · tended Mar 2026 · 10 min

Prometheus + Grafana: monitoring without a $2,300/month bill

We monitor 20+ services across 3 clusters with the open-source observability stack. The cost is engineer time, not vendor invoices.

Architecture seedling planted Nov 2025 · tended Mar 2026 · 9 min

Terraform vs Pulumi: we chose Terraform and here is why

Pulumi lets you write infrastructure in real languages. Terraform makes you write HCL. We chose HCL because infrastructure should be boring.