Daniel Doubrovkine bio photo

Daniel Doubrovkine

aka dB., @Microsoft, ex-@ShopifyEng, @OpenSearchProj, @awscloud, former CTO @artsy, +@vestris, NYC

Email Twitter LinkedIn Github Strava
Creative Commons License

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 to assist my writing. The result is now checked into this repo and linked from 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, have an agent generate the first pass then verify, fix, and explain the interesting parts.

VOICE.md generated by GitHub Copilot CLI