
How to Run Hermes Agent on a UGREEN NAS with Docker
UGREEN said my Hermes container was running. The gateway couldn't read its config. Two user IDs explained the failure—and the fix.
Read the pieceKahWee Teng · Staff software engineer
I build frontend systems and developer tooling. Here I write down what happened after the architecture diagram: migrations, performance work, AI-assisted engineering, and the tradeoffs that made it into production.
Bearings




Working terrain
Four recurring questions, each grounded in a piece that shows the decisions, evidence, and tradeoffs behind it.

UGREEN said my Hermes container was running. The gateway couldn't read its config. Two user IDs explained the failure—and the fix.
Read the piece
GPT-5.6 turns capability into a price ladder, while Codex Spark turns speed into a separate button. AI pricing is becoming part of the interface.
Read the piece
I wanted to keep a shared table component current without accepting migration work on faith. A side-by-side benchmark made the trade-off much easier to judge.
Read the piece
My Remix-to-React Router v7 migration touched 40 files and removed 591 net lines. Imports were easy; TypeScript took the time.
Read the pieceFrom the trail
ModHeader's ad injection put me off. I built ChHeader to edit HTTP headers without ads, with local profiles and source anyone can inspect.

The WP Engine fight, the Valkey fork, and agent-written code raise a harder question: what keeps an open-source project honest?

Removing SSR simplified Cubbly but delayed useful inventory. I compared four client-loading compositions and kept the one that made real route content 31–42% faster.

I removed React SSR from Cubbly because maintaining Lingui across the Worker and browser was not worth the speed it bought on a private application.
