— Journal · RSS
Notes from the studio.
Writing on technology, design, VR, AI — and what it takes to ship them. Mostly long, sometimes short, occasionally wrong.
Journal · · 4 min
A business card that is an app
We replaced our paper business cards with one web address per person: a profile, a pocket card the QR code opens, and an installed app that shows the QR — even without signal. No app store, no NFC, nothing for the other person to install. How it works, and the small details that decide whether the phone says “Add contact”. Journal · · 6 minWe rebuilt our own site by removing things
Two stylesheets, two bundles, two copies of every template — and a flag that had answered the same way for months. What came off, what it weighed, and how we proved nothing broke. Journal · · 7 minThe tender radar that found nothing on day one
210 tenders collected, none of them ours. Instead of loosening the filters, we asked why — and found an encrypted PDF, a €677 alert subscription, and a public API nobody documents. Journal · · 9 minCustom E-Commerce vs Shopify: When Building From Scratch Is the Right Call
Most brands should use Shopify. Four signals tell you when a custom build is actually the cheaper option — with a real luxury commerce platform as the proof. Journal · · 6 minAI coding agents didn't replace us — they changed what a day looks like
AI coding agents went from party trick to a normal part of how a small studio ships. An honest account of what they are genuinely good at, what they are still bad at, and the real shift underneath: the work is no longer writing the code — it is verifying it. Journal · · 4 minNo build step
Most modern websites ship through a build pipeline. Ours doesn't. Here's what restraint buys a site that has to last. Journal · · 8 minStripe subscription webhooks that survive the edge cases
Stripe subscription webhooks only stay correct if you treat Stripe as the source of truth, verify the Stripe-Signature header, dedupe on event id, and refetch instead of trusting event order. Here is the lifecycle map and the failure modes that bit us. Journal · · 8 minGDPR-compliant analytics without cookies: what we built and why there's no banner
GDPR-compliant analytics without cookies is possible when you collect no PII and set no client-side identifier — which is exactly why our sites carry no cookie banner. Journal · · 8 minBuilding a PHP multilingual site without a framework
How we serve EN/PT/ES from one server-rendered PHP codebase — URL-prefix routing, a string dictionary, hreflang, and the language-detection trap we refused. Journal · · 8 minHow to build a recommender system without user tracking
A recommender system without user tracking is built on content features and session-local signals, not cross-user profiling. Here is how we ship one — and the accuracy we trade away. Journal · · 6 minWhat it takes to ship a Class I medical VR app
Most VR teams ship when the team thinks it's good. A Class I medical device ships when a regulator says so. Here's the gap, and what it cost us to close it. Journal · · 5 minWe track no users. Here is what we track instead.
No GA. No Plausible. No fingerprinting. The site you're reading sends one anonymous beacon per session — and we still know everything we actually need.— The journal, by email