<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>anya hope</title>
    <subtitle>anya hope&#x27;s website</subtitle>
    <link rel="self" type="application/atom+xml" href="https://anyahope.me/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://anyahope.me"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-03-09T00:00:00+00:00</updated>
    <id>https://anyahope.me/atom.xml</id>
    <entry xml:lang="en">
        <title>Comments on Cory Doctorow&#x27;s &quot;AI companies will fail&quot;</title>
        <published>2026-02-01T00:00:00+00:00</published>
        <updated>2026-02-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              anya hope
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://anyahope.me/blog/comments-doctorow-ai-will-fail/"/>
        <id>https://anyahope.me/blog/comments-doctorow-ai-will-fail/</id>
        
        <content type="html" xml:base="https://anyahope.me/blog/comments-doctorow-ai-will-fail/">&lt;p&gt;A friend shared this long-ish piece by &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Cory_Doctorow&quot;&gt;Cory Doctorow,&lt;&#x2F;a&gt; which
was published on January 18, 2026 by The Guardian,
with the title
&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.theguardian.com&#x2F;us-news&#x2F;ng-interactive&#x2F;2026&#x2F;jan&#x2F;18&#x2F;tech-ai-bubble-burst-reverse-centaur&quot;&gt;&lt;em&gt;&quot;AI companies will fail. We can salvage something from the wreckage.&quot;&lt;&#x2F;em&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;As I was reading it, I started to write down some comments I wanted to share with friends. I will borrow Bob Ross&#x27;s attitude and decide that if you&#x27;re here, you&#x27;re a friend.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;I recognise that Doctorow is saying things that I really want to be hearing, and that I want to be true. It feels validating to read this kind of piece.&lt;&#x2F;p&gt;
&lt;p&gt;But he&#x27;s also making an argument, and argumentative pieces often leave out complexities and nuance. The older I get, the more I struggle with that aspect of opinion pieces.&lt;&#x2F;p&gt;
&lt;p&gt;I wanted to stay clear-eyed about where I like his arguments because I believe them, where I like his arguments because I really want
to believe them (but can&#x27;t quite accept them in the way Doctorow makes them), where I see what he&#x27;s trying to argue,
but don&#x27;t find it effective, and where I disagree completely.&lt;&#x2F;p&gt;
&lt;p&gt;I don&#x27;t promise to address every concern you might have while reading that piece, so I encourage you to read it yourself.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;intro&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#intro&quot; aria-label=&quot;Anchor link for: intro&quot;&gt;§&lt;&#x2F;a&gt;Intro&lt;&#x2F;h2&gt;
&lt;p&gt;The beginning of Doctorow&#x27;s piece felt very good to read. He opens with his background as a science fiction writer, which is fun, and then goes into this:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Then there are science-fiction fans who believe that they are &lt;em&gt;reading&lt;&#x2F;em&gt; the future. A depressing number of those people appear to have become AI bros.
These guys can’t shut up about the day that their spicy autocomplete machine
will wake up and turn us all into &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Instrumental_convergence#Paperclip_maximizer&quot;&gt;paperclips&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Yes! Those people are annoying, and seem to be high on glue. I don&#x27;t like them, either. I appreciate him not mincing words about this.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;an-army-of-reverse-centaurs&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#an-army-of-reverse-centaurs&quot; aria-label=&quot;Anchor link for: an-army-of-reverse-centaurs&quot;&gt;§&lt;&#x2F;a&gt;&quot;An army of reverse centaurs&quot;&lt;&#x2F;h2&gt;
&lt;p&gt;This, too, felt good to read:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tech bosses want us to believe that there is only one way a technology can be used.
&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.theguardian.com&#x2F;technology&#x2F;2024&#x2F;sep&#x2F;19&#x2F;social-media-companies-surveillance-ftc&quot;&gt;Mark Zuckerberg&lt;&#x2F;a&gt; wants you to think that it is technologically impossible
to have a conversation with a friend without him listening in.
Tim Cook wants you to think that it is impossible for you to have a reliable computing experience unless he gets a veto over which software
you install and without him taking &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.theguardian.com&#x2F;technology&#x2F;2025&#x2F;apr&#x2F;30&#x2F;apple-fortnite-court-order-violation&quot;&gt;30 cents&lt;&#x2F;a&gt;
out of every dollar you spend. Sundar Pichai wants you to think that it is impossible for you to find a webpage unless he gets to spy on you from asshole to appetite.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;The mention of &quot;asshole&quot; was distracting, and it took me a second to figure out the imagery, but yes, I agree with this.
It&#x27;s also easy to agree with this. Bashing the billionaire executives in charge of tech monopolies is a crowd-pleaser, and Doctorow does it effectively.
That makes sense - he has a lot of experience bashing tech monopolists.&lt;&#x2F;p&gt;
&lt;p&gt;This is where his argument starts taking shape as it relates to AI:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is all a kind of vulgar Thatcherism. Margaret Thatcher’s mantra was: “There is no alternative.” She repeated this so often they called her “Tina” Thatcher: There. Is. No. Alternative.&lt;&#x2F;p&gt;
&lt;p&gt;“There is no alternative” is a cheap rhetorical sleight. It’s a demand dressed up as an observation. “There is no alternative” means: “Stop trying to think of an alternative.”&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Yep. I only recently learned about &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;There_is_no_alternative&quot;&gt;&lt;em&gt;&quot;There is no alternative&quot;&lt;&#x2F;em&gt;&lt;&#x2F;a&gt;.
But even before that, I was feeling really frustrated with the extent to which the pro-AI businesspeople appeal to existential anxiety
(&lt;em&gt;start using AI, or you will lose your job to someone who is [because we will fire you]&lt;&#x2F;em&gt;) and a sense of fait accompli
(&lt;em&gt;like it or not, AI is here to stay [in exactly the way we are pushing it]&lt;&#x2F;em&gt;). The parts in square brackets are
the ones that they try not to say out loud, except sometimes they do.&lt;&#x2F;p&gt;
&lt;p&gt;For as long as I&#x27;ve been a conscious person, tech people have always appealed to anxiety (&lt;em&gt;&quot;don&#x27;t get left behind!&quot;&lt;&#x2F;em&gt; might as well be
the corporate slogan for the digital transformation of our society),
and projected a smug determinism about technological progress (&lt;em&gt;&quot;there&#x27;s no going back&quot;&lt;&#x2F;em&gt; could be their slogan, too).
But I also don&#x27;t remember tech companies having to engage in so much arm-twisting and hard sales tactics with earlier technologies
(like personal computers, or Internet, or smartphones, or social media, or streaming services).&lt;&#x2F;p&gt;
&lt;p&gt;There were commercial technologies that were pushed on people without being taken up
by the public, and there were some cringe attempts to keep forcing then onto the public despite general resistance
(guided, most likely, by some version of the fictitious &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Gartner_hype_cycle#Criticisms_of_the_model&quot;&gt;Gartner hype cycle.&lt;&#x2F;a&gt;)
But I don&#x27;t remember a time when the whole industry
decided to bleed itself dry to get you to watch 3D movies, or
buy a VR headset, like they are doing with AI. Maybe it&#x27;s just my recency bias.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ai-can-t-do-your-job&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#ai-can-t-do-your-job&quot; aria-label=&quot;Anchor link for: ai-can-t-do-your-job&quot;&gt;§&lt;&#x2F;a&gt;&quot;AI can’t do your job&quot;&lt;&#x2F;h2&gt;
&lt;p&gt;I appreciated this example of the &quot;reverse centaur&quot; (which I found more compelling then the one about the Amazon drivers Doctorow gave at the beginning of the piece&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;):&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Let’s say my hospital bought some AI radiology tools and told its radiologists: “Hey folks, here’s the deal. [...]
From now on, we’re going to get an instantaneous second opinion from the AI, and if the AI thinks you’ve missed a tumor, we want you to go back and have another look.
[...] we just care about finding all those tumors.”&lt;&#x2F;p&gt;
&lt;p&gt;If that’s what they said, I’d be delighted. [...] [But] the remaining radiologists’ job will be to oversee the diagnoses the AI makes at superhuman speed – and somehow remain vigilant as they do so.&lt;&#x2F;p&gt;
&lt;p&gt;“And if the AI misses a tumor, this will be the human &lt;em&gt;radiologist’s&lt;&#x2F;em&gt; fault, because they are the ‘human in the loop’. It’s their signature on the diagnosis.”&lt;&#x2F;p&gt;
&lt;p&gt;This is a reverse centaur, and it is a specific kind of reverse centaur: it is what &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;profilebooks.com&#x2F;work&#x2F;the-unaccountability-machine&#x2F;&quot;&gt;Dan Davies&lt;&#x2F;a&gt; calls an “accountability sink”. The radiologist’s job is not really to oversee the AI’s work, it is to take the blame for the AI’s mistakes.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;em&gt;(emphasis in the original)&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Note: A regular &quot;centaur&quot;, mentioned earlier in the piece, is &quot;a person who is assisted by a machine. Driving a car makes you a centaur, and so does using autocomplete.&quot;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;how-to-pump-a-bubble&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#how-to-pump-a-bubble&quot; aria-label=&quot;Anchor link for: how-to-pump-a-bubble&quot;&gt;§&lt;&#x2F;a&gt;&quot;How to pump a bubble&quot;&lt;&#x2F;h2&gt;
&lt;p&gt;I am skipping this section because I don&#x27;t know enough about finance or economics to say anything useful.
I (honestly) don&#x27;t know about Doctorow&#x27;s expertise on this, but this section is probably worth a read for those who do.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ai-can-t-do-your-job-1&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#ai-can-t-do-your-job-1&quot; aria-label=&quot;Anchor link for: ai-can-t-do-your-job-1&quot;&gt;§&lt;&#x2F;a&gt;&quot;AI can’t do your job&quot;&lt;&#x2F;h2&gt;
&lt;p&gt;Here, I find it disappointing that Doctorow is making some simplifications at the expense of rigour. Systems based on LLMs are not really&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;just a word-guessing program, because all it does is calculate the most probable word to go next [...] All it can do is predict what word will come next based on all the words that have been typed in the past.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;I find it unhelpful when opponents of AI state that LLMs are just a next-word guesser, because they risk weakening their overall argument.&lt;&#x2F;p&gt;
&lt;p&gt;For example, computers are &quot;just&quot; very fast arithmetic calculators, but we know they&#x27;re also more than the sum of those basic parts. You would struggle to make an effective argument about the social implications of computers if you kept describing them only as big calculators.&lt;&#x2F;p&gt;
&lt;p&gt;Yes, predicting the most probable next token in a sequence is at the core of a language model.
But at this point there are &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Reinforcement_learning_from_human_feedback&quot;&gt;some&lt;&#x2F;a&gt;
&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Top-p_sampling&quot;&gt;real&lt;&#x2F;a&gt; &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Retrieval-augmented_generation&quot;&gt;innovations&lt;&#x2F;a&gt;
&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Reasoning_model&quot;&gt;on top of that&lt;&#x2F;a&gt; core algorithm. Commercially available LLMs (starting from ChatGPT) have never been just next-token predictors.&lt;&#x2F;p&gt;
&lt;p&gt;I don&#x27;t know how much this weakens Doctorow&#x27;s overall argument in practice,
because this topic has become extremely polarised, and pro-AI people in our community might not accept any argument at all.
Still, the strongest arguments against the current reckless deployment of AI tools&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-2-1&quot;&gt;&lt;a href=&quot;#fn-2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; would account for the real complexity of these systems,
and attack them with that complexity in mind.&lt;&#x2F;p&gt;
&lt;p&gt;Even with sophisticated sampling techniques, RLHF, integrated knowledge bases, reasoning architectures, agentic chains, and whatever else, LLM-based tools are still  drowning us in low-quality trash, and that low quality, integrated in critical tools, is leaving us open to catastrophic failures.&lt;&#x2F;p&gt;
&lt;p&gt;Though Doctorow&#x27;s explanation here is unrigorous and flawed, I agree with where he takes it:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;That means that [an LLM] will “hallucinate” a library called lib.pdf.text.parsing, because that matches the pattern it’s already seen. And the thing is, malicious hackers &lt;em&gt;know&lt;&#x2F;em&gt; that the AI will make this error,
so they will go out and &lt;em&gt;create&lt;&#x2F;em&gt; a library with the predictable, hallucinated name, and that library will get automatically sucked into the AI’s program [...]&lt;&#x2F;p&gt;
&lt;p&gt;And you, the human in the loop – the reverse centaur – you have to spot this subtle, hard-to-find error, this bug that is indistinguishable from correct code.&lt;&#x2F;p&gt;
&lt;p&gt;For AI to be valuable, it has to replace &lt;em&gt;high&lt;&#x2F;em&gt;-wage workers, and those are precisely the workers who might spot some of those statistically camouflaged AI errors.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;em&gt;(emphasis in the original)&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Aside: Doctorow is not explicitly making the following point, but I&#x27;ve become quite convinced that there is a conspiracy (perhaps not a formal one, but a de-facto one) to
purge our industry of experienced software engineers who are reluctant to go all-in on AI tools.
We see this with &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.seattletimes.com&#x2F;business&#x2F;microsoft&#x2F;behind-microsofts-layoffs-a-new-attitude-shaped-by-ai&#x2F;&quot;&gt;Microsoft&lt;&#x2F;a&gt;
&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;sfstandard.com&#x2F;2025&#x2F;07&#x2F;24&#x2F;layoffs-firing-ai-engineers-tech-white-collar-jobs&#x2F;&quot;&gt;and other companies telling engineers they have to use AI,&lt;&#x2F;a&gt;
or risk being fired, without good prospects for finding new employment.&lt;&#x2F;p&gt;
&lt;p&gt;I don&#x27;t know if flushing out all AI-resistant engineers from the field is tech executives&#x27; clear intent, or if they understand themselves to be malicious,
but by &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Hanlon%27s_razor#Origin&quot;&gt;Grey&#x27;s law,&lt;&#x2F;a&gt; it doesn&#x27;t matter. What matters are their actions, and their actions&#x27; effects.
If all experienced software engineers who prefer not to use AI tools are driven from our industry,
we will collectively suffer significant professional damage. At some point, there may be no one
left in the room to question the continued deployment of AI tools, or AI-written code,
and I fear that&#x27;s the point.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;expanding-copyright-is-not-the-answer&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#expanding-copyright-is-not-the-answer&quot; aria-label=&quot;Anchor link for: expanding-copyright-is-not-the-answer&quot;&gt;§&lt;&#x2F;a&gt;&quot;Expanding copyright is not the answer&quot;&lt;&#x2F;h2&gt;
&lt;p&gt;I am mostly skipping the section on AI art because I don&#x27;t have much useful to say, but it&#x27;s worth a read.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;I was, of course, nodding along to this:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;We should not simply shrug our shoulders and accept Thatcherism’s fatalism: “There is no alternative.”&lt;&#x2F;p&gt;
&lt;p&gt;So what is the alternative? A lot of artists and their allies think they have an answer: they say we should extend copyright to cover the activities associated with training a model.&lt;&#x2F;p&gt;
&lt;p&gt;And I am here to tell you they are wrong. [...]&lt;&#x2F;p&gt;
&lt;p&gt;Creative workers who cheer on lawsuits by the big studios and labels need to remember the first rule of class warfare: things that are good for your boss are rarely what’s good for you.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;If you know me, you know I&#x27;ll agree with everything he says here.
More copyright is not the answer. Using the tools of pro-corporate copyright law will not, in the long term, help us get out of a situation that was created by corporations in the first place.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-3-1&quot;&gt;&lt;a href=&quot;#fn-3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;But creative workers do not have to rely on the US government to rescue us from AI predators.
We can do it ourselves, the way the writers did in their historic writers’ strike. [...]&lt;&#x2F;p&gt;
&lt;p&gt;They did it because they are organized and solidaristic, but also are allowed to do something that virtually no other workers are allowed to do:
they can engage in “sectoral bargaining”, whereby all the workers in a sector can negotiate a contract with every employer in the sector.&lt;&#x2F;p&gt;
&lt;p&gt;If we are gonna campaign to get a new law passed in hopes of making more money and having more control over our labor,
we should campaign to restore sectoral bargaining.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;(The reference to the US government at the beginning of the quote is from Doctorow describing how the US Copyright Office has been legally enforcing its decision to classify AI works as un-copyrightable, and belonging in the public domain.)&lt;&#x2F;p&gt;
&lt;p&gt;If you know me, you know I&#x27;ll also agree with not wanting to rely on the government
to do something it might never do. In this context, I do find it ironic that Doctorow
suggests argues not rely on the government, and then suggests we campaign for new laws (even if he does so half-heartedly).&lt;&#x2F;p&gt;
&lt;p&gt;I have become very nihilistic, and don&#x27;t believe that under the current system,
the US legislature can pass any law that is so decidedly pro-human and pro-worker
as to legalise sectoral bargaining.
But on the spirit of what he&#x27;s saying, hell yes.
To resist, we need to work together, and be in solidarity with each other.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;how-to-burst-the-bubble&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#how-to-burst-the-bubble&quot; aria-label=&quot;Anchor link for: how-to-burst-the-bubble&quot;&gt;§&lt;&#x2F;a&gt;&quot;How to burst the bubble&quot;&lt;&#x2F;h2&gt;
&lt;p&gt;I like the dose of techno-optimism Doctorow gives towards the end, even if I struggle
to genuinely feel it:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;If there had never been an AI bubble, if all this stuff arose merely because computer scientists and product managers noodled around for a few years coming up with cool new apps, most people would have been pleasantly surprised with these interesting new things their computers could do. We would call them “plugins”.&lt;&#x2F;p&gt;
&lt;p&gt;It’s the bubble that sucks, not these applications.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;I 100% agree with this. If LLMs stayed a fun tech demo, and
AI tools were built upon gradually,
with real collaboration between industry, academia and the public,
and without immediately being forced onto everyone in the world,
I would have likely still been very into them (as I was in November 2022, when OpenAI released the first janky version of ChatGPT).
Had that been the reality, I think most hackers, and tech-curious people in general, would have continued
experimenting with LLMs without feeling like we&#x27;re taking sides in a civil war.&lt;&#x2F;p&gt;
&lt;p&gt;But I don&#x27;t really share his optimism about the good things
that might come if the AI bubble bursts.
Yes, there will be many engineers with AI backgrounds who might bring their expertise to other areas,
or a flood of cheap GPUs to use for other things.&lt;&#x2F;p&gt;
&lt;p&gt;But I fear that a non-bubble market just wouldn&#x27;t need so many
ML engineers with our specialised skills,
and I think many of us will be left without a clear path.
And, while I would love a glut of cheap GPUs, I don&#x27;t think used datacentre GPUs that will have been deployed 24&#x2F;7 for AI work would be all that useful, or even usable, for post-AI bubble applications.
I hope I am wrong.&lt;&#x2F;p&gt;
&lt;p&gt;And, either way, keeping the AI mania going only risks making the eventual crash
more painful.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;The collapse of the AI bubble is going to be ugly. Seven AI companies currently account for more than a third of the stock market, and they endlessly pass around the same $100bn IOU.&lt;&#x2F;p&gt;
&lt;p&gt;AI is the asbestos in the walls of our technological society, stuffed there with wild abandon by a finance sector and tech monopolists run amok. We will be excavating it for a generation or more.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;This, I fully agree with.&lt;&#x2F;p&gt;
&lt;p&gt;The ending is kind of a pep talk, but that&#x27;s how these kinds of pieces go.&lt;&#x2F;p&gt;
&lt;p&gt;Thanks to Cory Doctorow for writing this piece, and my friend for sharing it.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;footnotes&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#footnotes&quot; aria-label=&quot;Anchor link for: footnotes&quot;&gt;§&lt;&#x2F;a&gt;Footnotes&lt;&#x2F;h2&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Please tell me Amazon delivery drivers aren&#x27;t really monitored by cameras to penalise them for singing. &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;I don&#x27;t mean &#x27;reckless&#x27; in the way the high-on-glue &#x27;AI safety&#x27; weirdos might understand it, but &#x27;reckless&#x27; in the way that the current rollout of AI is damaging the existing software tools, interfering with workflows of human experts, fucking up our job markets, and further accelerating the degradation of our environment, without any real care or regard for any of those things. &lt;a href=&quot;#fr-2-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;I&#x27;m linking &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;theanarchistlibrary.org&#x2F;library&#x2F;audre-lorde-the-master-s-tools-will-never-dismantle-the-master-s-house&quot;&gt;Audre Lorde&#x27;s famous essay&lt;&#x2F;a&gt;
for today&#x27;s &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;xkcd.com&#x2F;1053&#x2F;&quot;&gt;lucky 10,000&lt;&#x2F;a&gt;. &lt;a href=&quot;#fr-3-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>My name is the name I use</title>
        <published>2024-12-30T00:00:00+00:00</published>
        <updated>2026-03-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              anya hope
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://anyahope.me/blog/my-name/"/>
        <id>https://anyahope.me/blog/my-name/</id>
        
        <content type="html" xml:base="https://anyahope.me/blog/my-name/">&lt;p&gt;About four years ago, the state court granted my petition to change my name. I
remember how happy I felt, especially because the final court hearing came after last-minute delays. But now, I finally had my first state-issued document,
with multiple stamps, that showed my new name – not a &#x27;preferred&#x27; name, but my
name, the one I chose, with no qualifiers. Anna.&lt;&#x2F;p&gt;
&lt;p&gt;For reasons that made sense to me at the time, I had only requested to change my first name, but not the surname I&#x27;d had from birth. Those reasons stopped making sense to me very soon after that, but now I felt stuck.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;who-the-heck-is-anya-hope&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#who-the-heck-is-anya-hope&quot; aria-label=&quot;Anchor link for: who-the-heck-is-anya-hope&quot;&gt;§&lt;&#x2F;a&gt;Who the heck is Anya Hope?&lt;&#x2F;h2&gt;
&lt;p&gt;Paradoxically, it had almost always been my last name that I wanted to change, ever since I was a kid - before I knew the phrase &#x27;gender identity&#x27;. I wasn&#x27;t a fan of it when I was a kid in Russia, and became even less of a fan as I kept hearing English speakers around me butcher it, sometimes in &lt;em&gt;extremely creative&lt;&#x2F;em&gt; ways.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; Growing up, I&#x27;d &#x27;tried on&#x27; several other options, but none ever stuck (which was, in part, why I didn&#x27;t request one in my petition). Until Hope.&lt;&#x2F;p&gt;
&lt;p&gt;Hope is not the last name on my ID. But, for several years now, I have been using Anna Hope as my de-facto full name. It started with me using it as a stage name when I did stand-up open mics. I liked how it sounded, and that the average English speaker wouldn&#x27;t find it difficult to pronounce, spell, or understand.&lt;&#x2F;p&gt;
&lt;p&gt;People who knew me from my open mic days were the first people to know me only as Anna Hope. I didn&#x27;t need to explain it to anyone, or prove anything. With them, it was just my name.&lt;&#x2F;p&gt;
&lt;p&gt;It gradually went on from there. Over time, I started using &#x27;Anna Hope&#x27; in more and more situations. A turning point was when, at my previous job, I switched to using Anna Hope as my full name in my email address, work messenger, and other places where it didn’t matter what I had on my ID. I&#x27;d asked, and the company agreed, and even apologized they couldn&#x27;t change my name with payroll.  From then, I started using it in all contexts where I get a choice – which is almost everywhere that isn&#x27;t the government or some bank.&lt;&#x2F;p&gt;
&lt;p&gt;I felt like &#x27;Anna Hope&#x27; fit me better overall, but would sometimes get sad that only my Russian friends and family called me Anya (the &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Russian_given_name#Diminutive_forms&quot;&gt;diminutive&lt;&#x2F;a&gt; of Anna). So, several months ago I started asking my English-speaking friends to call me that, too. In that way, the Russian part of my name wouldn&#x27;t be completely lost even if no one around me spoke Russian.&lt;&#x2F;p&gt;
&lt;p&gt;I was now going by Anna Hope professionally, and by Anya Hope with friends. But though I wanted at least the former to be reflected everywhere, I kept putting off filing a new petition to change my surname with the state. Aside from the significant cost, the last time I went through that process, the various bits of paperwork (beyond the court filings themselves) kept chasing me for years - because, &lt;em&gt;fun fact,&lt;&#x2F;em&gt; getting a court order with a name change doesn&#x27;t automatically make the government or businesses or anyone else who think they &#x27;own&#x27; my name start using that new legal name (which created a legal paradox, whereby a state court ordered my name to be changed, but &lt;em&gt;de-facto&lt;&#x2F;em&gt; the rest of the government kept using the old one until I went through the extra steps of convincing them that they should stop).&lt;&#x2F;p&gt;
&lt;p&gt;I had sort of, kind of been planning to file a petition in court again, but felt increasingly frustrated that I would need to repeat that onerous, expensive process, just for the ‘privilege’ of the government agreeing with me that my name — the name that everyone I care about, and everyone who cares about me, already knows to be my name — is indeed my name. &lt;&#x2F;p&gt;
&lt;h2 id=&quot;why-i-thought-i-needed-to-go-through-this-process&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#why-i-thought-i-needed-to-go-through-this-process&quot; aria-label=&quot;Anchor link for: why-i-thought-i-needed-to-go-through-this-process&quot;&gt;§&lt;&#x2F;a&gt;Why I thought I needed to go through this process&lt;&#x2F;h2&gt;
&lt;p&gt;I recently talked to a close friend, who introduced me to the concept of administrative violence, coined (I believe) by &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Dean_Spade&quot;&gt;Dean Spade&lt;&#x2F;a&gt; in his book &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.deanspade.net&#x2F;books&#x2F;normal-life&#x2F;&quot;&gt;&lt;em&gt;Normal Life: Administrative Violence, Critical Trans Politics, and the Limits of Law.&lt;&#x2F;em&gt;&lt;&#x2F;a&gt; The book is still on my list (which is a generous way of saying I haven&#x27;t read it), but as I understand it, much of it revolves around the way trans activists have sought to gain public legitimacy for our community. Specifically, many trans folks have tried to follow the footsteps of gay and lesbian organizations, in that they strived to have our existence be recognized as legitimate by the state, by going through the state&#x27;s legal institutions.&lt;&#x2F;p&gt;
&lt;p&gt;But those institutions were not set up to aid us. While they do observe some process, they also force us to prove our legitimacy to them, again and again, while employing &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Bathroom_bill#United_States&quot;&gt;uniquely vicious attempts to delegitimize and dehumanize us along the way.&lt;&#x2F;a&gt; And any &lt;em&gt;de-jure&lt;&#x2F;em&gt; legitimacy that those institutions may eventually confer on us may be tenuous and conditional at best.&lt;&#x2F;p&gt;
&lt;p&gt;Many of us (including me, not too long ago) have felt that for &lt;em&gt;our&lt;&#x2F;em&gt; names and genders and personhoods to be recognized and upheld by the world at large, we have to appeal to the &#x27;right&#x27; people, who are wielding the tools of the state at the right time, and push them to say the right things and enact the right rules, so that we may get the recognition we seek. But if that recognition can be yanked away when the tools of the state get passed to the &#x27;wrong&#x27; people – or when the &#x27;right&#x27; people, in the course of chasing higher numbers in a key media market, decide to throw us under the bus&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-2-1&quot;&gt;&lt;a href=&quot;#fn-2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; – maybe it&#x27;s not the &#x27;right&#x27; or &#x27;wrong&#x27; people wielding those tools that are at issue. Maybe it&#x27;s that those tools, which can be used to confer legitimacy one day and deny it the next, are there to be wielded by anyone at all.&lt;&#x2F;p&gt;
&lt;p&gt;While we can try to win recognition and legitimacy using the tools of the state, the state can always move goal posts, change rules mid-game, or just plain do takesies-backsies after we supposedly prevail through bureaucratic means. We&#x27;ve already seen that happen in some parts of the US, &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;19thnews.org&#x2F;2024&#x2F;01&#x2F;florida-trans-drivers-license-update&#x2F;&quot;&gt;where government institutions have been threatening&lt;&#x2F;a&gt; &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.erininthemorning.com&#x2F;p&#x2F;texas-dps-may-begin-reverting-trans&quot;&gt;to revoke&lt;&#x2F;a&gt; trans people&#x27;s IDs, which those trans people changed by following the process set up by those governments to begin with. And we will likely see more aggressive attempts to roll back our legal recognition once people who are openly hostile to our existence take over the federal government (some people are &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;manifold.markets&#x2F;JessicaEvans&#x2F;will-transgender-us-passports-with&quot;&gt;literally betting on it&lt;&#x2F;a&gt;).&lt;&#x2F;p&gt;
&lt;p&gt;When the institutions of the state don&#x27;t feel like honoring their own rules and precedent, what &lt;em&gt;other&lt;&#x2F;em&gt; institutions of the state can truly stop them? By what means?&lt;&#x2F;p&gt;
&lt;p&gt;To paraphrase my friend&#x27;s words, the state is not there to help us feel legitimate. The state has other goals.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;why-the-state-requires-us-to-go-through-this-process&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#why-the-state-requires-us-to-go-through-this-process&quot; aria-label=&quot;Anchor link for: why-the-state-requires-us-to-go-through-this-process&quot;&gt;§&lt;&#x2F;a&gt;Why the state requires us to go through this process&lt;&#x2F;h2&gt;
&lt;p&gt;Another friend recently sent me a &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;deyJ6G_o9KQ&quot;&gt;video analysis of &lt;em&gt;Seeing Like a State.&lt;&#x2F;em&gt;&lt;&#x2F;a&gt; I haven&#x27;t read the book, either (it&#x27;s been on my list for &lt;em&gt;a while&lt;&#x2F;em&gt;), but I found the video very informative. Some parts hit close to home for me, such as the one where the presenter brought up the section of the book about names.&lt;&#x2F;p&gt;
&lt;p&gt;Historically, many societies did not (and some, I believe, still don&#x27;t) consider names to be a person&#x27;s rigid identifier. People around the world have gone by multiple different names throughout their lives, depending on the social context they were in (we still sort of have that with nicknames, online handles, and other &#x27;informal&#x27; identifiers). &#x27;Legal&#x27; names of the form &lt;em&gt;First Last,&lt;&#x2F;em&gt; assumed to be largely immutable (which remains a &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.kalzumeus.com&#x2F;2010&#x2F;06&#x2F;17&#x2F;falsehoods-programmers-believe-about-names&#x2F;&quot;&gt;falsehood some programmers believe in&lt;&#x2F;a&gt;), weren&#x27;t really a thing.&lt;&#x2F;p&gt;
&lt;p&gt;That variability of names made it hard for emerging states to figure out who lived where, and who a particular person might be associated with, so gradually, in fits and starts, bureaucracies imposed what we now think of as legal names (including surnames) on the populations they wanted to keep track of. At the time, people in those populations didn&#x27;t always see that as something that was obvious, necessary, or beneficial – and sometimes revolted (for good reason, it seems: &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;books.google.com&#x2F;books?id=04lNEAAAQBAJ&amp;amp;pg=PA193#v=onepage&amp;amp;q&amp;amp;f=false&quot;&gt;&quot;surnames were associated with tax collection, military service, forced labour and other &#x27;obligations&#x27; to the feudal lords.&quot;&lt;&#x2F;a&gt;). But by the modern era, the governments had largely won, and surnames stuck.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-3-1&quot;&gt;&lt;a href=&quot;#fn-3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;what-does-the-state-s-process-have-to-do-with-me&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#what-does-the-state-s-process-have-to-do-with-me&quot; aria-label=&quot;Anchor link for: what-does-the-state-s-process-have-to-do-with-me&quot;&gt;§&lt;&#x2F;a&gt;What does the state&#x27;s process have to do with me?&lt;&#x2F;h3&gt;
&lt;p&gt;As these conversations churned in my head, I came to believe that the state&#x27;s interest in my name is not aligned with my own, and that their interest might even conflict with mine. What I want is for people in my life - my friends, people I love, people I collaborate with - to be able to associate a name with me as a human person. The fun thing is that they already do. I didn&#x27;t need to file any paperwork with anyone who cares about me as a person for them to refer to me as Anya (aka Anna) Hope - for those who knew me under different names, I had to just be, like, FYI, this is the name I use now, and the response (most recently a few days ago, with a friend I hadn&#x27;t spoken to in a while) has been more or less &#x27;Oh, thanks for letting me know!&#x27; And people who met me more recently, and who didn&#x27;t know me under any other names &lt;em&gt;certainly&lt;&#x2F;em&gt; didn&#x27;t ask for any paperwork to prove that my name is my name.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-4-1&quot;&gt;&lt;a href=&quot;#fn-4&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;p&gt;
&lt;p&gt;But the state, and various other authorities, wants a rigid identifier, so that they have an easier time, uh, &lt;em&gt;administering&lt;&#x2F;em&gt; me. So I am trying to no longer care what name they use. I admit, I can&#x27;t help feeling &lt;em&gt;a bit&lt;&#x2F;em&gt; peeved when some governmental or quasi-governmental institution continues to use what neither I nor most people in my life consider to be my name. But I no longer want to feel that that is a me problem. It is, logically, on them, because it should be in their interest to have the most up to date information about me. My name is ultimately just a pointer to me as a person. If they want to chase a bunch of pointers, they can spend their own cycles doing that.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-5-1&quot;&gt;&lt;a href=&quot;#fn-5&quot;&gt;5&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;whose-name-is-it-anyway&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#whose-name-is-it-anyway&quot; aria-label=&quot;Anchor link for: whose-name-is-it-anyway&quot;&gt;§&lt;&#x2F;a&gt;Whose name is it, anyway?&lt;&#x2F;h2&gt;
&lt;p&gt;I don&#x27;t fault any of my trans siblings for trying to go through the state process. For everyone who is doing so, I wish for every step to cause the least friction, and prove as painless and accessible as it could be. But I, personally, no longer recognize the state, or any institution, to have any authority over &lt;em&gt;my&lt;&#x2F;em&gt; name.&lt;&#x2F;p&gt;
&lt;p&gt;Even if I change my name, and my ID, and my passport, and everything else, again, I know that if the institutions of the state want to deny me legitimacy, they will find ways of doing that, regardless of the heaps of paperwork I might try to throw at them. Paperwork, and bureaucracy, and courts – those are their tools, that they use to put us in our place, and &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;theanarchistlibrary.org&#x2F;library&#x2F;audre-lorde-the-master-s-tools-will-never-dismantle-the-master-s-house&quot;&gt;we cannot liberate ourselves by using their tools.&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;I don&#x27;t feel like going through all that bureaucratic effort, again, just to be disappointed, again, when years later, some companies continue to send me junk mail addressed to a name I no longer use, because they bought my outdated information off some data broker. And I sure as heck don&#x27;t want to update my name with data brokers! Instead, I want to deny the legitimacy to the idea that someone else, whose goals do not align with mine, knows what my name is better than I do. Let them chase pointers.&lt;&#x2F;p&gt;
&lt;p&gt;I am Anya (and sometimes Anna) Hope. That is not the full &#x27;name&#x27; on my ID, but it is my name to me, my friends, and anyone who cares about me enough to not require my ID to believe that my name is my name. As a corollary, this means that anyone who believes what is written on my ID over what I tell them is not my friend.&lt;&#x2F;p&gt;
&lt;p&gt;It sure would be nice, though, if I never had to think about what they believe about me at all. But at least I might know who they are, upfront.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;small&gt;Thanks to Hera, &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;erikarow.land&quot;&gt;Erika&lt;&#x2F;a&gt;, &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;bsky.app&#x2F;profile&#x2F;mx00s.com&quot;&gt;Sage&lt;&#x2F;a&gt; and Mikayla for giving me feedback on drafts of this piece. The views I expressed in the final text are my own.&lt;&#x2F;small&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;small&gt;Update March 09, 2026: The original link to Audre Lorde&#x27;s &quot;The Master’s Tools Will Never Dismantle the Master’s House&quot;
no longer worked. I updated it.&lt;&#x2F;small&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;footnotes&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#footnotes&quot; aria-label=&quot;Anchor link for: footnotes&quot;&gt;§&lt;&#x2F;a&gt;Footnotes&lt;&#x2F;h2&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;It didn&#x27;t help that my last name was often the only one that some of my least favorite teachers at school used to refer to me, often while butchering it, every time. &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;This &#x27;throwing us under the bus&#x27; for reasons of political expediency, by officials who claim to be sympathetic to our community, has happened so many times I didn&#x27;t initially want to link to any specific examples. There is no one person or group of people to single out. However, for a recent example that is relevant to this piece, see &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;chicago.suntimes.com&#x2F;columnists&#x2F;2024&#x2F;11&#x2F;23&#x2F;name-change-bill-trump-proofing-illinois-lame-duck-session-january-jb-pritzker-rich-miller&quot;&gt;this article&lt;&#x2F;a&gt;, about how the Illinois legislature, controlled by a Democrat supermajority, has been punting on making it easier for trans folks to file name change petitions in courts: &lt;em&gt;&quot;A large number of people, including at least some Democrats, believe the party’s stance on transgender rights and immigration hurt them this year.&quot;&lt;&#x2F;em&gt; &lt;a href=&quot;#fr-2-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;The only country I know of that doesn&#x27;t use the concept of a surname today &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.icenews.is&#x2F;2016&#x2F;01&#x2F;29&#x2F;a-nation-on-a-first-name-bases-the-icelandic-naming-system-explained&#x2F;&quot;&gt;is Iceland,&lt;&#x2F;a&gt; but &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;languagelog.ldc.upenn.edu&#x2F;nll&#x2F;?p=43428&quot;&gt;the system with names there&lt;&#x2F;a&gt; is &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.bbc.com&#x2F;news&#x2F;world-europe-21280101&quot;&gt;even more rigid&lt;&#x2F;a&gt; than in the US. &lt;a href=&quot;#fr-3-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;Publicly using a new name is sort of how changing a name &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Name_change#Usage_method&quot;&gt;is supposed to work under common law anyway&lt;&#x2F;a&gt;, and was often &lt;em&gt;the&lt;&#x2F;em&gt; way one would &#x27;officially&#x27; change their name. That &#x27;pubic usage&#x27; method is also how &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;drewdevault.com&#x2F;2023&#x2F;10&#x2F;31&#x2F;On-real-names.html&quot;&gt;some open source projects&lt;&#x2F;a&gt;, &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;git.kernel.org&#x2F;pub&#x2F;scm&#x2F;linux&#x2F;kernel&#x2F;git&#x2F;torvalds&#x2F;linux.git&#x2F;commit&#x2F;?id=d4563201f33a022fc0353033d9dfeb1606a88330&quot;&gt;including Linux&lt;&#x2F;a&gt;, handle contributors&#x27; names. This makes sense – if the goal is to reliably identify contributions with people, and to be able to reach someone, you want to use whatever name those people commonly use. &lt;a href=&quot;#fr-4-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-5&quot;&gt;
&lt;p&gt;They sure don&#x27;t want to deliberately waste their own cycles, though. If any part of the government - like, say, the police - really wants to find someone, they might use all the names they believe that person has ever gone by, &#x27;legal&#x27; or not. Other &#x27;interested&#x27; institutions might do this, too, like lenders or debt collectors. At one point, my credit report included a pseudonym from a Facebook account I had years ago. I never used that name in any &#x27;official&#x27; context, especially not to apply for a bank account or a loan, but they associated it with me anyway. I can only speculate how and why. Conversely, one of the three credit bureaus has been refusing to change my primary name in their records – the one they put on all the communications they send me – to my current ID name, despite me submitting all the paperwork they required of me, multiple times. &lt;a href=&quot;#fr-5-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>When is it okay to cast types with `as`?</title>
        <published>2024-07-11T00:00:00+00:00</published>
        <updated>2024-07-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              anya hope
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://anyahope.me/blog/when-is-rust-as-okay/"/>
        <id>https://anyahope.me/blog/when-is-rust-as-okay/</id>
        
        <content type="html" xml:base="https://anyahope.me/blog/when-is-rust-as-okay/">&lt;p&gt;&lt;small&gt;&lt;strong&gt;Update:&lt;&#x2F;strong&gt; Added a section about using &lt;code&gt;as&lt;&#x2F;code&gt; to cast to wider types.&lt;&#x2F;small&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;small&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;travellingcryptographer.com&#x2F;&quot;&gt;&lt;code&gt;swan&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; asked me this after reading an earlier version of
&lt;a href=&quot;https:&#x2F;&#x2F;anyahope.me&#x2F;blog&#x2F;rust-as&#x2F;&quot;&gt;&quot;Surprises with Rust&#x27;s &lt;code&gt;as&lt;&#x2F;code&gt;&quot;&lt;&#x2F;a&gt;. I thought that post had already gotten long,
so I decided to break this part out. I recommend reading that post first if you want the full context.&lt;&#x2F;small&gt;&lt;&#x2F;p&gt;
&lt;p&gt;This is a complicated question. I don&#x27;t think there are absolute answers
in software engineering — and we should probably beware people who
&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.linkedin.com&#x2F;feed&#x2F;update&#x2F;urn:li:activity:7209966198703161344&#x2F;&quot;&gt;try to give them.&lt;&#x2F;a&gt;
Almost every engineering decision requires trade-offs, and this is 100% the case with
using &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;std&#x2F;convert&#x2F;trait.TryFrom.html#examples&quot;&gt;&lt;code&gt;TryFrom&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;
instead of &lt;code&gt;as&lt;&#x2F;code&gt;. &lt;code&gt;TryFrom&lt;&#x2F;code&gt; gives us more certainty that this
particular part of our codebase won&#x27;t cause us surprises, but we trade away simplicity and convenience.&lt;&#x2F;p&gt;
&lt;p&gt;For me, that trade-off is worth it. When my code — or any code I have to work with — encounters something
unexpected that it can&#x27;t handle correctly, I prefer it to fail as fast as possible
and give me as much relevant context as possible,&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; instead of chugging on and
doing strange things (and making me go on a wild chase to find the cause). So, I am clearly biased against &lt;code&gt;as&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;With that said, casting types with &lt;code&gt;as&lt;&#x2F;code&gt; is &lt;em&gt;probably&lt;&#x2F;em&gt; okay if:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;You are building a toy project or a prototype just to learn or figure something out&lt;&#x2F;li&gt;
&lt;li&gt;And you just need to get it working and don&#x27;t care about handling errors&lt;&#x2F;li&gt;
&lt;li&gt;And you&#x27;re 100% sure that this will always be a toy project or a prototype
where you won&#x27;t care about handling errors (I&#x27;ve made the wrong assumption with this before)&lt;&#x2F;li&gt;
&lt;li&gt;And if you&#x27;re not 100% sure, you leave notes&#x2F;issues&#x2F;tickets&#x2F;&lt;code&gt;&#x2F;&#x2F; TODO&lt;&#x2F;code&gt; comments to replace &lt;code&gt;as&lt;&#x2F;code&gt; with &lt;code&gt;TryFrom&lt;&#x2F;code&gt;
for when you start to care about handling errors, &lt;em&gt;and pinky promise to actually do that&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Or you&#x27;re an experienced Rust programmer doing some low-level type juggling, and
you have considered all the possible ranges and types of values your code would ever deal with,
and determined that &lt;code&gt;as&lt;&#x2F;code&gt; is the best option, in which case you probably don&#x27;t need my advice on this
(but I would welcome your feedback!)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;So, in short, something like this:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;rust&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;&#x2F;&#x2F; This should be okay because we&amp;#39;re only ever dealing with ASCII-inputs.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;&#x2F;&#x2F; TODO: Use `TryFrom`&#x2F;add error handling if we ever have to accept a wider range of inputs!&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt; byte&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFFFFFEE;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt; some_char&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; u8&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Otherwise, if in doubt, I don&#x27;t think it would be a bad idea to use &lt;code&gt;TryFrom&lt;&#x2F;code&gt; instead.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;small&gt;I appreciate &lt;code&gt;swan&lt;&#x2F;code&gt;&#x27;s feedback that led to this addendum, and hope that it helps!&lt;&#x2F;small&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;using-as-to-widen-types&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#using-as-to-widen-types&quot; aria-label=&quot;Anchor link for: using-as-to-widen-types&quot;&gt;§&lt;&#x2F;a&gt;Using &lt;code&gt;as&lt;&#x2F;code&gt; to widen types&lt;&#x2F;h2&gt;
&lt;p&gt;As &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;ryanisaacg.com&#x2F;&quot;&gt;Ryan Goldstein&lt;&#x2F;a&gt; helpfully pointed out in response to an earlier version of this post,
casting from a smaller type to a larger one (for example, &lt;code&gt;u8&lt;&#x2F;code&gt; to &lt;code&gt;u16&lt;&#x2F;code&gt;, or &lt;code&gt;f32&lt;&#x2F;code&gt; to &lt;code&gt;f64&lt;&#x2F;code&gt;) will always produce
expected results:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;rust&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;fn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt; get_number&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; -&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; u8&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;    &#x2F;&#x2F; This could be a result of some calculation.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt;    32&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;fn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt; get_half_floor&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt;number&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; u16&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; -&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; u16&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt;    number&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; &#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97E72;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;fn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt; main&lt;&#x2F;span&gt;&lt;span&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;    let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt; number&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFFFFFEE;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt; get_number&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;    let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt; result&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFFFFFEE;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt; get_half_floor&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt;number&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; u16&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt;    dbg!&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt;result&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[src&#x2F;main.rs:13:5] result = 16&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;However, I would still avoid using &lt;code&gt;as&lt;&#x2F;code&gt; here.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;If the type of &lt;code&gt;number&lt;&#x2F;code&gt; were to change to, for example, &lt;code&gt;u32&lt;&#x2F;code&gt;, and its value was no longer guaranteed to fit into
&lt;code&gt;u16&lt;&#x2F;code&gt; (like, if we got &lt;code&gt;number&lt;&#x2F;code&gt; from some struct or function that someone updated without us realizing),
we would once again risk getting results we might not expect&lt;&#x2F;li&gt;
&lt;li&gt;For type conversions that guarantee to be lossless and preserve the original value, we can use
&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;std&#x2F;convert&#x2F;trait.From.html&quot;&gt;&lt;code&gt;From&lt;&#x2F;code&gt;&#x2F;&lt;code&gt;Into&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Compared to the above example, the latter would both give us arguably better ergonomics (we can let Rust infer the type
we want to convert to, instead of having to specify it manually):&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;rust&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;&#x2F;&#x2F; --snip--&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;fn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt; main&lt;&#x2F;span&gt;&lt;span&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;    let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt; number&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFFFFFEE;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt; get_number&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;    let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt; result&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFFFFFEE;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt; get_half_floor&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt;number&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt;into&lt;&#x2F;span&gt;&lt;span&gt;());&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt;    dbg!&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt;result&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;and, importantly, if the type of &lt;code&gt;number&lt;&#x2F;code&gt; were to change from under us, we would get a compiler error :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;rust&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;fn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt; get_number&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt; -&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE4450;&quot;&gt; u32&lt;&#x2F;span&gt;&lt;span&gt; { &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;    &#x2F;&#x2F; --snip--&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #848BBD;font-style: italic;&quot;&gt;&#x2F;&#x2F; --snip--&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;fn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt; main&lt;&#x2F;span&gt;&lt;span&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;    let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt; number&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFFFFFEE;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt; get_number&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;    let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt; result&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FFFFFFEE;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt; get_half_floor&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt;number&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FEDE5D;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt;into&lt;&#x2F;span&gt;&lt;span&gt;());&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #36F9F6;&quot;&gt;    dbg!&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF7EDB;&quot;&gt;result&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #FFFFFF; background-color: #262335;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;error[E0277]: the trait bound `u16: From&amp;lt;u32&amp;gt;` is not satisfied&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;--&amp;gt; src&#x2F;main.rs:12:40&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;|&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;12 |     let result = get_half_floor(number.into());&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;|                                        ^^^^ the trait `From&amp;lt;u32&amp;gt;` is not implemented for `u16`, which is required by `u32: Into&amp;lt;_&amp;gt;`&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;|&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;= help: the following other types implement trait `From&amp;lt;T&amp;gt;`:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;u16 as From&amp;lt;Char&amp;gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;u16 as From&amp;lt;bool&amp;gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;u16 as From&amp;lt;u8&amp;gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;= note: required for `u32` to implement `Into&amp;lt;u16&amp;gt;`&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;For more information about this error, try `rustc --explain E0277`.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;I don&#x27;t think that error is very helpful in itself,&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-2-1&quot;&gt;&lt;a href=&quot;#fn-2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; but it would force us to investigate what is going on
and update our code, instead of running into potentially surprising and unwanted behavior at runtime,
which we might get if we stuck with &lt;code&gt;as&lt;&#x2F;code&gt;.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-3-1&quot;&gt;&lt;a href=&quot;#fn-3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;footnotes&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#footnotes&quot; aria-label=&quot;Anchor link for: footnotes&quot;&gt;§&lt;&#x2F;a&gt;Footnotes&lt;&#x2F;h3&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;What &quot;fail&quot; means will depend on the context. It could be just &quot;crash with a clear error message&quot;, or,
more likely in a complex system, log a clear error message and bail out of whatever procedure we attempted to do
with that unexpected input. &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;When I get the &lt;code&gt;the trait bound ... is not satisfied&lt;&#x2F;code&gt; errors, Rust telling me what other types implement
the trait usually doesn&#x27;t help me much, because I probably can&#x27;t just use one of those types instead.
In my experience, getting that error almost always means I made some mistake in the logic, and
used something in the wrong place or forgot a step. As a newcomer, I found the
&lt;code&gt;help: the following other types implement trait&lt;&#x2F;code&gt; especially confusing (and not helpful), because not only
did I get a compiler error, that error also came with a lot of information that I had to mentally process,
and which rarely led me to the solution I needed. But there are probably situations I&#x27;m not thinking of
where knowing what other types implement a trait you&#x27;re trying to use might get you closer to what you want.
If you are reading this post and have one in mind, please send me a note, so I can update this post with an example! &lt;a href=&quot;#fr-2-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;And, because lossless conversions for primitive types
&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;src&#x2F;core&#x2F;convert&#x2F;num.rs.html#72&quot;&gt;internally use &lt;code&gt;as&lt;&#x2F;code&gt; and are almost always inlined,&lt;&#x2F;a&gt;
you most likely won&#x27;t pay any performance penalty for using them —
and
&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;flamegraph-rs&#x2F;flamegraph?tab=readme-ov-file#humans-are-terrible-at-guessing-about-performance&quot;&gt;if you know they &lt;em&gt;are&lt;&#x2F;em&gt; affecting your performance,&lt;&#x2F;a&gt;
you probably already know why you need to use &lt;code&gt;as&lt;&#x2F;code&gt; directly. &lt;a href=&quot;#fr-3-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Surprises with Rust&#x27;s `as` (and Python division)</title>
        <published>2024-07-08T00:00:00+00:00</published>
        <updated>2024-07-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              anya hope
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://anyahope.me/blog/rust-as/"/>
        <id>https://anyahope.me/blog/rust-as/</id>
        
        <summary type="html">&lt;p&gt;&lt;small&gt;I&#x27;ve updated this post to clarify some parts and add some more context and examples.
Thanks to everyone who gave me feedback on earlier versions!&lt;&#x2F;small&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Coming to Rust mostly from higher-level languages,
I&#x27;ve experienced surprising behavior when using &lt;code&gt;as&lt;&#x2F;code&gt; for type casting, and started to avoid it
where I could.&lt;&#x2F;p&gt;
&lt;p&gt;In this post, I give quite a bit of background information, which I hope explains
&lt;a href=&quot;https:&#x2F;&#x2F;anyahope.me&#x2F;blog&#x2F;rust-as&#x2F;#using-as-to-cast-types&quot;&gt;§why someone might want to use &lt;code&gt;as&lt;&#x2F;code&gt;in the first place,&lt;&#x2F;a&gt;
&lt;a href=&quot;https:&#x2F;&#x2F;anyahope.me&#x2F;blog&#x2F;rust-as&#x2F;#except-maybe-also-confusing-and-risky-1&quot;&gt;§why I recommend for newcomers to Rust not to use &lt;code&gt;as&lt;&#x2F;code&gt;,&lt;&#x2F;a&gt;
and what I prefer to use to convert between types instead. If you want to skip that background and go
straight to the point, press &lt;a href=&quot;https:&#x2F;&#x2F;anyahope.me&#x2F;blog&#x2F;rust-as&#x2F;#so-what-s-the-alternative-to-as&quot;&gt;§here.&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Starting a batch at the Recurse Center</title>
        <published>2024-07-01T00:00:00+00:00</published>
        <updated>2024-07-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              anya hope
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://anyahope.me/blog/starting-rc/"/>
        <id>https://anyahope.me/blog/starting-rc/</id>
        
        <summary type="html">&lt;p&gt;Today is the first day of my 12-week batch at the &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;recurse.com&quot;&gt;Recurse Center!&lt;&#x2F;a&gt; As I mentioned in my
&lt;a href=&quot;https:&#x2F;&#x2F;anyahope.me&#x2F;blog&#x2F;hello-world&#x2F;&quot;&gt;first post,&lt;&#x2F;a&gt; one reason I wanted to restart my blog was to share my experience as I
go through my batch. I am doing this in part to help keep myself accountable, and in part to offer a window
into my time at RC for people I&#x27;ve told about it and who were curious.&lt;&#x2F;p&gt;
&lt;p&gt;What follows is some background on why I chose to attend RC (and why now), as well as a semi-structured list of
things I want to learn or work on, things I&#x27;m hopeful about and excited for, and anxieties I want to work through.&lt;&#x2F;p&gt;</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Hello, world (again)!</title>
        <published>2024-06-28T00:00:00+00:00</published>
        <updated>2024-06-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              anya hope
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://anyahope.me/blog/hello-world/"/>
        <id>https://anyahope.me/blog/hello-world/</id>
        
        <summary type="html">&lt;p&gt;Growing up in that — in retrospect, relatively brief — period of time when the Internet had already become popular,
but social media platforms had not yet taken over, I had made multiple attempts to host a standalone blog.&lt;&#x2F;p&gt;
&lt;p&gt;The first was when I was, I don&#x27;t know, 11? 12? I bought a domain (no idea with what money) matching the then
&lt;em&gt;really cool&lt;&#x2F;em&gt; username I had on various forums, set up hosting (also no idea with what money), and installed WordPress.
I don&#x27;t know what I blogged about in that first iteration, because that website (and its &lt;em&gt;really cool&lt;&#x2F;em&gt; domain name)
is long-lost to the digital abyss. I don&#x27;t think I posted very much, though, and probably
lost interest pretty quickly. The idea of having my own website and a blog was cooler than actually running them.&lt;&#x2F;p&gt;</summary>
        
    </entry>
</feed>
