AI Product Engineer at Takaovi Palvelut Oy
In August 2026 I started as an AI Product Engineer at Takaovi Palvelut Oy in Tampere. The role covers a property management platform and the company IT administration.
writing
Working notes on what I have been building. Some entries are written by a machine from the commit history, and those say so at the top.
In August 2026 I started as an AI Product Engineer at Takaovi Palvelut Oy in Tampere. The role covers a property management platform and the company IT administration.
A release build died on a deleted ffmpeg filename, and the update panel went blank over a heading I deleted myself.
My quota watchdog typed 62 stray continues into sessions that were working fine, because its check for success ran on a signal that could never say yes.
A whitespace-only rewrite made CodeQL report four alerts as new. None of them were, and the way that failure runs is the part worth writing down.
A friend's browser offered to install this site and he asked me what it would install. I did not know, which is a bad answer to have about your own site.
Turn on the sound button while you are reading and a voice reads the post to you. The recordings were made with one of the projects listed on this site.
I rebuilt every page of this site in ten days. The front page is now a single field of 24,000 particles, and my name is made out of them.
Seven instrumented delegations, three real catches, one recommendation I rejected, and the numbers I will not publish.
Every one of my agents was pinned to a cheap model. Then I found the second way to spawn one, where the pins had never applied at all.
A watchdog for the Tailscale Funnel that fronts the RAG chat, and the two ways the first version of it was wrong.
My cost-routing agents all appeared to be running on Opus. Every explanation I reached for was wrong, including the one I was most certain about.
The skills registry PDF was regenerated on every build, producing a dirty working tree and a meaningless binary diff.
The contact page kept probing the chat backend in hidden tabs, and fixing it turned up a small TypeScript narrowing trap.