Lab

Experiments & tools

Small builds I make to learn and to work faster. Each one is labelled: an experiment made for this page, client work that is live, or a tool I use every week.

01Experiment, Sep 2026

WebGL product viewer

A scroll-driven 3D product page in Three.js, built with AI coding agents and reviewed by me. Scroll through it below.

  1. 01

    Turn it

    Scroll to turn the bottle. It is built from a few lathe and cylinder shapes in code, so there is no model file to download.

  2. 02

    Open it

    Keep scrolling and the dropper lifts out. Every pose comes from the scroll position, so the page draws a new frame only when you move.

  3. 03

    Look closer

    The camera moves in on the label, a texture drawn in the browser. Three.js loads only when this section is near the screen.

02Client work, live

3D on a clinic website

The same idea on a real site. When I rebuilt dentalplus-smileroom.com in Next.js, I modelled a toothbrush and sparkles for the hero in Three.js from simple shapes. They lean towards the pointer, render only while on screen, draw at 1x on phones and hold one still frame for visitors who prefer reduced motion.

03Tool, in use

Live-site recorder

Every website preview on this portfolio is a recording of the real site, not a mockup. Three small scripts make and play them.

record.mjs

Record

Playwright opens the live site in Chrome, scrolls it on a fixed timeline and captures 14 seconds of real frames.

encode.sh

Encode

ffmpeg writes an AV1 WebM, an H.264 fallback, a smaller cut for phones and a poster. Each file carries a version number.

live-video.tsx

Play

Videos download only near the screen and play only while visible. One button pauses them all.

04Tool, in use

Local LLM

I run open models on my own GPU and use them to draft and translate copy between Thai, English and Swedish offline, so drafts can stay on my computer. I check every draft before it is used.

  • llama.cpp (CUDA)
  • LM Studio
  • Ollama

Let’s build
the next one.

Available now for full-time, part-time or internship roles. Right to work in Sweden, no sponsorship required.

Based in

Gothenburg, Sweden

Driving licence

Swedish licence B, own car