{
    "archive_path": "archive/1741931978.394465",
    "base_url": "steveklabnik.com/writing/choosing-languages",
    "basename": "",
    "bookmarked_date": "2025-03-14 05:59",
    "canonical": {
        "archive_org_path": "https://web.archive.org/web/steveklabnik.com/writing/choosing-languages",
        "dom_path": "output.html",
        "favicon_path": "favicon.ico",
        "git_path": "git/",
        "google_favicon_path": "https://www.google.com/s2/favicons?domain=steveklabnik.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": "steveklabnik.com",
    "downloaded_at": "2025-03-14T05:59:40.694709+00:00",
    "downloaded_datestr": "2025-03-14 05:59",
    "extension": "",
    "hash": "ED1M6NB8Z8AFE1M6T8NV",
    "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://steveklabnik.com/writing/choosing-languages/"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2025-03-14T06:01:08.263334+00:00",
                "index_texts": null,
                "output": "TimeoutExpired: Command '['/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://steveklabnik.com/writing/choosing-languages/']' timed out after 60 seconds",
                "pwd": "/data/archive/1741931978.394465",
                "schema": "ArchiveResult",
                "start_ts": "2025-03-14T06:00:08.208198+00:00",
                "status": "failed"
            }
        ],
        "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://steveklabnik.com/writing/choosing-languages/"
                ],
                "cmd_version": "131.0.6778",
                "end_ts": "2025-03-14T05:59:50.654400+00:00",
                "index_texts": null,
                "output": "output.html",
                "pwd": "/data/archive/1741931978.394465",
                "schema": "ArchiveResult",
                "start_ts": "2025-03-14T05:59:44.303020+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=steveklabnik.com"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2025-03-14T05:59:43.947105+00:00",
                "index_texts": null,
                "output": "favicon.ico",
                "pwd": "/data/archive/1741931978.394465",
                "schema": "ArchiveResult",
                "start_ts": "2025-03-14T05:59:40.717516+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://steveklabnik.com/writing/choosing-languages/"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2025-03-14T05:59:44.166379+00:00",
                "index_texts": null,
                "output": "headers.json",
                "pwd": "/data/archive/1741931978.394465",
                "schema": "ArchiveResult",
                "start_ts": "2025-03-14T05:59:43.983099+00:00",
                "status": "succeeded"
            }
        ],
        "htmltotext": [
            {
                "cmd": [
                    "(internal) archivebox.extractors.htmltotext",
                    "./{singlefile,dom}.html"
                ],
                "cmd_version": "0.8.5rc51",
                "end_ts": "2025-03-14T05:59:58.870530+00:00",
                "index_texts": [
                    "(/favicon.ico) (/icon.svg) (/apple-touch-icon.png) (/manifest.webmanifest) (Steve Klabnik) (/feed.xml) Choosing Languages (/_astro/index.CwMt4k_y.css)  Choosing Languages  (/) Home  (/writing) Blog   Mar 13 2025 I tried to write this post yesterday, but I didn\u2019t like my approach there. Last\nnight, I had a conversation with one of my best friends about it, and he\nencouraged me to write this, but in a different way. I think this way is better,\nso thanks, dude. The other day, Microsoft announced (https://devblogs.microsoft.com/typescript/typescript-native-port/) that they are re-writing the TypeScript\ncompiler in Go . A lot of people had a lot of feelings about this. I did\ntoo, but in a different way than many other people. The biggest questions people had were \u201cWhy not C#?\u201d and \u201cWhy not Rust?\u201d. To\nbe clear, I do think that asking why someone chooses a programming language\ncan be valuable; as professionals, we need to make these sorts of decisions\non a regular basis, and seeing how others make those decisions can be useful,\nto get an idea of how other people think about these things. But it can also\u2026 I dunno. Sometimes, I think people have little imagination\nwhen it comes to choosing a particular technology stack.  It is true that sometimes, there are hard requirements that means that choosing\na particular technology is inappropriate. But I\u2019ve found that often, these\nsorts of requirements are often more contextually requirements than ones that\nwould be the case in the abstract. For example, (https://en.wikipedia.org/wiki/Lisp_machine) you can write an OS in\nLisp if you want. But in practice, you\u2019re probably not working with\nthis hardware, or willing to port the environment to bare metal. But it\u2019s also the case that you often don\u2019t know what others\u2019 contextual\nsituation actually is. I would have never guessed the main reason that Microsoft\nchose Go for, which is roughly \u201cwe are porting the existing codebase, rather\nthan re-writing it, and our existing code looks kinda like Go, making it easy to\nport.\u201d That\u2019s a very good reason! I hadn\u2019t really thought about the differences\nbetween porting and re-writing in this light before, and it makes perfect sense\nto me. At the same time,  people are going way overboard here.  There\u2019s some sort of balance here to be struck. But at the same time, I hate\n\u201cchoose the right tool for the job\u201d as a suggestion. Other than art projects,\nhas anyone ever deliberately chosen the wrong tool? Often, something that\nseems like the wrong tool is chosen simply because the contextual requirements\nweren\u2019t obvious to you, the interlocutor. I think there\u2019s two other reasons why this situation is making me feel\ncomplicated things. The first is RIIR, and the second is a situation from a long\ntime ago that changed my life. Many of you have probably heard of the \u201cre-write it in Rust\u201d meme. The idea is\nthat there\u2019s this plague of programmers who are always suggesting that every\nsingle thing needs to be re-written in Rust. While I am sure this happens from\ntime to time, I have yet to see real evidence that it is actually widespread. I\nalmost even wrote a blog post about this, trying to actually quantify the effect\nhere. But on some level, perception is reality, and if people believe it\u2019s true,\nit\u2019s real on some level, even if that\u2019s not actually the case. Regardless of the\ntruth of the number of people who suggest this, on every thread about Rust,\npeople end up complaining about this effect, and so it has an effect on the\noverall discourse regardless. And while I don\u2019t believe that this effect is real\noverall, it absolutely has happened in this specific situation. A bunch of\npeople have been very aggressively suggesting that this should have been in\nRust, and not Go, and I get where they\u2019re coming from, but also: really? Go is\nan absolutely fine choice here. It\u2019s fine. Why do you all have to reinforce a\nstereotype? It\u2019s frustrating. The second one is something that\u2019s been on my mind for over a decade, but I\u2019ve\nonly started talking about it in places other than conversations with close\nfriends. Long-time readers may remember (/writing/node/) that one time where I was an\nasshole . I mean, I\u2019ve been an asshole more than once in my life, but\nthis one was probably the time that affected me the most. The overall shape of\nthe situation is this: Someone wrote grep , but in Node. I made fun of it on the internet, because why would someone write a CLI tool in Node? The author found out that I did and felt bad about it.  Looking back at my apology, I don\u2019t think it\u2019s necessarily the best one. It was\nbetter than the first draft or two of what I wrote, but I\u2019ve gotten better at\napologizing since then. Regardless, this incident changed the trajectory of my\nlife, and if you happen to read this, Heather, I am truly, unequivocally, sorry. There was a couple of things that happened here. The first is just simply, in\n2013, I did not understand that the things I said had meaning. I hate talking\nabout this because it makes me seem more important than I am, but it\u2019s also\nimportant to acknowledge. I saw myself at the time as just Steve, some random\nguy. If I say something on the internet, it\u2019s like I\u2019m talking to a friend in\nreal life, my words are just random words and I\u2019m human and whatever. It is what\nit is. But at that time in my life, that wasn\u2019t actually the case. I was on the Rails\nteam, I was speaking at conferences, and people were reading my blog and tweets.\nI was an \u201cinfluencer,\u201d for better or worse. But I hadn\u2019t really internalized\nthat change in my life yet. And so I didn\u2019t really understand that if I\ncriticized something, it was something thousands of people would see. To me, I\u2019m\njust Steve. This situation happened before we talked about \u201ccancel culture\u201d and\nall of that kind of stuff, but when the mob came for me, I realized: they were\nright, actually. I was being an asshole, and I should not have been. And I\nresolved myself to not being an asshole like that ever again. And to do that, I had to think long and hard about why I was like that. I love\nprogramming languages! I love people writing programs that they find\ninteresting! I don\u2019t think that it\u2019s stupid to write a tool in a language that\nI wouldn\u2019t expect it to be written in! So why did I feel the reason to make fun\nof this in that situation? The answer? A pretty classic situation: the people I was hanging out with were\naffecting me, and in ways that, when I examined it, I didn\u2019t like very much. You see, in the Rails world at the time, there was a huge (https://blog.aurynn.com/2015/12/16-contempt-culture) contempt\nculture at the time, especially around JavaScript and Node. And, when\nyou\u2019re around people who talk shit all the time, you find yourself talking shit\ntoo. And once I realized that, well, I wanted to stop it. But there was a big\nproblem: my entire professional, and most of my social, life was built around\nRuby and Rails. So if I wanted to escape that culture\u2026 what should I do? If you clicked on the link to my apology above, you probably didn\u2019t make note of\nthe date: Jan 23 2013. Something had just happened to me, in December of 2012: I\nhad decided to check out this little programming language I had heard of called\nRust. One of the things that struck me about the \u201cRust community\u201d at the time, which\nwas like forty people in an IRC room, was how nice they were. When I had trouble\ngetting Hello World to compile, and I typed /join #rust , I fully expected an\nRTFM and flames. But instead, I was welcomed with open arms. People were chill.\nAnd it was really nice. And so, a month and a day later, I had this realization about the direction my\nlife was heading, and how I wasn\u2019t really happy about it. And I thought about\nhow much I enjoyed the Rust stuff so far\u2026 and combined with a few other\nfactors, maybe of which I\u2019ll write about someday, this is when I decided that I\nwanted to make Rust a thing, and dedicated myself to achieving that. And part of that was being conscious about the culture, and how it developed,\nand the ways that that would evolve over time. I didn\u2019t want Rust to end up the\nway that Rails had ended up. And that meant a few things, but first of all,\ntruly internalizing that I had to change. And understanding that I had to be\nintentional with what I did and said. And what that led to, among other things,\nwas a \u201cwe talk about Rust on its own merits, not by trash talking other languages\u201d\nculture. (That\u2019s also partially because of Nietzsche, but I\u2019m already pretty far\nafield of the topic for this post, maybe someday.) Anyway, the Eternal September comes for us all. The \u201cRust Community,\u201d if it ever\nwere a coherent concept, doesn\u2019t really make sense any more. And it is by no\nmeans perfect. I have a lot of criticism about how things turned out. But I do\nthink that it\u2019s not a coincidence that \u201cRust makes you trans,\u201d for example, is\na meme. I am deeply proud of what we all built. So yeah, anyway: people choose programming languages for projects based on a\nvariety of reasons. And sure, there may be better or worse choices. But you\nprobably have a different context than someone else, and so when someone\nmakes a choice you don\u2019t agree with, there\u2019s no reason to be a jerk about it. Here\u2019s my post about this post on BlueSky:      "
                ],
                "output": "htmltotext.txt",
                "pwd": "/data/archive/1741931978.394465",
                "schema": "ArchiveResult",
                "start_ts": "2025-03-14T05:59:58.845358+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://steveklabnik.com/writing/choosing-languages/"
                ],
                "cmd_version": "2024.10.7",
                "end_ts": "2025-03-14T06:00:08.160248+00:00",
                "index_texts": [],
                "output": "media/",
                "pwd": "/data/archive/1741931978.394465",
                "schema": "ArchiveResult",
                "start_ts": "2025-03-14T05:59:59.059310+00:00",
                "status": "succeeded"
            }
        ],
        "mercury": [
            {
                "cmd": [
                    "/home/archivebox/.npm/bin/postlight-parser",
                    "https://steveklabnik.com/writing/choosing-languages/"
                ],
                "cmd_version": "2.2.3",
                "end_ts": "2025-03-14T05:59:58.813453+00:00",
                "index_texts": null,
                "output": "mercury/",
                "pwd": "/data/archive/1741931978.394465",
                "schema": "ArchiveResult",
                "start_ts": "2025-03-14T05:59:55.095048+00:00",
                "status": "succeeded"
            }
        ],
        "pdf": [],
        "readability": [
            {
                "cmd": [
                    "/home/archivebox/.npm/bin/readability-extractor",
                    "/tmp/tmpu4r8wd3g",
                    "https://steveklabnik.com/writing/choosing-languages/"
                ],
                "cmd_version": "0.0.11",
                "end_ts": "2025-03-14T05:59:54.822809+00:00",
                "index_texts": [
                    "Mar 13 2025 I tried to write this post yesterday, but I didn\u2019t like my approach there. Last\nnight, I had a conversation with one of my best friends about it, and he\nencouraged me to write this, but in a different way. I think this way is better,\nso thanks, dude.\n\nThe other day, Microsoft announced that they are re-writing the TypeScript\ncompiler in Go. A lot of people had a lot of feelings about this. I did\ntoo, but in a different way than many other people.\nThe biggest questions people had were \u201cWhy not C#?\u201d and \u201cWhy not Rust?\u201d. To\nbe clear, I do think that asking why someone chooses a programming language\ncan be valuable; as professionals, we need to make these sorts of decisions\non a regular basis, and seeing how others make those decisions can be useful,\nto get an idea of how other people think about these things.\nBut it can also\u2026 I dunno. Sometimes, I think people have little imagination\nwhen it comes to choosing a particular technology stack.\n   \nIt is true that sometimes, there are hard requirements that means that choosing\na particular technology is inappropriate. But I\u2019ve found that often, these\nsorts of requirements are often more contextually requirements than ones that\nwould be the case in the abstract. For example, you can write an OS in\nLisp if you want. But in practice, you\u2019re probably not working with\nthis hardware, or willing to port the environment to bare metal.\nBut it\u2019s also the case that you often don\u2019t know what others\u2019 contextual\nsituation actually is. I would have never guessed the main reason that Microsoft\nchose Go for, which is roughly \u201cwe are porting the existing codebase, rather\nthan re-writing it, and our existing code looks kinda like Go, making it easy to\nport.\u201d That\u2019s a very good reason! I hadn\u2019t really thought about the differences\nbetween porting and re-writing in this light before, and it makes perfect sense\nto me.\nAt the same time,\n   \npeople are going way overboard here.\n   \nThere\u2019s some sort of balance here to be struck. But at the same time, I hate\n\u201cchoose the right tool for the job\u201d as a suggestion. Other than art projects,\nhas anyone ever deliberately chosen the wrong tool? Often, something that\nseems like the wrong tool is chosen simply because the contextual requirements\nweren\u2019t obvious to you, the interlocutor.\nI think there\u2019s two other reasons why this situation is making me feel\ncomplicated things. The first is RIIR, and the second is a situation from a long\ntime ago that changed my life.\nMany of you have probably heard of the \u201cre-write it in Rust\u201d meme. The idea is\nthat there\u2019s this plague of programmers who are always suggesting that every\nsingle thing needs to be re-written in Rust. While I am sure this happens from\ntime to time, I have yet to see real evidence that it is actually widespread. I\nalmost even wrote a blog post about this, trying to actually quantify the effect\nhere. But on some level, perception is reality, and if people believe it\u2019s true,\nit\u2019s real on some level, even if that\u2019s not actually the case. Regardless of the\ntruth of the number of people who suggest this, on every thread about Rust,\npeople end up complaining about this effect, and so it has an effect on the\noverall discourse regardless. And while I don\u2019t believe that this effect is real\noverall, it absolutely has happened in this specific situation. A bunch of\npeople have been very aggressively suggesting that this should have been in\nRust, and not Go, and I get where they\u2019re coming from, but also: really? Go is\nan absolutely fine choice here. It\u2019s fine. Why do you all have to reinforce a\nstereotype? It\u2019s frustrating.\nThe second one is something that\u2019s been on my mind for over a decade, but I\u2019ve\nonly started talking about it in places other than conversations with close\nfriends. Long-time readers may remember that one time where I was an\nasshole. I mean, I\u2019ve been an asshole more than once in my life, but\nthis one was probably the time that affected me the most. The overall shape of\nthe situation is this:\n\nSomeone wrote grep, but in Node.\nI made fun of it on the internet, because why would someone write a CLI tool in Node?\nThe author found out that I did and felt bad about it.\n\nLooking back at my apology, I don\u2019t think it\u2019s necessarily the best one. It was\nbetter than the first draft or two of what I wrote, but I\u2019ve gotten better at\napologizing since then. Regardless, this incident changed the trajectory of my\nlife, and if you happen to read this, Heather, I am truly, unequivocally, sorry.\nThere was a couple of things that happened here. The first is just simply, in\n2013, I did not understand that the things I said had meaning. I hate talking\nabout this because it makes me seem more important than I am, but it\u2019s also\nimportant to acknowledge. I saw myself at the time as just Steve, some random\nguy. If I say something on the internet, it\u2019s like I\u2019m talking to a friend in\nreal life, my words are just random words and I\u2019m human and whatever. It is what\nit is.\nBut at that time in my life, that wasn\u2019t actually the case. I was on the Rails\nteam, I was speaking at conferences, and people were reading my blog and tweets.\nI was an \u201cinfluencer,\u201d for better or worse. But I hadn\u2019t really internalized\nthat change in my life yet. And so I didn\u2019t really understand that if I\ncriticized something, it was something thousands of people would see. To me, I\u2019m\njust Steve. This situation happened before we talked about \u201ccancel culture\u201d and\nall of that kind of stuff, but when the mob came for me, I realized: they were\nright, actually. I was being an asshole, and I should not have been. And I\nresolved myself to not being an asshole like that ever again.\nAnd to do that, I had to think long and hard about why I was like that. I love\nprogramming languages! I love people writing programs that they find\ninteresting! I don\u2019t think that it\u2019s stupid to write a tool in a language that\nI wouldn\u2019t expect it to be written in! So why did I feel the reason to make fun\nof this in that situation?\nThe answer? A pretty classic situation: the people I was hanging out with were\naffecting me, and in ways that, when I examined it, I didn\u2019t like very much.\nYou see, in the Rails world at the time, there was a huge contempt\nculture at the time, especially around JavaScript and Node. And, when\nyou\u2019re around people who talk shit all the time, you find yourself talking shit\ntoo. And once I realized that, well, I wanted to stop it. But there was a big\nproblem: my entire professional, and most of my social, life was built around\nRuby and Rails. So if I wanted to escape that culture\u2026 what should I do?\nIf you clicked on the link to my apology above, you probably didn\u2019t make note of\nthe date: Jan 23 2013. Something had just happened to me, in December of 2012: I\nhad decided to check out this little programming language I had heard of called\nRust.\nOne of the things that struck me about the \u201cRust community\u201d at the time, which\nwas like forty people in an IRC room, was how nice they were. When I had trouble\ngetting Hello World to compile, and I typed /join #rust, I fully expected an\nRTFM and flames. But instead, I was welcomed with open arms. People were chill.\nAnd it was really nice.\nAnd so, a month and a day later, I had this realization about the direction my\nlife was heading, and how I wasn\u2019t really happy about it. And I thought about\nhow much I enjoyed the Rust stuff so far\u2026 and combined with a few other\nfactors, maybe of which I\u2019ll write about someday, this is when I decided that I\nwanted to make Rust a thing, and dedicated myself to achieving that.\nAnd part of that was being conscious about the culture, and how it developed,\nand the ways that that would evolve over time. I didn\u2019t want Rust to end up the\nway that Rails had ended up. And that meant a few things, but first of all,\ntruly internalizing that I had to change. And understanding that I had to be\nintentional with what I did and said. And what that led to, among other things,\nwas a \u201cwe talk about Rust on its own merits, not by trash talking other languages\u201d\nculture. (That\u2019s also partially because of Nietzsche, but I\u2019m already pretty far\nafield of the topic for this post, maybe someday.)\nAnyway, the Eternal September comes for us all. The \u201cRust Community,\u201d if it ever\nwere a coherent concept, doesn\u2019t really make sense any more. And it is by no\nmeans perfect. I have a lot of criticism about how things turned out. But I do\nthink that it\u2019s not a coincidence that \u201cRust makes you trans,\u201d for example, is\na meme. I am deeply proud of what we all built.\nSo yeah, anyway: people choose programming languages for projects based on a\nvariety of reasons. And sure, there may be better or worse choices. But you\nprobably have a different context than someone else, and so when someone\nmakes a choice you don\u2019t agree with, there\u2019s no reason to be a jerk about it.\n\nHere\u2019s my post about this post on BlueSky:"
                ],
                "output": "readability/",
                "pwd": "/data/archive/1741931978.394465",
                "schema": "ArchiveResult",
                "start_ts": "2025-03-14T05:59:51.276712+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://steveklabnik.com/writing/choosing-languages/"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2025-03-14T05:59:51.043452+00:00",
                "index_texts": null,
                "output": "Choosing Languages",
                "pwd": "/data/archive/1741931978.394465",
                "schema": "ArchiveResult",
                "start_ts": "2025-03-14T05:59:50.982769+00:00",
                "status": "succeeded"
            }
        ],
        "wget": []
    },
    "icons": null,
    "is_archived": true,
    "is_static": false,
    "latest": {
        "archive_org": "TimeoutExpired: Command '['/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://steveklabnik.com/writing/choosing-languages/']' timed out after 60 seconds",
        "dom": "output.html",
        "favicon": "favicon.ico",
        "git": null,
        "media": "media/",
        "pdf": null,
        "screenshot": null,
        "singlefile": null,
        "title": "Choosing Languages",
        "warc": null,
        "wget": null
    },
    "link_dir": "/data/archive/1741931978.394465",
    "newest_archive_date": "2025-03-14T06:00:08.208198+00:00",
    "num_failures": 1,
    "num_outputs": 8,
    "oldest_archive_date": "2025-03-14T05:59:40.717516+00:00",
    "path": "/writing/choosing-languages/",
    "schema": "Link",
    "scheme": "https",
    "snapshot_abid": "snp_01JP9KS7NF9E5C2F9A017R61NR",
    "snapshot_id": "c3b14645-4a29-411c-86df-9dbf8f8306b8",
    "sources": [
        "/data/sources/1741931977-import.txt"
    ],
    "tags": null,
    "tags_str": "",
    "timestamp": "1741931978.394465",
    "title": "Choosing Languages",
    "url": "https://steveklabnik.com/writing/choosing-languages/"
}