I write a lot, and I use AI a lot. But AI does not write my blog posts. Mostly.

AI is useful for making some of my writing less tedious. Recently, I asked GitHub Copilot CLI to read a few dozen posts from this blog and derive a [VOICE.md](https://github.com/dblock/code.dblock.org/blob/gh-pages/VOICE.md) to assist my writing. The result is now checked into this repo and linked from [AGENTS.md](https://github.com/dblock/code.dblock.org/blob/gh-pages/AGENTS.md), so any AI agent working here gets the same reminder: this blog is authored by me, not by AI and the agent’s job is to help me rather than pretend to be me.

The useful and interesting part of `VOICE.md` was how it captured my weirdly specific patterns.

- Start with a real story, failure, command, bug, or piece of data.
- Say the opinion early.
- Provide examples, pull requests, commands, screenshots, numbers, links.
- Admit mistakes.
- Let short posts stay short.
- End quickly, use Russian jokes or a link.

Technical writing is just like coding, but do not attempt to fully automate it. Be picky about words, punctuation, examples, and whether a sentence actually sounds like something you would say. Use AI to produce a flow or even a draft, to collect patterns, suggest structure, and do the boring, time-consuming work around technical reproductions or samples. When [a post needs the same example in Ruby, Python, JavaScript, Go, Rust, PHP, C#, Java, Elixir, Swift, Objective-C, and Dart](/2026/08/28/adventures-in-daylight-saving-norfolk-island-and-time-zone-math-in-ruby.html), have an agent generate the first pass then verify, fix, and explain the interesting parts.

![VOICE.md generated by GitHub Copilot CLI](/images/posts/2026/2026-09-23-using-ai-effectively-in-technical-writing/voice.gif)
