Skip to content
ainoya.dev

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.

All posts tagged #ai

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.

All posts tagged #product design

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.

All posts tagged #knowledge management

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.

All posts tagged #software engineering

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.

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.