Skip to content

Light version: pages open quickly, without the 3D graphics. You are seeing the light version because the 3D graphics would be slow on this device. The content is the same.

Turn on 3D

Preparing the graphics. This can take a moment on the first visit.

Henry Lõiv

Web design & development

Notes from the workbench.

Writing on websites, interfaces and 3D on the web: how they are made and what to consider before you start.

  1. Quick Answer

    Why won’t a video autoplay on iPhone?

    Check muted playback, playsinline and browser restrictions on iPhone. Handle play() failures and provide a working manual-play fallback.

    Development 1 min read

  2. Quick Answer

    Why does a small GLB file use so much memory?

    A small GLB download can expand into large GPU textures. Check pixel dimensions, decoded memory and suitable GPU compression rather than file size alone.

    3D & WebGL 2 min read

  3. Quick Answer

    Does fetch mode: no-cors fix a CORS error?

    no-cors does not let JavaScript read a protected cross-origin response. Diagnose origin, preflight and server headers instead of hiding the error.

    Development 2 min read

  4. Quick Answer

    Why is GA4 counting a page view twice in my SPA?

    Check overlapping automatic and manual page_view events in GA4. Verify initial load, router navigation and browser back separately in DebugView.

    Development 2 min read

  5. Quick Answer

    Should translated pages share one canonical URL?

    Use language alternates without automatically canonicalizing translations to the original. Check reciprocal hreflang and each language’s intended URL.

    SEO & AI Search 2 min read

In Estonian

Some articles are only written in Estonian.

  1. Quick Answer

    Miks video iPhone’is automaatselt ei käivitu?

    iPhone’i video automaatkäivitust mõjutavad heli, playsinline ja brauseri reeglid. Lisa toimiv esitusnupp, mitte ära eelda autoplay õnnestumist.

    ET Arendus 1 min read

  2. Quick Answer

    Kas fetchi mode: no-cors parandab CORS-vea?

    no-cors ei anna JavaScriptile õigust võõra API vastust lugeda. Kontrolli serveri CORS-päiseid, päringu päritolu ja lubatud meetodeid.

    ET Arendus 1 min read

  3. Quick Answer

    Kas VITE_ keskkonnamuutuja peidab API-võtme?

    VITE_ väärtused võivad jõuda brauserisse ehitatud koodi. .env fail ei tee kliendipoolset API saladust privaatseks: vii salajane päring serverisse.

    ET Arendus 1 min read

Let’s talk about your project

Tell me about your project

Tell me what you’d like to build or improve. You don’t need a finished brief — we’ll work out the scope and next steps together.

01 How can I help?
02 How many pages do you need?
03 Which extras do you need? Choose all that apply
04 When does it need to be ready?
05 Project details
06 Your contact details

Enquiry received

Thank you!

Your enquiry has been received. I usually reply by email within 2 working days.