Writing on technology, design, VR, AI — and what it takes to ship them. Mostly long, sometimes short, occasionally wrong.
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.
What broke, what we saved, what we'd do again. Three honest migration walkthroughs with hours and invoices attached.
Self-hosted, open-source, headless. The things that bit us in production and the patterns that earn their keep.
Accessible VR means designing immersive experiences anyone can use. Here is how WCAG maps onto VR — and the parts it doesn't cover — plus our checklist.
Cookie consent banners are bad because they are dark-pattern theatre that punish honest sites. The fix is not a better banner — it is collecting less data so you need none.
How to 3D scan a heritage building: a step-by-step workflow covering site survey, lighting, capture pattern, scale references, hard surfaces, processing and web delivery.
How we grade automotive imagery in Lightroom for brand consistency across an entire shoot: camera calibration, reference swatches, HSL discipline, and a locked export look.
OVH shared hosting runs PHP 8.3 well in 2026 — if you accept no root, no long-running processes, and tight cron limits. Here's exactly what it can and can't do.
Field notes on VR in hospitals: what clinicians actually need — cleanable hardware, sub-minute setup, zero login friction, measurable outcomes — versus the demo-reel features vendors oversell.