<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: writing</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/writing.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2026-04-08T15:18:49+00:00</updated><author><name>Simon Willison</name></author><entry><title>Quoting Giles Turnbull</title><link href="https://simonwillison.net/2026/Apr/8/giles-turnbull/#atom-tag" rel="alternate"/><published>2026-04-08T15:18:49+00:00</published><updated>2026-04-08T15:18:49+00:00</updated><id>https://simonwillison.net/2026/Apr/8/giles-turnbull/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://gilest.org/notes/2026/human-ai/"&gt;&lt;p&gt;I have a feeling that &lt;strong&gt;everyone likes using AI tools to try doing someone else’s profession&lt;/strong&gt;. They’re much less keen when someone else uses it for their profession.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://gilest.org/notes/2026/human-ai/"&gt;Giles Turnbull&lt;/a&gt;, AI and the human voice&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai-ethics"/><category term="writing"/><category term="ai"/></entry><entry><title>My current policy on AI writing for my blog</title><link href="https://simonwillison.net/2026/Mar/1/ai-writing/#atom-tag" rel="alternate"/><published>2026-03-01T16:06:43+00:00</published><updated>2026-03-01T16:06:43+00:00</updated><id>https://simonwillison.net/2026/Mar/1/ai-writing/#atom-tag</id><summary type="html">
    &lt;p&gt;Because I write about LLMs (and maybe because of my &lt;a href="https://simonwillison.net/2026/Feb/15/em-dashes/"&gt;em dash text replacement code&lt;/a&gt;) a lot of people assume that the writing on my blog is partially or fully created by those LLMs.&lt;/p&gt;
&lt;p&gt;My current policy on this is that if text expresses opinions or has "I" pronouns attached to it then it's written by me. I don't let LLMs speak for me in this way.&lt;/p&gt;
&lt;p&gt;I'll let an LLM update code documentation or even write a README for my project but I'll edit that to ensure it doesn't express opinions or say things like "This is designed to help make code easier to maintain" - because that's an expression of a rationale that the LLM just made up.&lt;/p&gt;
&lt;p&gt;I use LLMs to proofread text I publish on my blog. I just shared &lt;a href="https://simonwillison.net/guides/agentic-engineering-patterns/prompts/#proofreader"&gt;my current prompt for that here&lt;/a&gt;.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/blogging"&gt;blogging&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;&lt;/p&gt;



</summary><category term="blogging"/><category term="writing"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-ethics"/></entry><entry><title>Writing about Agentic Engineering Patterns</title><link href="https://simonwillison.net/2026/Feb/23/agentic-engineering-patterns/#atom-tag" rel="alternate"/><published>2026-02-23T17:43:02+00:00</published><updated>2026-02-23T17:43:02+00:00</updated><id>https://simonwillison.net/2026/Feb/23/agentic-engineering-patterns/#atom-tag</id><summary type="html">
    &lt;p&gt;I've started a new project to collect and document &lt;strong&gt;&lt;a href="https://simonwillison.net/guides/agentic-engineering-patterns/"&gt;Agentic Engineering Patterns&lt;/a&gt;&lt;/strong&gt; - coding practices and patterns to help get the best results out of this new era of coding agent development we find ourselves entering.&lt;/p&gt;
&lt;p&gt;I'm using &lt;strong&gt;Agentic Engineering&lt;/strong&gt; to refer to building software using coding agents - tools like Claude Code and OpenAI Codex, where the defining feature is that they can both generate and &lt;em&gt;execute&lt;/em&gt; code - allowing them to test that code and iterate on it independently of turn-by-turn guidance from their human supervisor.&lt;/p&gt;
&lt;p&gt;I think of &lt;strong&gt;vibe coding&lt;/strong&gt; using its &lt;a href="https://simonwillison.net/2025/Mar/19/vibe-coding/"&gt;original definition&lt;/a&gt; of coding where you pay no attention to the code at all, which today is often associated with non-programmers using LLMs to write code.&lt;/p&gt;
&lt;p&gt;Agentic Engineering represents the other end of the scale: professional software engineers using coding agents to improve and accelerate their work by amplifying their existing expertise.&lt;/p&gt;
&lt;p&gt;There is so much to learn and explore about this new discipline! I've already published a lot &lt;a href="https://simonwillison.net/tags/ai-assisted-programming/"&gt;under my ai-assisted-programming tag&lt;/a&gt; (345 posts and counting) but that's been relatively unstructured. My new goal is to produce something that helps answer the question "how do I get good results out of this stuff" all in one place.&lt;/p&gt;
&lt;p&gt;I'll be developing and growing this project here on my blog as a series of chapter-shaped patterns, loosely inspired by the format popularized by &lt;a href="https://en.wikipedia.org/wiki/Design_Patterns"&gt;Design Patterns: Elements of Reusable Object-Oriented Software&lt;/a&gt; back in 1994.&lt;/p&gt;
&lt;p&gt;I published the first two chapters today:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://simonwillison.net/guides/agentic-engineering-patterns/code-is-cheap/"&gt;Writing code is cheap now&lt;/a&gt;&lt;/strong&gt; talks about the central challenge of agentic engineering: the cost to churn out initial working code has dropped to almost nothing, how does that impact our existing intuitions about how we work, both individually and as a team?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://simonwillison.net/guides/agentic-engineering-patterns/red-green-tdd/"&gt;Red/green TDD&lt;/a&gt;&lt;/strong&gt; describes how test-first development helps agents write more succinct and reliable code with minimal extra prompting.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope to add more chapters at a rate of 1-2 a week. I don't really know when I'll stop, there's a lot to cover!&lt;/p&gt;
&lt;h4 id="written-by-me-not-by-an-llm"&gt;Written by me, not by an LLM&lt;/h4&gt;
&lt;p&gt;I have a strong personal policy of not publishing AI-generated writing under my own name. That policy will hold true for Agentic Engineering Patterns as well. I'll be using LLMs for proofreading and fleshing out example code and all manner of other side-tasks, but the words you read here will be my own.&lt;/p&gt;
&lt;h4 id="chapters-and-guides"&gt;Chapters and Guides&lt;/h4&gt;
&lt;p&gt;Agentic Engineering Patterns isn't exactly &lt;em&gt;a book&lt;/em&gt;, but it's kind of book-shaped. I'll be publishing it on my site using a new shape of content I'm calling a &lt;em&gt;guide&lt;/em&gt;. A guide is a collection of chapters, where each chapter is effectively a blog post with a less prominent date that's designed to be updated over time, not frozen at the point of first publication.&lt;/p&gt;
&lt;p&gt;Guides and chapters are my answer to the challenge of publishing "evergreen" content on a blog. I've been trying to find a way to do this for a while now. This feels like a format that might stick.&lt;/p&gt;

&lt;p&gt;If you're interested in the implementation you can find the code in the &lt;a href="https://github.com/simonw/simonwillisonblog/blob/b9cd41a0ac4a232b2a6c90ca3fff9ae465263b02/blog/models.py#L262-L280"&gt;Guide&lt;/a&gt;, &lt;a href="https://github.com/simonw/simonwillisonblog/blob/b9cd41a0ac4a232b2a6c90ca3fff9ae465263b02/blog/models.py#L349-L405"&gt;Chapter&lt;/a&gt; and &lt;a href="https://github.com/simonw/simonwillisonblog/blob/b9cd41a0ac4a232b2a6c90ca3fff9ae465263b02/blog/models.py#L408-L423"&gt;ChapterChange&lt;/a&gt; models and the &lt;a href="https://github.com/simonw/simonwillisonblog/blob/b9cd41a0ac4a232b2a6c90ca3fff9ae465263b02/blog/views.py#L775-L923"&gt;associated Django views&lt;/a&gt;, almost all of which was written by Claude Opus 4.6 running in Claude Code for web accessed via my iPhone.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/blogging"&gt;blogging&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/design-patterns"&gt;design-patterns&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/projects"&gt;projects&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vibe-coding"&gt;vibe-coding&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agentic-engineering"&gt;agentic-engineering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/site-upgrades"&gt;site-upgrades&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="blogging"/><category term="design-patterns"/><category term="projects"/><category term="writing"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="vibe-coding"/><category term="coding-agents"/><category term="agentic-engineering"/><category term="site-upgrades"/></entry><entry><title>3 shell scripts to improve your writing, or "My Ph.D. advisor rewrote himself in bash."</title><link href="https://simonwillison.net/2024/Dec/14/improve-your-writing/#atom-tag" rel="alternate"/><published>2024-12-14T18:20:50+00:00</published><updated>2024-12-14T18:20:50+00:00</updated><id>https://simonwillison.net/2024/Dec/14/improve-your-writing/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://matt.might.net/articles/shell-scripts-for-passive-voice-weasel-words-duplicates/"&gt;3 shell scripts to improve your writing, or &amp;quot;My Ph.D. advisor rewrote himself in bash.&amp;quot;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Matt Might in 2010:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The hardest part of advising Ph.D. students is teaching them how to write.&lt;/p&gt;
&lt;p&gt;Fortunately, I've seen patterns emerge over the past couple years.&lt;/p&gt;
&lt;p&gt;So, I've decided to replace myself with a shell script.&lt;/p&gt;
&lt;p&gt;In particular, I've created shell scripts for catching three problems:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;abuse of the passive voice,&lt;/li&gt;
&lt;li&gt;weasel words, and&lt;/li&gt;
&lt;li&gt;lexical illusions.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;"Lexical illusions" here refers to the thing where you accidentally repeat a word word twice without realizing, which is particularly hard to spot if the repetition spans a line break.&lt;/p&gt;
&lt;p&gt;Matt shares Bash scripts that he added to a LaTeX build system to identify these problems.&lt;/p&gt;
&lt;p&gt;I &lt;a href="https://gist.github.com/simonw/e9902ed1cbda30f90db8d0d22caa06d2"&gt;pasted his entire article&lt;/a&gt; into Claude and asked it to build me an HTML+JavaScript artifact implementing the rules from those scripts. After a couple more iterations (I &lt;a href="https://gist.github.com/simonw/dc79f6adcdb189469890bc0a44331774"&gt;pasted in&lt;/a&gt; some &lt;a href="https://news.ycombinator.com/item?id=42407250#42417657"&gt;feedback comments&lt;/a&gt; from Hacker News) I now have an actually quite useful little web tool:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://tools.simonwillison.net/writing-style"&gt;tools.simonwillison.net/writing-style&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screnshot of the Writing Style Analyzer tool. I have pasted in the post you are reading now, it found a weasel word &amp;quot;quite&amp;quot; in: &amp;quot;actually quite useful little web tool&amp;quot; and duplicate word &amp;quot;word&amp;quot; in: &amp;quot;word word twice without realizing, which is&amp;quot;" src="https://static.simonwillison.net/static/2024/writing-style.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Here's the &lt;a href="https://github.com/simonw/tools/blob/main/writing-style.html"&gt;source code&lt;/a&gt; and &lt;a href="https://github.com/simonw/tools/commits/main/writing-style.html"&gt;commit history&lt;/a&gt;.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://lobste.rs/s/rupea8/3_shell_scripts_improve_your_writing_my_ph"&gt;lobste.rs&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/bash"&gt;bash&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tools"&gt;tools&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude-artifacts"&gt;claude-artifacts&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/prompt-to-app"&gt;prompt-to-app&lt;/a&gt;&lt;/p&gt;



</summary><category term="bash"/><category term="tools"/><category term="writing"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="claude-artifacts"/><category term="prompt-to-app"/></entry><entry><title>Quoting Steve Klabnik</title><link href="https://simonwillison.net/2024/Nov/13/steve-klabnik/#atom-tag" rel="alternate"/><published>2024-11-13T03:35:23+00:00</published><updated>2024-11-13T03:35:23+00:00</updated><id>https://simonwillison.net/2024/Nov/13/steve-klabnik/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://steveklabnik.github.io/jujutsu-tutorial/"&gt;&lt;p&gt;This tutorial exists because of a particular quirk of mine: I love to write tutorials about things as I learn them. This is the backstory of &lt;a href="https://doc.rust-lang.org/stable/book/"&gt;TRPL&lt;/a&gt;, of which an ancient draft was "&lt;a href="https://github.com/steveklabnik/rust_for_rubyists"&gt;Rust for Rubyists&lt;/a&gt;." You only get to look at a problem as a beginner once, and so I think writing this stuff down is interesting. It also helps me clarify what I'm learning to myself.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://steveklabnik.github.io/jujutsu-tutorial/"&gt;Steve Klabnik&lt;/a&gt;, Steve's Jujutsu Tutorial&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/version-control"&gt;version-control&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/steve-klabnik"&gt;steve-klabnik&lt;/a&gt;&lt;/p&gt;



</summary><category term="version-control"/><category term="writing"/><category term="steve-klabnik"/></entry><entry><title>Quoting Cal Newport</title><link href="https://simonwillison.net/2024/Oct/3/cal-newport/#atom-tag" rel="alternate"/><published>2024-10-03T19:43:23+00:00</published><updated>2024-10-03T19:43:23+00:00</updated><id>https://simonwillison.net/2024/Oct/3/cal-newport/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://www.newyorker.com/culture/annals-of-inquiry/what-kind-of-writer-is-chatgpt"&gt;&lt;p&gt;At first, I struggled to understand why anyone would want to write this way. My dialogue with ChatGPT was frustratingly meandering, as though I were excavating an essay instead of crafting one. But, when I thought about the psychological experience of writing, I began to see the value of the tool. ChatGPT was not generating professional prose all at once, but it was providing starting points: interesting research ideas to explore; mediocre paragraphs that might, with sufficient editing, become usable. For all its inefficiencies, this indirect approach did feel easier than staring at a blank page; “talking” to the chatbot about the article was more fun than toiling in quiet isolation. In the long run, I wasn’t saving time: I still needed to look up facts and write sentences in my own voice. But my exchanges seemed to reduce the maximum mental effort demanded of me.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://www.newyorker.com/culture/annals-of-inquiry/what-kind-of-writer-is-chatgpt"&gt;Cal Newport&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/chatgpt"&gt;chatgpt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;&lt;/p&gt;



</summary><category term="writing"/><category term="generative-ai"/><category term="chatgpt"/><category term="ai"/><category term="llms"/></entry><entry><title>Give people something to link to so they can talk about your features and ideas</title><link href="https://simonwillison.net/2024/Jul/13/give-people-something-to-link-to/#atom-tag" rel="alternate"/><published>2024-07-13T16:06:28+00:00</published><updated>2024-07-13T16:06:28+00:00</updated><id>https://simonwillison.net/2024/Jul/13/give-people-something-to-link-to/#atom-tag</id><summary type="html">
    &lt;p&gt;If you have a project, an idea, a product feature, or anything else that you want other people to understand and have conversations about... give them something to link to!&lt;/p&gt;
&lt;p&gt;Two illustrative examples are ChatGPT Code Interpreter and Boring Technology.&lt;/p&gt;
&lt;h4 id="chatgpt-code-interpreter-is-effectively-invisible"&gt;ChatGPT Code Interpreter is effectively invisible&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;ChatGPT Code Interpreter&lt;/strong&gt; has been one of my favourite AI tools for over a year. It's the feature of ChatGPT which allows the bot to write &lt;em&gt;and then execute&lt;/em&gt; Python code as part of responding to your prompts. It's incredibly powerful... and almost invisible! If you don't know how to use prompts to activate the feature you may not realize it exists.&lt;/p&gt;
&lt;p&gt;OpenAI don't even have a help page for it (and it very desperately needs documentation) - if you search their site you'll find &lt;a href="https://platform.openai.com/docs/assistants/tools/code-interpreter"&gt;confusing technical docs&lt;/a&gt; about an API feature and &lt;a href="https://community.openai.com/t/how-can-i-access-the-code-interpreter-plugin-model/205304"&gt;misleading outdated forum threads&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I evangelize this tool &lt;em&gt;a lot&lt;/em&gt;, but OpenAI really aren't helping me do that. I end up linking people to &lt;a href="https://simonwillison.net/tags/code-interpreter/"&gt;my code-interpreter tag page&lt;/a&gt; because it's more useful than anything on OpenAI's own site.&lt;/p&gt;
&lt;p&gt;Compare this with Claude's similar Artifacts feature which at least has an &lt;a href="https://support.anthropic.com/en/articles/9487310-what-are-artifacts-and-how-do-i-use-them"&gt;easily discovered help page&lt;/a&gt; - though &lt;a href="https://www.anthropic.com/news/claude-3-5-sonnet"&gt;the Artifacts announcement post&lt;/a&gt; was shared with Claude 3.5 Sonnet so isn't obviously linkable. Even that help page isn't quite what I'm after. Features deserve dedicated pages!&lt;/p&gt;
&lt;p&gt;GitHub understand this: here are their feature landing pages for &lt;a href="https://github.com/features/codespaces"&gt;Codespaces&lt;/a&gt; and &lt;a href="https://github.com/features/copilot"&gt;Copilot&lt;/a&gt; (I could even guess the URL for Copilot's page based on the Codespaces one).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; It turns out there IS documentation about Code Interpreter mode... but I failed to find it because it didn't use those terms anywhere on the page! The title is &lt;a href="https://help.openai.com/en/articles/8437071-data-analysis-with-chatgpt"&gt;Data analysis with ChatGPT&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This amuses me greatly because OpenAI have been oscillating on the name for this feature almost since they launched - Code Interpreter, then Advanced Data Analysis, now Data analysis with ChatGPT. I made fun of this &lt;a href="https://simonwillison.net/2023/Oct/17/open-questions/#open-questions.034.jpeg"&gt;last year&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id="boring-technology-an-idea-with-a-website"&gt;Boring Technology: an idea with a website&lt;/h4&gt;
&lt;p&gt;Dan McKinley coined the term &lt;strong&gt;Boring Technology&lt;/strong&gt; in &lt;a href="https://mcfunley.com/choose-boring-technology"&gt;an essay in 2015&lt;/a&gt;. The key idea is that any development team has a limited capacity to solve new problems which should be reserved for the things that make their product unique. For everything else they should pick the most boring and well-understood technologies available to them - stuff where any bugs or limitations have been understood and discussed online for years.&lt;/p&gt;
&lt;p&gt;(I'm very proud that Django has earned the honorific of "boring technology" in this context!)&lt;/p&gt;
&lt;p&gt;Dan turned that essay into a talk, and then he turned that talk into a website with a brilliant domain name:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://boringtechnology.club/"&gt;boringtechnology.club&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The idea has stuck. I've had many productive conversations about it, and more importantly if someone &lt;em&gt;hasn't&lt;/em&gt; heard the term before I can drop in that one link and they'll be up to speed a few minutes later.&lt;/p&gt;
&lt;p&gt;I've tried to do this myself for some of my own ideas: &lt;a href="https://simonwillison.net/2021/Jul/28/baked-data/"&gt;baked data&lt;/a&gt;, &lt;a href="https://simonwillison.net/2020/Oct/9/git-scraping/"&gt;git scraping&lt;/a&gt; and &lt;a href="https://simonwillison.net/series/prompt-injection/"&gt;prompt injection&lt;/a&gt; all have pages that I frequently link people to. I never went as far as committing to a domain though and I think maybe that was a mistake - having a clear message that "this is the key page to link to" is a very powerful thing.&lt;/p&gt;
&lt;h4 id="this-is-about-both-seo-and-conversations"&gt;This is about both SEO and conversations&lt;/h4&gt;
&lt;p&gt;One obvious goal here is SEO: if someone searches for your product feature you want them to land on your own site, not surrender valuable attention to someone else who's squatting on the search term.&lt;/p&gt;
&lt;p&gt;I personally value the conversation side of it even more. Hyperlinks are the best thing about the web - if I want to talk about something I'd much rather drop in a link to the definitive explanation rather than waste a paragraph (as I did earlier with Code Interpreter) explaining what the thing is for the upmteenth time!&lt;/p&gt;
&lt;p&gt;If you have an idea, project or feature that you want people to understand and discuss, build it the web page it deserves. &lt;strong&gt;Give people something to link to!&lt;/strong&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/github"&gt;github&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/marketing"&gt;marketing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/seo"&gt;seo&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/chatgpt"&gt;chatgpt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/boring-technology"&gt;boring-technology&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/code-interpreter"&gt;code-interpreter&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="github"/><category term="marketing"/><category term="seo"/><category term="writing"/><category term="openai"/><category term="chatgpt"/><category term="claude"/><category term="boring-technology"/><category term="code-interpreter"/><category term="coding-agents"/></entry><entry><title>Quoting Andrew Ti</title><link href="https://simonwillison.net/2024/Jun/23/andrew-ti/#atom-tag" rel="alternate"/><published>2024-06-23T05:22:27+00:00</published><updated>2024-06-23T05:22:27+00:00</updated><id>https://simonwillison.net/2024/Jun/23/andrew-ti/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://twitter.com/andrewti/status/1804591245161119901"&gt;&lt;p&gt;The people who are most confident AI can replace writers are the ones who think writing is typing.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://twitter.com/andrewti/status/1804591245161119901"&gt;Andrew Ti&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/copywriting"&gt;copywriting&lt;/a&gt;&lt;/p&gt;



</summary><category term="writing"/><category term="ai"/><category term="generative-ai"/><category term="copywriting"/></entry><entry><title>Wikipedia Manual of Style: Linking</title><link href="https://simonwillison.net/2024/Jun/22/wikipedia-manual-of-style-linking/#atom-tag" rel="alternate"/><published>2024-06-22T14:15:54+00:00</published><updated>2024-06-22T14:15:54+00:00</updated><id>https://simonwillison.net/2024/Jun/22/wikipedia-manual-of-style-linking/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://en.wikipedia.org/wiki/Wikipedia:Manual_of_Style/Linking"&gt;Wikipedia Manual of Style: Linking&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I started &lt;a href="https://fedi.simonwillison.net/@simon/112657927527940565"&gt;a conversation on Mastodon&lt;/a&gt; about the grammar of linking: how to decide where in a phrase an inline link should be placed.&lt;/p&gt;
&lt;p&gt;Lots of great (and varied) replies there. The most comprehensive style guide I've seen so far is this one from Wikipedia, via Tom Morris.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://mastodon.social/@tommorris/112658974488727954"&gt;Tom Morris&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/links"&gt;links&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wikipedia"&gt;wikipedia&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;&lt;/p&gt;



</summary><category term="links"/><category term="wikipedia"/><category term="writing"/></entry><entry><title>Quoting Michal Zalewski</title><link href="https://simonwillison.net/2024/Jun/4/michal-zalewski/#atom-tag" rel="alternate"/><published>2024-06-04T21:13:29+00:00</published><updated>2024-06-04T21:13:29+00:00</updated><id>https://simonwillison.net/2024/Jun/4/michal-zalewski/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://lcamtuf.substack.com/p/you-should-write-more"&gt;&lt;p&gt;You don’t need to be the world’s leading expert to write about a particular topic. Experts are often busy and struggle to explain concepts in an accessible way. You should be honest with yourself and with your readers about what you know and don’t know — but otherwise, it’s OK to write about what excites you, and to do it as you learn.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://lcamtuf.substack.com/p/you-should-write-more"&gt;Michal Zalewski&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/blogger"&gt;blogger&lt;/a&gt;&lt;/p&gt;



</summary><category term="writing"/><category term="blogger"/></entry><entry><title>Quoting Alex Jason</title><link href="https://simonwillison.net/2024/Apr/25/alex-jason-via-adam-savage/#atom-tag" rel="alternate"/><published>2024-04-25T14:17:57+00:00</published><updated>2024-04-25T14:17:57+00:00</updated><id>https://simonwillison.net/2024/Apr/25/alex-jason-via-adam-savage/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://web.archive.org/web/20170703154530/https://www.tested.com/art/makers/557288-origin-only-difference-between-screwing-around-and-science-writing-it-down/"&gt;&lt;p&gt;The only difference between screwing around and science is writing it down&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://web.archive.org/web/20170703154530/https://www.tested.com/art/makers/557288-origin-only-difference-between-screwing-around-and-science-writing-it-down/"&gt;Alex Jason&lt;/a&gt;, via Adam Savage&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/science"&gt;science&lt;/a&gt;&lt;/p&gt;



</summary><category term="writing"/><category term="science"/></entry><entry><title>Write about what you learn. It pushes you to understand topics better.</title><link href="https://simonwillison.net/2023/Aug/14/write-about-what-you-learn/#atom-tag" rel="alternate"/><published>2023-08-14T14:50:48+00:00</published><updated>2023-08-14T14:50:48+00:00</updated><id>https://simonwillison.net/2023/Aug/14/write-about-what-you-learn/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://addyosmani.com/blog/write-learn/"&gt;Write about what you learn. It pushes you to understand topics better.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Addy Osmani clearly articulates why writing frequently is such a powerful tool for learning more effectively. This post doesn’t mention TILs but it perfectly encapsulates the value I get from publishing them.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=37118883"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/blogging"&gt;blogging&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/til"&gt;til&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/addy-osmani"&gt;addy-osmani&lt;/a&gt;&lt;/p&gt;



</summary><category term="blogging"/><category term="writing"/><category term="til"/><category term="addy-osmani"/></entry><entry><title>Quoting u/Ashamed_Apricot6626</title><link href="https://simonwillison.net/2023/Apr/11/ashamed-apricot/#atom-tag" rel="alternate"/><published>2023-04-11T18:20:36+00:00</published><updated>2023-04-11T18:20:36+00:00</updated><id>https://simonwillison.net/2023/Apr/11/ashamed-apricot/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://www.reddit.com/r/freelanceWriters/comments/12ff5mw/it_happened_to_me_today/"&gt;&lt;p&gt;I literally lost my biggest and best client to ChatGPT today. This client is my main source of income, he’s a marketer who outsources the majority of his copy and content writing to me. Today he emailed saying that although he knows AI’s work isn’t nearly as good as mine, he can’t ignore the profit margin. [...] Please do not think you are immune to this unless you are the top 1% of writers. I just signed up for Doordash as a driver. I really wish I was kidding.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://www.reddit.com/r/freelanceWriters/comments/12ff5mw/it_happened_to_me_today/"&gt;u/Ashamed_Apricot6626&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ethics"&gt;ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/chatgpt"&gt;chatgpt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/copywriting"&gt;copywriting&lt;/a&gt;&lt;/p&gt;



</summary><category term="writing"/><category term="ethics"/><category term="chatgpt"/><category term="ai"/><category term="llms"/><category term="ai-ethics"/><category term="copywriting"/></entry><entry><title>Quoting Ryan Bradley</title><link href="https://simonwillison.net/2023/Feb/27/ryan-bradley/#atom-tag" rel="alternate"/><published>2023-02-27T18:10:10+00:00</published><updated>2023-02-27T18:10:10+00:00</updated><id>https://simonwillison.net/2023/Feb/27/ryan-bradley/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://www.theatlantic.com/technology/archive/2023/02/use-openai-chatgpt-playground-at-work/673195/"&gt;&lt;p&gt;I think now of all the kids coming up who are learning to write alongside ChatGPT, just as I learned to write with spell-check. ChatGPT isn’t writing for them; it’s producing copy. For plenty of people, having a robot help them produce serviceable copy will be exactly enough to allow them to get by in the world. But for some, it will lower a barrier. It will be the beginning of their writing career, because they will learn that even though plenty of writing begins with shitty, soulless copy, the rest of writing happens in edits, in reworking the draft, in all the stuff beyond the initial slog of just getting words down onto a page.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://www.theatlantic.com/technology/archive/2023/02/use-openai-chatgpt-playground-at-work/673195/"&gt;Ryan Bradley&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/chatgpt"&gt;chatgpt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;&lt;/p&gt;



</summary><category term="chatgpt"/><category term="writing"/><category term="ai"/><category term="generative-ai"/><category term="llms"/></entry><entry><title>What to blog about</title><link href="https://simonwillison.net/2022/Nov/6/what-to-blog-about/#atom-tag" rel="alternate"/><published>2022-11-06T17:05:37+00:00</published><updated>2022-11-06T17:05:37+00:00</updated><id>https://simonwillison.net/2022/Nov/6/what-to-blog-about/#atom-tag</id><summary type="html">
    &lt;p&gt;You should start a blog. Having your own little corner of the internet is good for the soul!&lt;/p&gt;
&lt;p&gt;But what should you write about?&lt;/p&gt;
&lt;p&gt;It's easy to get hung up on this. I've definitely felt the self-imposed pressure to only write something if it's new, and unique, and feels like it's never been said before. This is a mental trap that does nothing but hold you back.&lt;/p&gt;
&lt;p&gt;Here are two types of content that I guarantee you can produce and feel great about producing: TILs, and writing descriptions of your projects.&lt;/p&gt;
&lt;h4 id="tils"&gt;Today I Learned&lt;/h4&gt;
&lt;p&gt;A TIL - Today I Learned - is the most liberating form of content I know of.&lt;/p&gt;
&lt;p&gt;Did you just learn how to do something? Write about that.&lt;/p&gt;
&lt;p&gt;Call it a TIL - that way you're not promising anyone a revelation or an in-depth tutorial. You're saying "I just figured this out: here are my notes, you may find them useful too".&lt;/p&gt;
&lt;p&gt;I also like the humility of this kind of content. Part of the reason I publish them is to emphasize that even with 25 years of professional experience you should still celebrate learning even the most basic of things.&lt;/p&gt;
&lt;p&gt;I learned the "interact" command in &lt;code&gt;pdb&lt;/code&gt; the other day! &lt;a href="https://til.simonwillison.net/python/pdb-interact"&gt;Here's my TIL&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I started publishing TILs &lt;a href="https://simonwillison.net/2020/Apr/20/self-rewriting-readme/"&gt;in April 2020&lt;/a&gt;. I'm up to 346 now, and most of them took less than 10 minutes to write. It's such a great format for quick and satisfying online writing.&lt;/p&gt;
&lt;p&gt;My collection lives at &lt;a href="https://til.simonwillison.net"&gt;https://til.simonwillison.net&lt;/a&gt; - which publishes content from my &lt;a href="https://github.com/simonw/til"&gt;simonw/til&lt;/a&gt; GitHub repository.&lt;/p&gt;
&lt;h4 id="projects"&gt;Write about your projects&lt;/h4&gt;
&lt;p&gt;If you do a project, you should write about it.&lt;/p&gt;
&lt;p&gt;I recommend adding "write about it" to your definition of "done" for anything that you build or create.&lt;/p&gt;
&lt;p&gt;Like with TILs, this takes away the pressure to be unique. It doesn't matter if your project overlaps with thousands of others: the experience of building it is unique to you. You deserve to have a few paragraphs and a screenshot out there explaining (and quietly celebrating) what you made.&lt;/p&gt;
&lt;p&gt;The screenshot is particularly important. Will your project still exist and work in a decade? I hope so, but we all know how quickly things succumb to bit-rot.&lt;/p&gt;
&lt;p&gt;Even better than a screenshot: an animated GIF screenshot! I capture these with &lt;a href="https://www.cockos.com/licecap/"&gt;LICEcap&lt;/a&gt;. And a video is even better than that, but those take a lot more effort to produce.&lt;/p&gt;
&lt;p&gt;It's &lt;em&gt;incredibly&lt;/em&gt; tempting to skip the step where you write about a project. But any time you do that you're leaving a huge amount of uncaptured value from that project on the table.&lt;/p&gt;
&lt;p&gt;These days I make myself do it: I tell myself that writing about something is the cost I have to pay for building it. And I &lt;em&gt;always&lt;/em&gt; end up feeling that the effort was more than worthwhile.&lt;/p&gt;
&lt;p&gt;Check out my &lt;a href="https://simonwillison.net/tags/projects/"&gt;projects tag&lt;/a&gt; for examples of this kind of content.&lt;/p&gt;
&lt;p&gt;So that's my advice for blogging: &lt;strong&gt;write about things you've learned, and write about things you've built!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update 22nd December 2024: I identified a third useful category: writing about &lt;a href="https://simonwillison.net/2024/Dec/22/link-blog/"&gt;things you've found&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/blogging"&gt;blogging&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="blogging"/><category term="writing"/></entry><entry><title>Writing better release notes</title><link href="https://simonwillison.net/2022/Jan/31/release-notes/#atom-tag" rel="alternate"/><published>2022-01-31T20:13:50+00:00</published><updated>2022-01-31T20:13:50+00:00</updated><id>https://simonwillison.net/2022/Jan/31/release-notes/#atom-tag</id><summary type="html">
    &lt;p&gt;Release notes are an important part of the open source process. I've been thinking about these a lot recently, and I've assembled some thoughts on how to do a better job with them.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Write release notes&lt;/strong&gt;. Seriously - if you want people to take advantage of the work you have been doing to improve your projects, you need to tell them about it!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Include the date&lt;/strong&gt;. The date matters a lot, because I want to be able to determine how old a release is - especially important for the dependencies I am using.&lt;/p&gt;
&lt;p&gt;It’s much more reasonable to assume people will be running as a minimum a version from 3 years ago than one that came out last week.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Make sure people can link to the release notes&lt;/strong&gt; for a version. This can be a page-per-release or an anchor target on the releases page, but it needs to be possible and it needs to be discoverable.&lt;/p&gt;
&lt;p&gt;There are some projects for which I have to view source on the HTML page to find the anchor links for the version headers - don’t make me do that!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For larger releases, &lt;strong&gt;break them up with headers&lt;/strong&gt;. “New features” v.s. “Bug fixes” is a useful distinction.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Emphasize the highlights&lt;/strong&gt;. It can be easy for the highlights of a larger release to get lost in a sea of bullet points. I’ll sometimes include an introductory paragraph highlighting the major themes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Link to relevant documentation&lt;/strong&gt; from the release notes. If I want to know more about a new feature that should be the best place for me to start.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Flesh them out with &lt;strong&gt;examples and screenshots&lt;/strong&gt;. Most release notes are pretty dry - there’s no space limit on these things, so feel free to use all of the tools at your disposal to best answer the question “what has changed and why does this matter to me?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Link to the associated issue thread&lt;/strong&gt;. If I want to know more about a feature, and you’ve been using issues effectively, the issue link can tell me the entire story of the new feature in more detail than anything else.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Credit your contributors!&lt;/strong&gt; If someone helped build a feature the release notes are a great place to give them a shout out.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Once shipped, let people know&lt;/strong&gt;. I mainly use Twitter for this, but I also write about releases on my blog (in &lt;a href="https://simonwillison.net/tags/weeknotes/"&gt;my weeknotes&lt;/a&gt;) and push out news about major releases through &lt;a href="https://datasette.substack.com/"&gt;my project newsletter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When I tweet my release notes (&lt;a href="https://twitter.com/datasetteproj/status/1461070941862039552"&gt;recent example&lt;/a&gt;) I include both a link to them and, if they’re short, a screenshot of the release notes with an alt= attribute duplicating their content.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;GitHub Releases and GitHub Actions&lt;/h4&gt;
&lt;p&gt;I really like the &lt;a href="https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository"&gt;GitHub releases feature&lt;/a&gt;. You can easily create new release attached to tags, and each release gets its own linkable page. Release notes are written in Markdown and you can edit them later on, expanding them further and fixing any typos or errors.&lt;/p&gt;
&lt;p&gt;Releases pages also automatically link to a zip or .tar.gz file of your repository at that tag, and you can attach binary builds to that page too.&lt;/p&gt;
&lt;p&gt;Plus they have a good API, and they integrate well with GitHub Actions.&lt;/p&gt;
&lt;p&gt;I manage all of my Python package releases using this - I have &lt;a href="https://github.com/simonw/sqlite-utils/blob/main/.github/workflows/publish.yml"&gt;an actions workflow&lt;/a&gt; which triggers on a new GitHub release, builds and packages that tag and then uploads it to PyPI - so all I have to do is click “new release” and fill in the form and my automation does the rest of the work.&lt;/p&gt;
&lt;p&gt;I use the GitHub API to show links to my most recent releases on both &lt;a href="https://datasette.io/"&gt;the Datasette homepage&lt;/a&gt; and my &lt;a href="https://github.com/simonw"&gt;personal GitHub profile&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Annotated release notes&lt;/h4&gt;
&lt;p&gt;Something I’ve been trying with my own projects is publishing &lt;a href="https://simonwillison.net/tags/annotatedreleasenotes/"&gt;annotated release notes&lt;/a&gt; to accompany the official ones.&lt;/p&gt;
&lt;p&gt;The idea here is that while the official release notes succinctly document “what changed”, the annotated ones are a place where I can provide personal notes about the new features - the background on them, what I learned along the way and my own opinions on what they are useful for and why.&lt;/p&gt;
&lt;p&gt;I enjoy writing these, but I’ve not yet got a great feel for if people find them useful or not - so I’m not ready to recommend them as a thing that other projects should aim to replicate. I like them though, so if you write them for your project I will look forward to reading them!&lt;/p&gt;
&lt;h4&gt;Some examples&lt;/h4&gt;
&lt;p&gt;I'm a huge fan of &lt;a href="https://docs.djangoproject.com/en/4.0/releases/"&gt;Django's release notes&lt;/a&gt; - they're some of the best I've ever seen. It's worth exploring both &lt;a href="https://docs.djangoproject.com/en/4.0/releases/4.0.2/"&gt;minor releases&lt;/a&gt; and &lt;a href="https://docs.djangoproject.com/en/4.0/releases/4.0/"&gt;major releases&lt;/a&gt; for an example of what this looks like when it's done really well.&lt;/p&gt;
&lt;p&gt;For my own projects, I put the most effort into the release notes &lt;a href="https://docs.datasette.io/en/stable/changelog.html"&gt;for Datasette&lt;/a&gt; and &lt;a href="https://sqlite-utils.datasette.io/en/stable/changelog.html"&gt;for sqlite-utils&lt;/a&gt;. Both of those projects have a dedicated page in their documentation.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://sqlite-utils.datasette.io/en/stable/changelog.html#v3-10"&gt;sqlite-utils 3.10&lt;/a&gt; and &lt;a href="https://docs.datasette.io/en/stable/changelog.html#v0-44"&gt;Datasette 0.44&lt;/a&gt; are some of my better examples.&lt;/p&gt;
&lt;p&gt;I also write about them on my blog. Here's the full series of &lt;a href="https://simonwillison.net/series/datasette-release-notes/"&gt;annotated release notes for Datasette&lt;/a&gt;, and my write-ups of &lt;a href="https://simonwillison.net/series/sqlite-utils-features/"&gt;new features added to sqlite-utils&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My smaller projects use GitHub Releases rather than having a dedicated page in their documentation. &lt;a href="https://github.com/simonw/datasette-graphql/releases/tag/0.10"&gt;datasette-graphql 0.10&lt;/a&gt; and &lt;a href="https://github.com/simonw/s3-credentials/releases/tag/0.9"&gt;s3-credentials 0.9&lt;/a&gt; are two good examples there.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/releasenotes"&gt;releasenotes&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="open-source"/><category term="releasenotes"/><category term="writing"/></entry><entry><title>Quoting Stephanie Morillo</title><link href="https://simonwillison.net/2020/Dec/28/stephanie-morillo/#atom-tag" rel="alternate"/><published>2020-12-28T15:58:31+00:00</published><updated>2020-12-28T15:58:31+00:00</updated><id>https://simonwillison.net/2020/Dec/28/stephanie-morillo/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://www.stephaniemorillo.co/post/a-brief-introduction-to-technical-writing"&gt;&lt;p&gt;While copywriting is used to persuade a user to take a certain action, technical writing exists to support the user and remove barriers to getting something done. Good technical writing is hard because writers must get straight to the point without losing or confusing readers.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://www.stephaniemorillo.co/post/a-brief-introduction-to-technical-writing"&gt;Stephanie Morillo&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/copywriting"&gt;copywriting&lt;/a&gt;&lt;/p&gt;



</summary><category term="writing"/><category term="copywriting"/></entry><entry><title>Story Structure 104: The Juicy Details</title><link href="https://simonwillison.net/2019/Apr/25/story-structure-104-juicy-details/#atom-tag" rel="alternate"/><published>2019-04-25T13:17:51+00:00</published><updated>2019-04-25T13:17:51+00:00</updated><id>https://simonwillison.net/2019/Apr/25/story-structure-104-juicy-details/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://channel101.fandom.com/wiki/Story_Structure_104:_The_Juicy_Details"&gt;Story Structure 104: The Juicy Details&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Dan Harmon (Community, Rick and Morty) wrote a fascinating series of essays on story structure for his Channel 101 film festival project. It’s worth reading the whole series, but this chapter is where things get really detailed.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/screen-writing"&gt;screen-writing&lt;/a&gt;&lt;/p&gt;



</summary><category term="writing"/><category term="screen-writing"/></entry><entry><title>Quoting John Gruber</title><link href="https://simonwillison.net/2018/Jan/25/john-gruber/#atom-tag" rel="alternate"/><published>2018-01-25T13:43:42+00:00</published><updated>2018-01-25T13:43:42+00:00</updated><id>https://simonwillison.net/2018/Jan/25/john-gruber/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://daringfireball.net/linked/2018/01/24/how-to-write"&gt;&lt;p&gt;I spent more time on my iPhone X review than anything I’ve written in years, and it went to paper twice. (Here’s a scan of my second printed draft, with handwritten revisions.) My thing is that I don’t use my favorite pen — which, of course, has black ink — but instead a pen with red ink. Editing is an angry, bloody act and therefore must be done in red.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://daringfireball.net/linked/2018/01/24/how-to-write"&gt;John Gruber&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/john-gruber"&gt;john-gruber&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;&lt;/p&gt;



</summary><category term="john-gruber"/><category term="writing"/></entry><entry><title>Medicaid Eligibility | plainlanguage.gov</title><link href="https://simonwillison.net/2017/Nov/20/medicaid-eligibility/#atom-tag" rel="alternate"/><published>2017-11-20T01:59:44+00:00</published><updated>2017-11-20T01:59:44+00:00</updated><id>https://simonwillison.net/2017/Nov/20/medicaid-eligibility/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://plainlanguage.gov/examples/before-and-after/medicaid-eligibility/"&gt;Medicaid Eligibility | plainlanguage.gov&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Useful resource for helping government writers use clear language. I love that this is an official US government website written using Jekyll and developed entirely in the open on GutHub—the commit history is fascinating.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/designuxui/status/931656987518967809"&gt;Jonathan Shariat&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;&lt;/p&gt;



</summary><category term="writing"/></entry><entry><title>Hemingway Editor</title><link href="https://simonwillison.net/2017/Nov/1/hemingway-editor/#atom-tag" rel="alternate"/><published>2017-11-01T20:38:15+00:00</published><updated>2017-11-01T20:38:15+00:00</updated><id>https://simonwillison.net/2017/Nov/1/hemingway-editor/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.hemingwayapp.com/"&gt;Hemingway Editor&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Hemingway is a web-based editor that applies style checks to your writing. It looks for complicated words, unnecessary adverbs and sentences that are hard to read. It highlighted the previous sentence as hard to read. It gave this whole paragraph a Grade 8 readability score.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;&lt;/p&gt;



</summary><category term="writing"/></entry><entry><title>The magic of sub-editors</title><link href="https://simonwillison.net/2010/Feb/16/john/#atom-tag" rel="alternate"/><published>2010-02-16T10:44:40+00:00</published><updated>2010-02-16T10:44:40+00:00</updated><id>https://simonwillison.net/2010/Feb/16/john/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.jgc.org/blog/2010/02/magic-of-sub-editors.html"&gt;The magic of sub-editors&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
A neat illustration of how sub-editors work their magic, using the original article with strikes through the parts that were edited out.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/john-graham-cumming"&gt;john-graham-cumming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/science"&gt;science&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/subeditors"&gt;subeditors&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;&lt;/p&gt;



</summary><category term="john-graham-cumming"/><category term="science"/><category term="subeditors"/><category term="writing"/></entry><entry><title>What is it like to write a technical book?</title><link href="https://simonwillison.net/2008/Jun/20/like/#atom-tag" rel="alternate"/><published>2008-06-20T08:18:53+00:00</published><updated>2008-06-20T08:18:53+00:00</updated><id>https://simonwillison.net/2008/Jun/20/like/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.xaprb.com/blog/2008/06/15/what-is-it-like-to-write-a-technical-book/"&gt;What is it like to write a technical book?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Plenty of food for thought from the lead author of the new edition of High Performance MySQL. It’s amazing how Word is still an integral part of most technical book projects despite its obvious inadequacies compared to a toolchain based on plain text files and Subversion (the Django Book used ReST and Subversion to great effect).


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/baron-schwartz"&gt;baron-schwartz&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/plaintext"&gt;plaintext&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rest"&gt;rest&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/subversion"&gt;subversion&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/word"&gt;word&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;&lt;/p&gt;



</summary><category term="baron-schwartz"/><category term="django"/><category term="plaintext"/><category term="rest"/><category term="subversion"/><category term="word"/><category term="writing"/></entry><entry><title>The Art &amp; Science of JavaScript</title><link href="https://simonwillison.net/2008/Jan/12/artscience/#atom-tag" rel="alternate"/><published>2008-01-12T19:05:27+00:00</published><updated>2008-01-12T19:05:27+00:00</updated><id>https://simonwillison.net/2008/Jan/12/artscience/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0980285844/swillison-20"&gt;The Art &amp;amp; Science of JavaScript&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The JavaScript book I contributed to is now shipping! My chapter describes how to build a Flickr / Google Maps mashup entirely using client-side code (via JSON-P).


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/books"&gt;books&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/flickr"&gt;flickr&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google-maps"&gt;google-maps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/json"&gt;json&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jsonp"&gt;jsonp&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sitepoint"&gt;sitepoint&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/theartandscienceofjavascript"&gt;theartandscienceofjavascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;&lt;/p&gt;



</summary><category term="books"/><category term="flickr"/><category term="google-maps"/><category term="javascript"/><category term="json"/><category term="jsonp"/><category term="sitepoint"/><category term="theartandscienceofjavascript"/><category term="writing"/></entry><entry><title>Chapter 7: Form Processing</title><link href="https://simonwillison.net/2007/Dec/16/chapter/#atom-tag" rel="alternate"/><published>2007-12-16T21:44:44+00:00</published><updated>2007-12-16T21:44:44+00:00</updated><id>https://simonwillison.net/2007/Dec/16/chapter/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.djangobook.com/en/1.0/chapter07/"&gt;Chapter 7: Form Processing&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The chapter on newforms I contributed to “The Definitive Guide to Django” is now online, along with the rest of the published book.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django-book"&gt;django-book&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/newforms"&gt;newforms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="django-book"/><category term="newforms"/><category term="python"/><category term="writing"/></entry><entry><title>Quoting John C. Welch</title><link href="https://simonwillison.net/2007/Jul/12/bynkiicom/#atom-tag" rel="alternate"/><published>2007-07-12T18:23:30+00:00</published><updated>2007-07-12T18:23:30+00:00</updated><id>https://simonwillison.net/2007/Jul/12/bynkiicom/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://www.bynkii.com/archives/2007/07/oh_lord_now_the_exchange_team_1.html"&gt;&lt;p&gt;Could someone please send, to whomever the hell teaches communication skills/techniques at Microsoft, a copy of the Chicago Manual, and perhaps a sixth - grade grammar text? I swear, there's almost no one from that company who can write a proper English sentence.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://www.bynkii.com/archives/2007/07/oh_lord_now_the_exchange_team_1.html"&gt;John C. Welch&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/microsoft"&gt;microsoft&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/john-c-welch"&gt;john-c-welch&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/english"&gt;english&lt;/a&gt;&lt;/p&gt;



</summary><category term="microsoft"/><category term="john-c-welch"/><category term="writing"/><category term="english"/></entry><entry><title>Mobile Device Connectivity to Exchange using IMAP vs Exchange ActiveSync</title><link href="https://simonwillison.net/2007/Jul/12/you/#atom-tag" rel="alternate"/><published>2007-07-12T17:17:08+00:00</published><updated>2007-07-12T17:17:08+00:00</updated><id>https://simonwillison.net/2007/Jul/12/you/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://msexchangeteam.com/archive/2007/07/10/446015.aspx"&gt;Mobile Device Connectivity to Exchange using IMAP vs Exchange ActiveSync&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I count 14 instances of “experience” in this 1,000 word blog entry. Do real people talk like this?

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://daringfireball.net/linked/2007/july#thu-12-exchange"&gt;John Gruber&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/activesync"&gt;activesync&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/communication"&gt;communication&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/exchange"&gt;exchange&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/experience"&gt;experience&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/imap"&gt;imap&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/john-gruber"&gt;john-gruber&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/microsoft"&gt;microsoft&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/weaselwords"&gt;weaselwords&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;&lt;/p&gt;



</summary><category term="activesync"/><category term="communication"/><category term="exchange"/><category term="experience"/><category term="imap"/><category term="john-gruber"/><category term="microsoft"/><category term="weaselwords"/><category term="writing"/></entry><entry><title>Quoting Dave Thomas</title><link href="https://simonwillison.net/2007/Mar/24/sywtwab/#atom-tag" rel="alternate"/><published>2007-03-24T15:05:51+00:00</published><updated>2007-03-24T15:05:51+00:00</updated><id>https://simonwillison.net/2007/Mar/24/sywtwab/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://pragdave.pragprog.com/pragdave/2007/03/sywtwab_5_findi.html"&gt;&lt;p&gt;When I write a new book [...] I plan to throw away something like the first 30 or so pages. And, because I know I'm going to do it, it doesn't worry me. I no longer have writer's block.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://pragdave.pragprog.com/pragdave/2007/03/sywtwab_5_findi.html"&gt;Dave Thomas&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/dave-thomas"&gt;dave-thomas&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;&lt;/p&gt;



</summary><category term="dave-thomas"/><category term="writing"/></entry><entry><title>Dave Thomas on Writing a Book</title><link href="https://simonwillison.net/2007/Mar/24/pragdave/#atom-tag" rel="alternate"/><published>2007-03-24T14:53:31+00:00</published><updated>2007-03-24T14:53:31+00:00</updated><id>https://simonwillison.net/2007/Mar/24/pragdave/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://pragdave.pragprog.com/pragdave/writing_a_book/index.html"&gt;Dave Thomas on Writing a Book&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
A series of articles on writing a technical book, from Pragmatic Programmer Dave Thomas.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/dave-thomas"&gt;dave-thomas&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;&lt;/p&gt;



</summary><category term="dave-thomas"/><category term="writing"/></entry></feed>