The Art of Eight Limbs is about three fighting arts from Southeast Asia: Muay Thai, Muay Boran and Lethwei. You scroll through eight painted scenes, from a mountain ridge in northern Thailand at sunrise to a hill with lanterns at dusk.
Between the disciplines comes an interlude. On a dark background the name is written in gold in its own script as you scroll, contour by contour: มวยไทย (Muay Thai), มวยโบราณ (Muay Boran) and လက်ဝှေ့ (Lethwei). Then the emblem presses in like a seal. The emblems are gold ornaments with the name in the middle. Click one and it turns over: a tattoo motif is on the back.
On the ridge, Malee performs the wai khru ram muay, the salute to the teacher, while an elephant walks across the grass behind her. In a training camp in a Thai village she strikes and kicks on the pads of her trainer, Kru Daeng: thirteen techniques and ten combinations. At a temple ruin, Sak trains with his hands bound in hemp rope while a macaque sits on the stones. At a temple fair by night he fights Boon in a wooden ring, among lanterns, villagers and musicians: before there were stadiums, fights were held at temple fairs.
Lethwei from Myanmar is often called the art of nine limbs: the eight of Muay Thai, and the head. On a wooden platform in the rain, Thida drills headbutts on the shield of her trainer, Ko Min, with a green peafowl on the bank behind. In a packed Lethwei stadium she faces Nandar. A separate part is about sacred tattoos: the sak yant of Thai fighters and the htoe kwin, the thigh tattoos of Lethwei fighters in Myanmar. The motifs are drawn without script on purpose, because the script in a real yant is sacred.
The animation works like hand-drawn animation: a few drawings per move, held and switched, with a step, a brief freeze at contact, a ghost of the previous drawing, a flash of light and dust at the feet. The distance to the pads or the opponent is worked out per strike from the drawings themselves. The animals walk, fly or sit along their own routes through the paintings.
The paintings, the drawings of fighters, trainers and animals, the gold ornaments and the tattoo motifs were made once with OpenAI's image model. A script removes the green background and cuts the drawings apart. The Thai and Burmese script was not generated: it is set from the Noto fonts and shaped with HarfBuzz, because an image model invents those scripts. The page itself calls no AI service. Music and sound are synthesised live with the Web Audio API.
In the history and the tattoos, each line says whether it is documented, tradition or modern rules. Built with TypeScript and Vite, without a framework. Vitest tests check, among other things, the cutting of the sheets, the animals' routes and the shaping of the script; end-to-end tests run in Chromium, Firefox, WebKit and at phone size.
Between the disciplines comes an interlude. On a dark background the name is written in gold in its own script as you scroll, contour by contour: มวยไทย (Muay Thai), มวยโบราณ (Muay Boran) and လက်ဝှေ့ (Lethwei). Then the emblem presses in like a seal. The emblems are gold ornaments with the name in the middle. Click one and it turns over: a tattoo motif is on the back.
On the ridge, Malee performs the wai khru ram muay, the salute to the teacher, while an elephant walks across the grass behind her. In a training camp in a Thai village she strikes and kicks on the pads of her trainer, Kru Daeng: thirteen techniques and ten combinations. At a temple ruin, Sak trains with his hands bound in hemp rope while a macaque sits on the stones. At a temple fair by night he fights Boon in a wooden ring, among lanterns, villagers and musicians: before there were stadiums, fights were held at temple fairs.
Lethwei from Myanmar is often called the art of nine limbs: the eight of Muay Thai, and the head. On a wooden platform in the rain, Thida drills headbutts on the shield of her trainer, Ko Min, with a green peafowl on the bank behind. In a packed Lethwei stadium she faces Nandar. A separate part is about sacred tattoos: the sak yant of Thai fighters and the htoe kwin, the thigh tattoos of Lethwei fighters in Myanmar. The motifs are drawn without script on purpose, because the script in a real yant is sacred.
The animation works like hand-drawn animation: a few drawings per move, held and switched, with a step, a brief freeze at contact, a ghost of the previous drawing, a flash of light and dust at the feet. The distance to the pads or the opponent is worked out per strike from the drawings themselves. The animals walk, fly or sit along their own routes through the paintings.
The paintings, the drawings of fighters, trainers and animals, the gold ornaments and the tattoo motifs were made once with OpenAI's image model. A script removes the green background and cuts the drawings apart. The Thai and Burmese script was not generated: it is set from the Noto fonts and shaped with HarfBuzz, because an image model invents those scripts. The page itself calls no AI service. Music and sound are synthesised live with the Web Audio API.
In the history and the tattoos, each line says whether it is documented, tradition or modern rules. Built with TypeScript and Vite, without a framework. Vitest tests check, among other things, the cutting of the sheets, the animals' routes and the shaping of the script; end-to-end tests run in Chromium, Firefox, WebKit and at phone size.
More work

ERIK — Original Cube Animation
The 3D animation at the top of my homepage until October 2026: 50 cubes in three.js spell ERIK, with a photo and videos on their faces.

Operation Iron Thunder
A WW2 tank game in the browser: a Sherman and its five-man crew in Normandy, July 1944. Climb out, fight, rest in the church. three.js.
![TEN[10] — The Rotating Laptop](/uploads/portfolio/thumbnails/2026/10/ten-rotating-laptop-hero.jpg)
TEN[10] — The Rotating Laptop
A portfolio inside a 3D laptop that turns on its axis. Each time the screen comes round it shows another page, in real HTML. three.js and CSS3D.
