How AI Tools Are Used on This Site
Writing
I use generative AI tools to help draft functional content on this site: things like feature summaries, documentation, and technical descriptions. That said, I review and edit all of this content for accuracy and clarity, and I am solely responsible for every word.
Analysis, opinions, tutorials where my perspective matters, and anything that represents my personal thinking are all written by me. I was initially worried that the line between personal and strictly factual content would be blurry, but in practice the difference is fairly clear. Sometimes genAI will try to turn summaries into evaluative summaries, and I am particularly on guard for those. The evaluations should always be my own.
When in doubt, my rule of thumb is: if the content should carry my voice, I wrote it myself. If it's purely factual — a feature list, a technical description — I may have had help drafting it using genAI tools.
This approach is similar to that of Simon Willison, who writes frequently about the implications of genAI for coding and writing. As he writes:
My current policy is that if text expresses opinions or uses 'I', then it's written by me. I don't let LLMs speak for me in this way. I'll let an LLM update code documentation or even write a README, but I edit it to ensure it doesn't express opinions or say things like 'This is designed to help make code easier to maintain'—because that's a rationale the LLM just made up.
Coding
After some reluctance, I now embrace agentic engineering, allowing coding agents to build much of the code I work on — this website included. I maintain a working understanding of the codebase and test extensively, both with automated testing and hands-on use. As with the writing, I take full responsibility for the final output.
I see these tools as the next step in a long history of abstraction in programming. Developers moved from assembly to higher-level languages to object-oriented paradigms, each time trading low-level control for the ability to think at a higher level of design. Agentic coding tools are another rung on that ladder: I spend less time on syntax and more time on architecture, user experience, and what the software actually does. They allow me to build more, iterate faster, and focus on the things I actually care about: the ideas, the experience, and the research problems the software enables us to solve.
Addy Osmani puts this well:
The history of software engineering is the history of raising abstraction...What we are living through right now is another step in that same arc. We are moving from writing code to orchestrating systems that write code...The era of programming as primarily a keystroke activity is over. The era of programming as primarily a thinking and judgment activity has been accelerating for decades and just shifted into a higher gear.