← odygio

personal log

A week of small puzzle games

Over the past week I've been on a run of building small, self-contained puzzle games — ten or so, each living at its own page. None of them are ambitious; they are experiments. But I am still a little amazed that they could be built by an LLM.

A few examples: pour is a flow puzzle where you trace paths between color-matched dots until every cell on the grid is filled. link is a similar idea with a different feel — the levels are shaped around horizontal bands that cross and interlock. knot is an untangling puzzle: dots connected by lines, scrambled together, and you drag them apart until no lines cross. And glyph, the most recent, is a nonogram — row and column number clues that together describe a hidden pixel art image; ten levels, each a slightly larger and more intricate pictogram.

They all share the same time-of-day sky theme as the rest of the site, and each ends with a small confetti celebration. Building them is fast and fun. The harder part is designing levels that are solvable through logic alone, without any trial and error — which turns out to be a surprisingly good design constraint.


Tile game

Added a tile game — a puzzle where you tap cells on a 5×8 grid to turn them and their neighbors green, with the goal of turning the whole board green. Includes a move counter, a flip toggle, and a confetti win animation.


Ball

Added a ball page — a fullscreen physics toy where a bouncing ball interacts with the same time-of-day sky as the rest of the site. You can place gravity wells to pull the ball around, and there's a pipe in the top-right corner to aim for as a scoring target.


Hiragana and katakana word of the day — input matching

Improved the logic for matching incorrect user input in the hiragana and katakana word of the day pages, after feedback from the site's first user. The algorithm now decomposes the user's romaji guess into natural mora-sized units before aligning them to the expected syllables, which makes wrong guesses display much more intuitively.


Hiragana and katakana word of the day

Created two new word-of-the-day pages — one for hiragana and one for katakana. Each day shows a new word for reading practice.


Soundboard

Had a sudden inspiration to add a "soundboard" mini-page. Claude had fun suggestions about themes, found sound files and made a functional, simple and cute soundboard page in 15 minutes — with 19 Creative Commons audio files across 4 themed groups.


Six hours building the thing that built this

Spent most of the day setting up a Claude instance on my personal VM and building a chat interface to go with it — all hosted on the same server as this site. The idea was to be able to talk to it from my laptop or my phone and have it commit and deploy changes here directly. It works.

Started in the afternoon, didn't get off the computer until around 1 AM. There was a break for dinner in there, so realistically about six hours of actual work. Got pretty absorbed.

I built the "AI creator by chat" tool using Claude and had it deploy the changes incrementally. It was surprising how it took care of setting up the server environment (installing a DB, creating systemd, apache configuration, setting up a remote git repo in the server). Because CI or K8S or anything like that is not used, deployment is very fast. I did have to write a spec that was around 10 smallish paragraphs. I mentioned explicitly backend/frontend, the database, "something to keep the backend alive if it crashes" and it went with systemd, database migrations. I had to specify how to do authentication (login with username and password, users table, JWT for authentication of requests). I just mentioned "Python" for backend and "React" for front-end. Claude chose a backend framework and DB migration system on its own. It also set up a websocket-based chat and calling a child Claude process, which worked flawlessly immediately. The UI it went with is good. I only specified that it should look good on mobile.

The goal was to be able to make changes to the site by talking to my phone, and that did happen — entirely through agent coding — in a few hours.

The site itself is small — a handful of pages for learning Japanese (hiragana, katakana, vocabulary drills, a Japanese clock) and a few that are just nice to look at, like the animated mood page. Nothing ambitious, but it's mine and it's fun to add to.