{
    "archive_path": "archive/1774899972.061076",
    "base_url": "alexhwoods.com/dont-let-ai-write-for-you",
    "basename": "",
    "bookmarked_date": "2026-03-30 19:46",
    "canonical": {
        "archive_org_path": "https://web.archive.org/web/alexhwoods.com/dont-let-ai-write-for-you",
        "dom_path": "output.html",
        "favicon_path": "favicon.ico",
        "git_path": "git/",
        "google_favicon_path": "https://www.google.com/s2/favicons?domain=alexhwoods.com",
        "headers_path": "headers.json",
        "htmltotext_path": "htmltotext.txt",
        "index_path": "index.html",
        "media_path": "media/",
        "mercury_path": "mercury/content.html",
        "pdf_path": "output.pdf",
        "readability_path": "readability/content.html",
        "screenshot_path": "screenshot.png",
        "singlefile_path": "singlefile.html",
        "warc_path": "warc/",
        "wget_path": null
    },
    "domain": "alexhwoods.com",
    "downloaded_at": "2026-03-30T19:46:17.459721+00:00",
    "downloaded_datestr": "2026-03-30 19:46",
    "extension": "",
    "hash": "292HANBCKG9H1TRKHNBH",
    "history": {
        "archive_org": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--head",
                    "--max-time",
                    "60",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://web.archive.org/save/https://alexhwoods.com/dont-let-ai-write-for-you/"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2026-03-30T19:46:58.651671+00:00",
                "index_texts": null,
                "output": "https://web.archive.org/web/20260330192547/https://alexhwoods.com/dont-let-ai-write-for-you/",
                "pwd": "/data/archive/1774899972.061076",
                "schema": "ArchiveResult",
                "start_ts": "2026-03-30T19:46:46.020870+00:00",
                "status": "succeeded"
            }
        ],
        "dom": [
            {
                "cmd": [
                    "/usr/bin/chromium-browser",
                    "--proxy-server=socks5://tor-socks-proxy:9150",
                    "--disable-features=DarkMode",
                    "--run-all-compositor-stages-before-draw",
                    "--hide-scrollbars",
                    "--autoplay-policy=no-user-gesture-required",
                    "--no-first-run",
                    "--use-fake-ui-for-media-stream",
                    "--use-fake-device-for-media-stream",
                    "--simulate-outdated-no-au='Tue, 31 Dec 2099 23:59:59 GMT'",
                    "--headless=new",
                    "--no-sandbox",
                    "--no-zygote",
                    "--disable-dev-shm-usage",
                    "--disable-software-rasterizer",
                    "--disable-sync",
                    "--window-size=1440,2000",
                    "--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "--user-data-dir=/data/personas/Default/chrome_profile",
                    "--profile-directory=Default",
                    "--dump-dom",
                    "https://alexhwoods.com/dont-let-ai-write-for-you/"
                ],
                "cmd_version": "131.0.6778",
                "end_ts": "2026-03-30T19:46:28.892717+00:00",
                "index_texts": null,
                "output": "output.html",
                "pwd": "/data/archive/1774899972.061076",
                "schema": "ArchiveResult",
                "start_ts": "2026-03-30T19:46:20.356216+00:00",
                "status": "succeeded"
            }
        ],
        "favicon": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--max-time",
                    "60",
                    "--output",
                    "favicon.ico",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://www.google.com/s2/favicons?domain=alexhwoods.com"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2026-03-30T19:46:20.046836+00:00",
                "index_texts": null,
                "output": "favicon.ico",
                "pwd": "/data/archive/1774899972.061076",
                "schema": "ArchiveResult",
                "start_ts": "2026-03-30T19:46:17.471319+00:00",
                "status": "succeeded"
            }
        ],
        "git": [],
        "headers": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--head",
                    "--max-time",
                    "60",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://alexhwoods.com/dont-let-ai-write-for-you/"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2026-03-30T19:46:20.184611+00:00",
                "index_texts": null,
                "output": "headers.json",
                "pwd": "/data/archive/1774899972.061076",
                "schema": "ArchiveResult",
                "start_ts": "2026-03-30T19:46:20.081063+00:00",
                "status": "succeeded"
            }
        ],
        "htmltotext": [
            {
                "cmd": [
                    "(internal) archivebox.extractors.htmltotext",
                    "./{singlefile,dom}.html"
                ],
                "cmd_version": "0.8.5rc51",
                "end_ts": "2026-03-30T19:46:38.206710+00:00",
                "index_texts": [
                    "(https://alexhwoods.com/dont-let-ai-write-for-you/) Don't Let AI Write For You (/_astro/_slug_.Bz7ufUMy.css)  (/) Alex Woods  (/about) About (Open search (cmd/ctrl+k))            (Search) () ESC  (/dont-let-ai-write-for-you) 2026.03 Don't Let AI Write For You    (/go-does-not-allow-truthiness) 2025.10 Go does not allow truthiness    (/tightening-constraints-in-postgres) 2025.10 Tightening Constraints in Postgres    (/domains-in-postgres) 2025.10 Domains in Postgres    (/exclusion-constraints-in-postgres) 2024.10 Unique and Exclusion Constraints in Postgres    (/types-from-tables-in-plpgsql) 2024.09 Types From Tables in PL/pgSQL    (/dynamic-commands-in-plpgsql) 2024.09 Dynamic Commands in PL/pgSQL    (/trigger-execution-order-in-postgres) 2024.09 Trigger Execution Order in Postgres    (/inserting-data-in-postgres) 2024.09 Inserting Data in Postgres    (/statement-triggers-in-postgres) 2024.09 Statement Triggers in Postgres    (/avoiding-unnecessarily-running-triggers-in-postgres) 2024.08 Avoiding Unnecessarily Running Triggers in Postgres    (/simple-semaphore-with-a-buffered-channel-in-go) 2024.05 Simple Semaphore With a Buffered Channel in Go    (/wc-clone) 2024.05 wc clone    (/two-approaches-to-building-a-chat-server) 2024.04 Two Approaches To Building A Chat Server    (/building-my-own-git) 2024.04 Building My Own Git    (/rust-format-strings) 2022.10 Format Strings in Rust    (/genqlient) 2022.08 Genqlient    (/structural-vs-nominal-type-systems) 2022.06 Structural vs. Nominal Type Systems    (/is-this-thing-on) 2022.01 \ud83c\udf99\ufe0f, \ud83c\udf99\ufe0f - Is this thing on?    (/cloud-kms-gcp) 2021.10 Evaluating GCP's Cloud Key Management Service    (/invert-a-binary-tree) 2021.07 Invert a Binary Tree    (/i-made-a-dumb-linux-mistake) 2021.07 I made a dumb linux mistake    (/what-happens-when-you-go-to-this-site-dns) 2021.07 What happens when you go to this site?    (/running-containers-on-aws) 2021.07 Running Containers on AWS    (/exploring-kubernetes-ingress) 2021.07 Exploring Kubernetes Ingress    (/how-to-revert-a-merge-commit) 2021.07 How To Revert a Merge Commit    (/how-to-reverse-a-linkedlist) 2021.07 How To Reverse a LinkedList    (/everything-useful-i-know-about-kubectl) 2021.06 Everything Useful I Know About kubectl    (/what-is-a-vpn) 2021.05 What is a VPN?    (/lua-libraries-in-istios-envoyfilter) 2021.04 Lua Libraries in Istio's EnvoyFilter    (/pulumi-vs-terraform) 2021.02 Pulumi vs Terraform    (/notes-on-jan-4th-slack-outage) 2021.01 Notes on Jan 4th, 2021 Slack Outage    (/socket-hang-up) 2021.01 Socket Hang Ups    (/consistent-hashing) 2020.09 Consistent Hashing    (/why-service-mesh) 2020.09 Why spend innovation tokens on a service mesh?    (/overlays-over-templating) 2020.07 Overlays over templating    (/bigtable-intro) 2020.05 Intro to Bigtable    (/joining-streams) 2020.03 Deep Dive into Joining in Kafka Streams    (/sensible-schema-evolution) 2020.03 Sensible Schema Evolution    (/landing-a-message) 2020.02 Landing a message from Kafka    (/git-home) 2020.02 Git home    (/scope-functions) 2020.02 Choosing the right scope function in Kotlin    (/inline-functions) 2020.01 Inline Functions    (/reverse-integer) 2020.01 Kotlin Algorithm Challenge #3    (/cdc) 2020.01 Change Data Capture    (/data-classes) 2020.01 What do data classes give you in Kotlin?    (/kafka-hello-world) 2020.01 Kafka Hello World    (/longest-substring) 2020.01 Kotlin Algorithm Challenge #2    (/kotlin-lambda-syntax) 2020.01 Kotlin's Lambda Syntax    (/add-two-numbers) 2019.12 Kotlin Algorithm Challenge #1    (/exactly-once) 2019.11 Exactly Once    (/introduction-to-celery) 2019.10 Introduction To Celery    (/event-loop-polling) 2019.08 How the Node.js Event Loop Polls    (/async-io) 2019.07 Asynchronous I/O    (/generators-in-javascript) 2019.07 Generators in JavaScript    (/classes-in-javascript) 2019.07 Classes in JavaScript    (/modules-in-nodejs) 2019.06 Modules in Node.js    (/data-structures-and-database-indexes) 2019.06 Data Structures and Database Indexes    (/http-persistent-connections) 2019.06 HTTP Persistent Connections    (/gits-dag) 2019.06 Git's DAG    (/gradle-is-a-dag) 2019.05 Gradle is a DAG    (/topological-ordering) 2019.05 What is a topological ordering?    (/dag) 2019.05 What is a DAG?    (/dijkstras-algorithm-in-kotlin) 2019.04 Dijkstra\u2019s Algorithm in Kotlin    (/how-similar-is-the-execution-of-java-and-javascript) 2019.04 How similar is the execution of Java and JavaScript?    (/introduction-to-monte-carlo-methods) 2015.07 Introduction to Monte Carlo Methods          Don't Let AI Write For You  Mar 8, 2026    When you write a document or essay, you are posing a question and then answering it. For example, a PRD answers the question, \u201cWhat should we build?\u201d A technical spec answers, \u201cHow should we build it?\u201d Sometimes the question is more difficult to answer\u2014\u201cWhat are we even trying to accomplish?\u201d And with every attempt at answering, you reflect on whether you\u2019re asking the right question. But now, of course, we have LLMs. I\u2019m seeing an increasing amount of LLM-generated documents, articles, and essays. I want to caution against this. Each LLM-generated document is a missed opportunity to think and build trust. Thinking The goal of writing is not to have written. It is to have increased your understanding, and then the understanding of those around you. When you are tasked to write something, your job is to go into the murkiness and come out of it with structure and understanding. (https://essay.app/guide/) To conquer the unknown . The second order goal of writing is to become more capable. It is like working out. Every time you do a rep on the boundary of what you can do, you get stronger. It is uncomfortable and effortful. Letting an LLM write for you is like paying somebody to work out for you. Building Trust There are social effects to LLM-generated writing too. When I send somebody a document that whiffs of LLM, I\u2019m only demonstrating that the LLM produced something approximating what others want to hear. I\u2019m not showing that I contended with the ideas. It undermines my credibility as a person who could lead whatever initiative comes out of this document. That\u2019s unfortunate. I could have used this opportunity to establish credibility. LLM-generated writing undermines the authenticity of not just one\u2019s writing but of the thinking behind it as well. If the prose is automatically generated, might the ideas be too? ((https://rfd.shared.oxide.computer/rfd/0576#_llms_as_writers) Using LLMs at Oxide: LLMs as Writers )  How LLMs can be used in the writing process LLMs are useful for research and checking your work. They can also work well for quickly recording information or transcribing text (neither of which are what I mean by \u201cwriting\u201d, as in \u201cwriting an essay\u201d). They are particularly good at generating ideas. They thrive in this use case because if they generate 10 things and only one is useful, no harm is done. You can take what is useful and leave the rest behind. These LLMs will increase efficiency in delivering software. But in order to make the most of them, we need a simultaneous rise in our level of thoughtfulness.        "
                ],
                "output": "htmltotext.txt",
                "pwd": "/data/archive/1774899972.061076",
                "schema": "ArchiveResult",
                "start_ts": "2026-03-30T19:46:38.164256+00:00",
                "status": "succeeded"
            }
        ],
        "media": [
            {
                "cmd": [
                    "/usr/local/bin/yt-dlp",
                    "--restrict-filenames",
                    "--trim-filenames",
                    "128",
                    "--write-description",
                    "--write-info-json",
                    "--write-annotations",
                    "--write-thumbnail",
                    "--no-call-home",
                    "--write-sub",
                    "--write-auto-subs",
                    "--convert-subs=srt",
                    "--yes-playlist",
                    "--continue",
                    "--no-abort-on-error",
                    "--ignore-errors",
                    "--geo-bypass",
                    "--add-metadata",
                    "--format=(bv*+ba/b)[filesize<=750m][filesize_approx<=?750m]/(bv*+ba/b)",
                    "--skip-download",
                    "--cache-dir=/data/yt-dlp-cache/",
                    "--cookies=/data/yt-dlp-cache/cookies.txt",
                    "--proxy=socks5://tor-socks-proxy:9150",
                    "--no-playlist",
                    "https://alexhwoods.com/dont-let-ai-write-for-you/"
                ],
                "cmd_version": "2024.10.7",
                "end_ts": "2026-03-30T19:46:45.976366+00:00",
                "index_texts": [],
                "output": "media/",
                "pwd": "/data/archive/1774899972.061076",
                "schema": "ArchiveResult",
                "start_ts": "2026-03-30T19:46:38.483858+00:00",
                "status": "succeeded"
            }
        ],
        "mercury": [
            {
                "cmd": [
                    "/home/archivebox/.npm/bin/postlight-parser",
                    "https://alexhwoods.com/dont-let-ai-write-for-you/"
                ],
                "cmd_version": "2.2.3",
                "end_ts": "2026-03-30T19:46:38.125162+00:00",
                "index_texts": null,
                "output": "mercury/",
                "pwd": "/data/archive/1774899972.061076",
                "schema": "ArchiveResult",
                "start_ts": "2026-03-30T19:46:33.807779+00:00",
                "status": "succeeded"
            }
        ],
        "pdf": [],
        "readability": [
            {
                "cmd": [
                    "/home/archivebox/.npm/bin/readability-extractor",
                    "/tmp/tmp_a6l38wu",
                    "https://alexhwoods.com/dont-let-ai-write-for-you/"
                ],
                "cmd_version": "0.0.11",
                "end_ts": "2026-03-30T19:46:33.515901+00:00",
                "index_texts": [
                    "When you write a document or essay, you are posing a question and then answering it. For example, a PRD answers the question, \u201cWhat should we build?\u201d A technical spec answers, \u201cHow should we build it?\u201d Sometimes the question is more difficult to answer\u2014\u201cWhat are we even trying to accomplish?\u201d And with every attempt at answering, you reflect on whether you\u2019re asking the right question.\nBut now, of course, we have LLMs. I\u2019m seeing an increasing amount of LLM-generated documents, articles, and essays. I want to caution against this. Each LLM-generated document is a missed opportunity to think and build trust.\nThinking\nThe goal of writing is not to have written. It is to have increased your understanding, and then the understanding of those around you. When you are tasked to write something, your job is to go into the murkiness and come out of it with structure and understanding. To conquer the unknown.\nThe second order goal of writing is to become more capable. It is like working out. Every time you do a rep on the boundary of what you can do, you get stronger. It is uncomfortable and effortful.\nLetting an LLM write for you is like paying somebody to work out for you.\nBuilding Trust\nThere are social effects to LLM-generated writing too. When I send somebody a document that whiffs of LLM, I\u2019m only demonstrating that the LLM produced something approximating what others want to hear. I\u2019m not showing that I contended with the ideas.\nIt undermines my credibility as a person who could lead whatever initiative comes out of this document. That\u2019s unfortunate. I could have used this opportunity to establish credibility.\n\nLLM-generated writing undermines the authenticity of not just one\u2019s writing but of the thinking behind it as well. If the prose is automatically generated, might the ideas be too?\n(Using LLMs at Oxide: LLMs as Writers)\n\nHow LLMs can be used in the writing process\nLLMs are useful for research and checking your work. They can also work well for quickly recording information or transcribing text (neither of which are what I mean by \u201cwriting\u201d, as in \u201cwriting an essay\u201d).\nThey are particularly good at generating ideas. They thrive in this use case because if they generate 10 things and only one is useful, no harm is done. You can take what is useful and leave the rest behind.\nThese LLMs will increase efficiency in delivering software. But in order to make the most of them, we need a simultaneous rise in our level of thoughtfulness."
                ],
                "output": "readability/",
                "pwd": "/data/archive/1774899972.061076",
                "schema": "ArchiveResult",
                "start_ts": "2026-03-30T19:46:29.336944+00:00",
                "status": "succeeded"
            }
        ],
        "screenshot": [],
        "singlefile": [],
        "title": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--max-time",
                    "60",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://alexhwoods.com/dont-let-ai-write-for-you/"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2026-03-30T19:46:29.091284+00:00",
                "index_texts": null,
                "output": "Don't Let AI Write For You",
                "pwd": "/data/archive/1774899972.061076",
                "schema": "ArchiveResult",
                "start_ts": "2026-03-30T19:46:28.980883+00:00",
                "status": "succeeded"
            }
        ],
        "wget": []
    },
    "icons": null,
    "is_archived": true,
    "is_static": false,
    "latest": {
        "archive_org": "https://web.archive.org/web/20260330192547/https://alexhwoods.com/dont-let-ai-write-for-you/",
        "dom": "output.html",
        "favicon": "favicon.ico",
        "git": null,
        "media": "media/",
        "pdf": null,
        "screenshot": null,
        "singlefile": null,
        "title": "Don't Let AI Write For You",
        "warc": null,
        "wget": null
    },
    "link_dir": "/data/archive/1774899972.061076",
    "newest_archive_date": "2026-03-30T19:46:46.020870+00:00",
    "num_failures": 0,
    "num_outputs": 9,
    "oldest_archive_date": "2026-03-30T19:46:17.471319+00:00",
    "path": "/dont-let-ai-write-for-you/",
    "schema": "Link",
    "scheme": "https",
    "snapshot_abid": "snp_01KN04GHZC582596DC01M9ZPCE",
    "snapshot_id": "a1659ce0-483f-4800-a75e-438c689fd98e",
    "sources": [
        "/data/sources/1774899971-import.txt"
    ],
    "tags": null,
    "tags_str": "",
    "timestamp": "1774899972.061076",
    "title": "Don't Let AI Write For You",
    "url": "https://alexhwoods.com/dont-let-ai-write-for-you/"
}