Insights

From the
engineering floor

Technical write-ups, project learnings, and hard-won lessons from production systems.

๐Ÿณ
DevOps8 min readJuly 8, 2026Featured

Why sed -i Breaks Your Docker Bind Mount (and What to Use Instead)

sed -i on Linux replaces the file inode, so your Docker container keeps reading the old file even after you edit it. Here's why it happens, how we debugged a Caddyfile reload that silently did nothing, and the correct cat > file heredoc pattern.

Read article
๐ŸŒ
DevOps5 min

Caddy's Directive Order Problem: Why try_files Breaks POST /api/* Requests

Serving a React SPA and an API from the same domain? Your POST requests might silently return 405. Caddy runs try_files before reverse_proxy โ€” here's why, and how handle blocks fix it.

July 7, 2026Read
โšก
DevOps4 min

Prisma 7 Docker Crash: MODULE_NOT_FOUND for .prisma/client/default

After upgrading to Prisma 7, our Docker container crashed immediately. The fix: you must run npx prisma generate in the Dockerfile โ€” npm install alone no longer generates the client.

July 5, 2026Read
๐Ÿ“ถ
Infrastructure6 min

Teltonika VPN Drops Every Hour? Add reneg-sec 0 to Your OpenVPN Config

New Teltonika RUT routers default to renegotiating VPN keys every 3600 seconds โ€” causing brief drops. Here's the exact UCI command to disable it and why raw iptables breaks on these devices.

June 22, 2026Read
๐Ÿค–
AI10 min

Building an AI Chatbot That Knows Your Live Sensor Data in Real Time

We built a Claude AI chatbot embedded in EcoBas that answers questions about live building sensors. The key: inject fresh DB context into every prompt and stream responses via SSE.

June 14, 2026Read
๐Ÿ“ก
IoT12 min

Backfilling 6 Months of BMS Sensor Data Into PostgreSQL

A building management system had 6 months of data trapped in its local database. Here's how we extracted, normalised, and imported it via API backfeed โ€” and the broken DB triggers we had to bypass.

June 5, 2026Read
โš›๏ธ
Web Dev5 min

CRA + Caddy: Use Relative API URLs in Production with REACT_APP_API_URL

When your React app and API live on the same domain behind Caddy, hardcoding localhost:5001 in the Docker image breaks everything. Here's the clean pattern using an empty build arg.

May 28, 2026Read
๐Ÿ“ฆ
DevOps9 min

Running a Private Docker Registry Behind Caddy with Basic Auth

We run a private Docker registry for all client deployments. Complete setup: registry container, Caddy TLS, htpasswd auth, and the Makefile workflow to push and pull images.

April 30, 2026Read

Get new articles in your inbox

Technical posts and project stories. No spam โ€” unsubscribe any time.