← odygio

personal log

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.