{
    "archive_path": "archive/1789898623.195729",
    "base_url": "www.redblobgames.com/blog/2026-09-16-english-a-vs-an",
    "basename": "",
    "bookmarked_date": "2026-09-20 10:03",
    "canonical": {
        "archive_org_path": "https://web.archive.org/web/www.redblobgames.com/blog/2026-09-16-english-a-vs-an",
        "dom_path": "output.html",
        "favicon_path": "favicon.ico",
        "git_path": "git/",
        "google_favicon_path": "https://www.google.com/s2/favicons?domain=www.redblobgames.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": "www.redblobgames.com/blog/2026-09-16-english-a-vs-an/index.html"
    },
    "domain": "www.redblobgames.com",
    "extension": "",
    "hash": "1HGWBAQBZE7MX34VHV52",
    "history": {
        "archive_org": [],
        "dom": [],
        "favicon": [
            {
                "cmd": [
                    "curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--max-time",
                    "120",
                    "--output",
                    "favicon.ico",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.14.1 (x86_64-pc-linux-gnu)",
                    "https://www.google.com/s2/favicons?domain=www.redblobgames.com"
                ],
                "cmd_version": "curl 8.14.1 (x86_64-pc-linux-gnu)",
                "end_ts": "2026-09-20T10:04:20.987523+00:00",
                "index_texts": null,
                "output": "favicon.ico",
                "pwd": "/data/archive/1789898623.195729",
                "schema": "ArchiveResult",
                "start_ts": "2026-09-20T10:04:20.262180+00:00",
                "status": "succeeded"
            }
        ],
        "git": [],
        "headers": [
            {
                "cmd": [
                    "curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--head",
                    "--max-time",
                    "120",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.14.1 (x86_64-pc-linux-gnu)",
                    "https://www.redblobgames.com/blog/2026-09-16-english-a-vs-an/"
                ],
                "cmd_version": "curl 8.14.1 (x86_64-pc-linux-gnu)",
                "end_ts": "2026-09-20T10:04:21.362034+00:00",
                "index_texts": null,
                "output": "headers.json",
                "pwd": "/data/archive/1789898623.195729",
                "schema": "ArchiveResult",
                "start_ts": "2026-09-20T10:04:20.996297+00:00",
                "status": "succeeded"
            }
        ],
        "htmltotext": [],
        "media": [],
        "mercury": [
            {
                "cmd": [
                    "/app/node_modules/@postlight/parser/cli.js",
                    "https://www.redblobgames.com/blog/2026-09-16-english-a-vs-an/"
                ],
                "cmd_version": "1.0.0",
                "end_ts": "2026-09-20T10:04:27.741199+00:00",
                "index_texts": null,
                "output": "mercury",
                "pwd": "/data/archive/1789898623.195729",
                "schema": "ArchiveResult",
                "start_ts": "2026-09-20T10:04:24.407355+00:00",
                "status": "succeeded"
            }
        ],
        "pdf": [],
        "readability": [
            {
                "cmd": [
                    "/app/node_modules/readability-extractor/readability-extractor",
                    "/tmp/tmpp3sv2j4r",
                    "https://www.redblobgames.com/blog/2026-09-16-english-a-vs-an/"
                ],
                "cmd_version": "0.0.11",
                "end_ts": "2026-09-20T10:04:24.398055+00:00",
                "index_texts": [
                    "Blog post:\n      16 Sep 2026\n\n\nIn English, there is an \u201cindefinite\u201d article a that can go before a word. For example, a raccoon. But for some words, we use an. For example, an apple.\n\n\n\nWhen procedurally generating text, I want a function\na_or_an(\"apple\") that tells me which article to use. That seems\nlike it\u2019d be easy. We can check the first letter to see if it\u2019s a\nvowel. But that would mean we output an unicorn, not a unicorn.\n\n\n\nThe actual rule is not whether the written word starts with a\nvowel letter, but whether the spoken word starts with a vowel\nsound. The word <unicorn> starts with vowel letter (<u>) but a\nconsonant sound (cmudict Y, ipa /j/). The word <hour> starts with a consonant letter (<h>) but a vowel sound (cmudict AW, ipa /a\u028a/).\n\n\n\n  \n  Visualization showing whether the first two letters of a word are enough to determine whether it should have \u201ca\u201d or \u201can\u201d\n\n\n\nI was curious how often these exceptions occurred, and whether they can be grouped together, so I spent a day looking at the data and building some visualizations and wrote up the results.  \nI was surprised that only 129 of the 32,455 words in my list needed exceptions.\n\n\n\n[LLM note: I did not use LLMs to write any of this code, but in hindsight, I should have. This is one-off code to answer a question. It doesn\u2019t need to be clean or maintainable. It only needs to be correct. I would\u2019ve spent more time on the trie simplification algorithm and less time on parsing cmudict and re-learning d3.js.]"
                ],
                "output": "readability",
                "pwd": "/data/archive/1789898623.195729",
                "schema": "ArchiveResult",
                "start_ts": "2026-09-20T10:04:22.770403+00:00",
                "status": "succeeded"
            }
        ],
        "screenshot": [],
        "singlefile": [],
        "title": [
            {
                "cmd": [
                    "curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--max-time",
                    "120",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.14.1 (x86_64-pc-linux-gnu)",
                    "https://www.redblobgames.com/blog/2026-09-16-english-a-vs-an/"
                ],
                "cmd_version": "curl 8.14.1 (x86_64-pc-linux-gnu)",
                "end_ts": "2026-09-20T10:04:22.763737+00:00",
                "index_texts": null,
                "output": "English: a vs an",
                "pwd": "/data/archive/1789898623.195729",
                "schema": "ArchiveResult",
                "start_ts": "2026-09-20T10:04:22.756244+00:00",
                "status": "succeeded"
            }
        ],
        "wget": [
            {
                "cmd": [
                    "wget",
                    "--no-verbose",
                    "--adjust-extension",
                    "--convert-links",
                    "--force-directories",
                    "--span-hosts",
                    "--no-parent",
                    "-e",
                    "robots=off",
                    "--reject=js,mjs,woff,woff2,ttf,otf,eot,mp4,m4v,mov,webm,ogv,mkv,avi,flv",
                    "--timeout=120",
                    "--restrict-file-names=windows",
                    "--page-requisites",
                    "--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) wget/GNU Wget 1.21.3",
                    "--compression=auto",
                    "--timestamping",
                    "https://www.redblobgames.com/blog/2026-09-16-english-a-vs-an/"
                ],
                "cmd_version": "GNU Wget 1.21.3",
                "end_ts": "2026-09-20T10:04:22.747726+00:00",
                "index_texts": null,
                "output": "www.redblobgames.com/blog/2026-09-16-english-a-vs-an/index.html",
                "pwd": "/data/archive/1789898623.195729",
                "schema": "ArchiveResult",
                "start_ts": "2026-09-20T10:04:21.371347+00:00",
                "status": "succeeded"
            }
        ]
    },
    "icons": null,
    "is_archived": true,
    "is_static": false,
    "latest": {
        "archive_org": null,
        "dom": null,
        "favicon": "favicon.ico",
        "git": null,
        "media": null,
        "pdf": null,
        "screenshot": null,
        "singlefile": null,
        "title": "English: a vs an",
        "warc": null,
        "wget": "www.redblobgames.com/blog/2026-09-16-english-a-vs-an/index.html"
    },
    "link_dir": "/data/archive/1789898623.195729",
    "newest_archive_date": "2026-09-20T10:04:24.407355+00:00",
    "num_failures": 0,
    "num_outputs": 6,
    "oldest_archive_date": "2026-09-20T10:04:20.262180+00:00",
    "path": "/blog/2026-09-16-english-a-vs-an/",
    "schema": "Link",
    "scheme": "https",
    "snapshot_id": "55219e88-31e3-4c17-9200-cac81d78b219",
    "sources": [
        "/data/sources/1789898623-import.txt"
    ],
    "tags": null,
    "tags_str": "",
    "timestamp": "1789898623.195729",
    "title": "English: a vs an",
    "updated": "2026-09-20T10:04:20.261673+00:00",
    "updated_date": "2026-09-20 10:04",
    "url": "https://www.redblobgames.com/blog/2026-09-16-english-a-vs-an/"
}