About
I'm Naoki Ainoya, a software engineer. I build small, personal software with large language models, and I write here about what happens when I put those tools into daily use: the parts that work, and the parts that quietly cost more than they save.
I've been writing on this site since the end of 2023, and there are 49 posts here now. Nearly all of them come out of something I built or broke myself. I don't write summaries of things I haven't used.
What I write about
Four threads run through most of it. Each one links to the posts I'd point someone at first.
Working with LLMs in practice
How I actually wire language models into daily work: what to hand to an agent, and where the interface between us should sit.
Small software I build for myself
Most of my side projects start because an existing tool disappeared or never fit. They stay small on purpose.
Personal knowledge management
Markdown and Obsidian sit at the center of how I read and tag, with LLMs doing the parts I would otherwise skip.
Engineering, and what AI does to it
Longer pieces about how generative AI changes the shape of software work, and the costs that move rather than disappear.
Things I've built
These are the projects the writing usually comes out of. They're all small, and most of them exist because I wanted the thing and nothing I tried fit.
- Pokke
A small bookmarking service I built after Pocket shut down, now doubling as a personal AI librarian over MCP.
- Ayumi
A local-first journaling app that writes each entry as a Markdown file, so I can open it in Obsidian or a text editor without an export step.
- Kitae
A workout tracker built the same way: each workout is a Markdown file I can inspect or move without the app.
How I work
My day-to-day is backend and platform work: TypeScript and Java services, Cloudflare Workers and Durable Objects, Kubernetes and Envoy, and the operational glue around them. Alongside that I spend a lot of time on the boundary between LLMs and real systems, which for me means agent interfaces, structured output, code review workflows, and the security questions that come with letting a model touch my data.
The through-line is a preference for tools small enough to understand end to end. That's why my own apps keep their data in Markdown, and why I would rather run something for a month before writing about it.
Why this blog exists
Publishing forces me to finish the thought — to find out whether I understood the problem or only recognized it. That check matters more to me now that I can get a plausible draft on any topic in seconds, written by a model that never had to understand it either. I wrote about this at more length in Why Still Blog in the Age of Generative AI?.
Drafts start in Japanese. I use LLMs to help rewrite them in English rather than simply translate them. The final voice and judgment are mine.
Elsewhere
The feedback form is anonymous and I read all of it. If you'd rather have a conversation, X is the fastest way to reach me.