August 2026
Mukawa AR Trail
A web AR trail built as a study for the Mukawa dinosaur story. Eight printed boards hang around a building, each with a picture and a QR. The QR only opens a link, so the phone's own camera does the scanning; the app asks for the camera when the visitor taps, recognises the picture itself as an image target, and stands the creature on the board as you move. Every board found unlocks its creature in a collection saved on the phone, with no sign-up. Built end to end by me: the trail app, the image targets, the printed panels and the deploy.

Point your phone at a printed board and a dinosaur stands up on it. An eight-board AR trail through a museum building, with nothing to install.
Point your phone at a printed board and a dinosaur stands up on it. An eight-board AR trail through a museum building, with nothing to install.
Why
Kamuysaurus japonicus came out of the rock at Mukawa, Hokkaido, as a skeleton lying on its side. The idea of the trail is simple: put it back where it stood.
How a visit goes
- Find a board. Eight hang around the building, each with a printed picture and a QR.
- Scan the QR with the phone's own camera. Nothing to install.
- Hold the phone up to the picture. The creature stands out of the board and stays there as you move.
- Keep it. Each board you find unlocks its creature in a collection saved on the phone, with no sign-up.
The picture is the trigger
The QR only opens a link (?spot=kamuysaurus), so every checkpoint also works as a plain link on a laptop. What summons the creature is the printed picture itself. Each board is compiled into a set of feature points, and the phone matches every camera frame against them. When enough points agree, it also knows the board's angle and distance, which is how the creature stands on the board instead of floating on the screen.
What I learned
- Check the boards before printing. Reading the compiled targets showed seven boards at around 3,000 feature points and one, the thin plesiosaur strip, at about 1,180. That is the board most likely to fail, and it was cheap to find before anything went on a wall.
- One file, one order. A match returns a number, not a name, so the board order is written in the same step as the targets. If the two ever drifted apart, pointing at one creature would quietly show another.
- The print rules come from how tracking works. Print at 100%, on matte paper, with busy artwork: the tracker matches small details, and scaling or glare takes them away.
- One target by default. The tracker follows a single target unless told otherwise, so without that setting every board after the first would silently do nothing.
Built as a study
The creatures are modelled in Blender by a script that rebuilds them from nothing, and served as glTF. The trail deploys as its own Cloudflare Worker, separate from the main site, so a checkpoint keeps working while the main site is being deployed.
More projects
view all →
LinkedIn Publisher
A LinkedIn integration inside log.exe: a registered developer app, a full 3-legged OAuth flow, and publishing to my own feed through the UGC Posts API. Captions are built from real project rows in D1 — title, tagline, highlights, tech stack, media — so a post can only claim things the CMS already knows. The interesting part was working out what the API will not give me, and saying so in the UI instead of faking it.
Kaeru Plugins
Two independent Claude Code plugins from one marketplace: kaeru lets non-technical staff safely edit a website's text, images, and colors in their own language and submit a PR for review — git stays hidden, it never merges; octo is the developer-facing GitHub + CI/CD toolkit — repo bootstrap, the issue → PR → merge flow, CI checks, and releases. The name folds in three meanings at once: 変える (change/edit), 帰る (return — a PR coming back for review), and 蛙 (frog — the mascot) — chosen so non-technical staff hear "Kaeru shite!" as friendly, not technical.

API Scalar
Mini-project inside log.exe: interactive OpenAPI docs powered by Scalar. Same repo as the parent — not a separate product. API skala, skalarrrrr, skala.