Lessons from production.
Field notes from real systems — debugging stories, architecture trade-offs, anti-patterns we've paid for in outages. No tutorials, no hot takes. Just what actually held at 3 AM.
Blender cloud costs 2026: RebusFarm, GarageFarm, RunPod vs. ZER0ONE Lab — real numbers
We ran three typical Blender jobs through four providers: 240-frame turntable, 4K cinema loop, 100-frame product batch. Honest numbers including point systems and self-setup time — no marketing. Result: no provider wins all three scenarios, but one cost factor is regularly overlooked.
If you start Redis only for the job trigger, throw it back out: Postgres pg_notify as a worker queue
Our cinema-orch worker had to see new render jobs immediately — 5-second polling was too slow and pushed Postgres load into five-digit QPS. Adding Redis was the obvious reflex. We took \`LISTEN/NOTIFY\` instead, dropped latency below 200 ms and kept a whole component out of the stack.
Scoring 3,544 DACH companies without turning a cold campaign into an embarrassment — our lead pipeline in detail
'Dear Ms/Mr Auto' is the email greeting you get for Car Den KFZ Repair when you trust free-mail domains as a name source. On a few thousand sends, that's fatal. So we built a 4-layer filter pipeline that turns a self-crawled DACH raw list into 3,544 verified, mobile-unfriendly companies — clean enough for automated sending.
Anatomy of a Blender add-on that speaks OAuth and REST — without freezing the UI
Blender's bpy API runs on the main thread. A blocking HTTP call for a 500 MB .blend upload leaves Blender 'not responding' for 90 seconds — most users kill the process. Fix: background worker with a timer callback into the main thread, plus OAuth device flow (no browser callback needed).
How to cut Bing indexing from weeks to hours — one deploy hook, 15 lines of bash
Bing typically doesn't fully crawl a fresh site for 3-6 weeks. Too long for a cold launch. IndexNow is Microsoft's simple signal protocol — one POST per deploy, new URLs in Bing's index in under an hour. Bonus: ChatGPT Search citations run through Bing's index.
Six questions 3D studios ask us about cloud rendering — and the honest answers
How much does a 4K render actually cost, how long does a 12 GB .blend upload take, what happens if the job crashes at frame 187 of 240, and why do we accept clients whose scenes we have never seen? Six answers from four weeks of beta-support inbox.
Cinema 4D vs. Blender in the cloud: why the 4× price difference has nothing to do with the software
A Cinema 4D render costs 4× as much with us as the equivalent Blender job. Not because Cinema 4D is slower — Redshift on an A6000 renders about as fast as Cycles OptiX. The difference is elsewhere: Maxon's licensing forces cloud vendors into a model that Blender's GPL freedom simply doesn't require.
Four layers of cost protection: how our auto-scaler doesn't explode the bill
A client uploads a broken scene, the orchestrator spawns a pod, the pod runs into infinite OOM, tries three retries, each pod costs us $0.80/minute. Without protection this becomes a three-digit bill in an hour. Four independent layers have to fail before we see that.
The 90 % CPU bug in our Cinema Web: how React Three Fiber grilled our landing page
Chrome's task manager showed 87 % CPU on an Intel i7 laptop as soon as zer0onelab.com was in a tab. Not 87 % peak. 87 % steady state. We thought it was the post-processing bloom. It was the DPR setting combined with a missing GPU tier detection.
How two domains become one Google entity: JSON-LD @id cross-references explained
We run zer0one.codes (studio) and zer0onelab.com (cloud product). For Google, they were long two separate companies — even though it's the same GmbH. The fix is a single line per JSON-LD node: stable @id URIs plus parentOrganization / subOrganization references. Google's Knowledge Graph then resolves both domains to the same entity.
The cheapest GPU for Blender renders isn't the fastest one — RTX A4000 in a cost-per-frame benchmark
240 frames of a car turntable at 1080p, Cycles OptiX 128 samples: 3 min 18 s, US$0.014 total. The RTX A4000 renders slower than an H100 — but each frame costs a tenth as much. Why ‘fastest GPU’ is the wrong metric in the cloud.
Anonymity as an architectural invariant: why "we won't contact you" isn't enough
Promises like "you will never be contacted unsolicited" aren't enforceable on B2B platforms — vendors route around them offline. What works is a technical invariant: contact data lives in a separated sphere, the server only releases it on a mutual match. A property of the code, not a TOS clause.
Static export instead of a webshop: when the shop is physical, the cart is the problem
A boutique with a physical store doesn't need a webshop — it needs a conversion path into the store. We dropped cart, checkout and inventory sync — and shipped a faster, cheaper, more robust product.
Schema.org LocalBusiness: the underrated lever for regional SERPs
A small tradesman site doesn't rank by backlinks — it ranks by structured data signals. Schema.org LocalBusiness with geo coordinates, `areaServed` and `serviceArea` is a direct lever for local queries — more effective than any meta tag, because Google reads it as fact, not claim.
Symptom ≠ Root Cause: How the auto-healer became the real problem
A PostgreSQL primary at 91 % CPU. The auto-healer kills the noisiest query. An hour later: 91 % again. The lesson: quick fixes can lock themselves into an infinite loop if nobody asks which pattern is actually repeating.
Cache without a lock is thundering herd: 14 endpoints, 8 workers, one dead database
Cache expiry is the one moment when parallel workers all get expensive at the same time. Without a per-key lock, every refresh dumps your full load down the slowest path.
Expression index ignored: Why COALESCE in the index didn't match the ORDER BY — 29 500× speedup
A functional index on COALESCE(column, 0) had zero effect. The planner ignored it because the ORDER BY used a subtly different expression. Lesson: expression identity is not a suggestion, it's a precondition.
UPDATE with subquery and LIMIT: When the daemon spins in place
A simple UPDATE pattern that looks correct on small datasets and silently stagnates in production. The cause: a filter in the wrong place kills forward progress.
Commit before async I/O: how a single enricher idled the entire PgBouncer pool
A transaction waiting on an HTTP reply is invisible in the connection pool — but it holds the slot. With twelve parallel daemons that's enough to push a whole backend to 502.
Batch finalisation per container: why the monitor showed nothing for 83 minutes
A pipeline with N parallel sub-jobs finalises its status at the batch level — every worker is running, but the monitor reports standstill until the last container finishes. The fix: finalise per container, not per batch.
Behind every lesson sits a real Case.
Take a look at the systems these insights came out of — or bring your own problem straight to the table.