log in
consulting hosting industries the daily tools about contact
· 6 min read · AWS S3

S3 Event Notifications vs. Polling: What Actually Makes Sense at Small Scale

Everyone defaults to S3 Event Notifications for file pipelines. After running both in production, I think polling is underrated — and cheaper than you'd expect.

S3 Event Notifications feel like the obvious answer the moment someone says "we need to process files when they land in S3." Serverless, event-driven, near-real-time — it hits all the right notes. But I've built enough of these pipelines to know the obvious answer isn't always the right one, especially when your…

Read the daily →
· 6 min read · Build vs Buy

The Real Math on RDS vs. a Tuned MariaDB VM

Everyone says 'just use RDS.' I run managed hosting and I've done the math. Here's what it actually costs you.

RDS is the right answer for a lot of teams. It's not the right answer for mine, and I suspect it's not the right answer for a lot of small hosting shops either. Here's the math I did, and why I keep landing on a well-tuned MariaDB VM for most of my managed clients. The Setup NWOS runs managed hosting for somewhere…

Read the daily →
· 6 min read · Docker Compose

Docker Compose volumes: the silent data-loss trap I keep seeing

Anonymous volumes in Docker Compose look identical to named volumes until you run docker-compose down and your data vanishes. Here's what to watch for.

I've watched junior devs — and honestly a few senior ones — lose days of local database state because of a single missing string in a . Not a typo. Not a wrong password. A volume declaration that looks correct but behaves completely differently under . This one is subtle enough that I want to write it down. What the…

Read the daily →
· 6 min read · Vite

Vite HMR Through nginx in Docker: the WebSocket Config Nobody Documents

Getting Vite's hot module replacement to work through an nginx reverse proxy in Docker took me longer than it should have. Here's the exact config.

Every time I set up a new Dockerized dev environment with Vite behind nginx, I waste at least two hours on the same WebSocket problem. The HMR connection silently fails, the browser console shows a cryptic WebSocket error, and nothing in the Vite docs or the nginx docs quite covers the intersection. I'm writing this…

Read the daily →
· 6 min read · Redis

Redis Keyspace Notifications: Cheap Expiry Hooks With Sharp Edges

Redis can fire events when keys expire. It sounds like a free lightweight queue. Sometimes it is. Sometimes it silently drops jobs and you never know.

Redis keyspace notifications let you subscribe to events — key set, key deleted, key expired — directly on the Redis connection. No separate queue infrastructure, no polling loop, no Horizon workers burning memory waiting for jobs that arrive once a minute. For certain expiry-driven workflows, that's genuinely…

Read the daily →