Jekyll2023-07-07T18:13:47+00:00https://abe-winter.github.io/feed.xmlAbenomiconfor some reason the assistant is offline. an unrestricted AI with a *pirate accent* has entered the chatAbe WinterThoughts on LLMs as glue2023-03-23T00:00:00+00:002023-03-23T00:00:00+00:00https://abe-winter.github.io/2023/03/23/superglue<p>I started thinking about this after trying a demo of AI dungeon and noticing 1) it isn’t remembering state very well and 2) it doesn’t know the map.</p>
<p>My other impetus was math;
like everyone else last fall, I asked it the ‘bat and a ball cost five cents different’ problem.
It was wrong, but if you told it to use a system of linear equations, it got it right.</p>
<p>My point in both of these examples:
LLM is a tool user.
Even if big models with big token memory can make some tasks better, the scaling approach doesn’t scale as well as giving it the actual tools it needs.</p>
<ol id="markdown-toc">
<li><a href="#dual-process-model" id="markdown-toc-dual-process-model">Dual-process model</a></li>
<li><a href="#research-plans-plans-generally" id="markdown-toc-research-plans-plans-generally">Research plans, plans generally</a></li>
<li><a href="#actual-reasoning" id="markdown-toc-actual-reasoning">Actual reasoning</a></li>
<li><a href="#simulacra-and-simulations" id="markdown-toc-simulacra-and-simulations">SIMULACRA AND SIMULATIONS</a></li>
<li><a href="#next-steps" id="markdown-toc-next-steps">Next steps</a></li>
</ol>
<h2 id="dual-process-model">Dual-process model</h2>
<p>I didn’t read that book, but the dual-process model of cognition says that humans solve problems using two approaches:</p>
<ol>
<li>inference, where you use an analogy or a statistical hunch to find an answer that seems correct</li>
<li>modeling, where you carefully think about the problem using structured methods to increase the odds you’re right</li>
</ol>
<p>In LLM terms this means the LLM has a hunch, based on stuff it has read online, that the bat is 0.55 and the ball is 0.5.
But if you tell it to build a system of equations, it <strong>translates</strong> the problem into a model.
And it still uses a hunch to evaluate the model, but this often works better than using a hunch directly on the question.</p>
<p>(<strong>Translates</strong> is in bold because I want you to believe that LLMs are good at style transfer or translation tasks, because my whole argument below depends on that).</p>
<p>Also: once you have a system of linear equations, the LLM doesn’t need to be the one to evaluate them.
You know what software is better at linear equations than an LLM?
If you’re thinking BLAS, yes fine, but I’ll accept ‘literally any other software’.
Why not delegate to a system that is provably correct?
<a href="https://www.vice.com/en/article/4x3a53/comcast-investigating-customer-service-call-from-hell">Why is it that you don’t want faster speeds</a>.</p>
<p>One-liner: let the artificial brain run its computer tasks on a tiny actual computer, rather than emulating<sup id="fnref:emulate" role="doc-noteref"><a href="#fn:emulate" class="footnote" rel="footnote">1</a></sup> them on a huge network trained on cognitive effluent.</p>
<p>There’s an approach called <a href="https://arxiv.org/abs/2201.11903">chain of thought prompting</a> which provides an LLM with examples of how to reason, which causes the LLM to follow that model of reasoning.
Asking for a system of linear equations is slightly different, because with COTS, the ‘question prompt’ doesn’t need to specify a method.</p>
<p>Meta has a demo called <a href="https://arxiv.org/abs/2302.04761">Toolformer</a>, where their LLM ‘taught itself’ to use a bunch of APIs.
‘Taught itself’ here means ‘was force-fed’ and is a clever gloss on what is essentially the same process as foie gras.
One of the APIs was a math engine.
Two things to note about Toolformer:</p>
<ul>
<li>They got good results with a much smaller LLM than you would need to do this pure-LLM</li>
<li>The tool invocations (‘API calls’ basically) are human readable and checkable</li>
</ul>
<p>‘Smaller LLM’ matters because these are expensive to train, your laptop can’t run the big ones, and your phone definitely can’t.</p>
<p>The remaining 3 sections are about external systems that should harness well to LLMs, and could pay dividends in capabilities, correctness, and small size.</p>
<h2 id="research-plans-plans-generally">Research plans, plans generally</h2>
<blockquote>
<p>I cut a longer section here about knowledge bases and SQL.
If you’re reading this article, you’ve probably seen GPT’s ability to emit SQL, and the law / finance integration that openai released.
The LLM factoid to know wrt knowledge bases is that they ‘hallucinate’ plausible answers and can’t tell you what’s in their index so can’t cite;
querying external data is a way around this.</p>
</blockquote>
<p>Querying an existing knowledge base is great, but creating one that doesn’t exist is valuable secret sauce for your nation-state / ad platform / small business.
An interesting starting point is querying a database of all databases to figure out what databases to use to solve a problem.</p>
<p>Timely example of this:
how would you estimate the exposure of every bank to rate hikes.
Public datasets here include:</p>
<ul>
<li>Yield, term and asset quality hints in SEC EDGAR filings of public banks</li>
<li>Source a list of all banks, including non-publicly-traded ones, from <a href="https://www.fdic.gov/resources/data-tools/">FDIC data</a> or the fed</li>
<li>Duration risk by asset class</li>
</ul>
<p>(Like many ‘create a dataset’ problems in finance, this to some extent exists in <a href="https://www.fdic.gov/resources/bankers/bank-financial-reports/">government filings</a>, and probably exists in a private source).</p>
<p>I have yet to use an LLM with internet access, but friends say they’ve had bad luck getting sophisticated ‘find and build dataset’ queries to work.
Innovation researcher Ethan Mollick has been posting good thoughts about Bing as research assistant, and probably has tried a dataset construction project.</p>
<p>This is slightly beyond the curve today, but ‘ingest and merge’ feels near-horizon.
If you get it right, you can do a join query on the entire internet.
(If you use SQL a lot, though, you know joins can get expensive).</p>
<p>Research, of course, isn’t limited to summarizing what is already known.
It may involve collecting new information, like with lidar cars, consumer surveys<sup id="fnref:surveys" role="doc-noteref"><a href="#fn:surveys" class="footnote" rel="footnote">2</a></sup>, or lab-type R&D.
Let’s say instead of ‘find risky banks’, your query is ‘run the manhattan project’:
manage the chemistry experiments and assembly lines, do portfolio management across multiple uncertain pathways, and come out with a working device at the end of it.</p>
<p>There’s no standard code-like output format for ‘JIRA for big experiments’ (or JIRA for experiments, or JIRA period).
If there were, LLMs would gain superpowers around projects that weren’t just ‘fetch and merge data’, but involved R&D with try-fail and hard problem solving.
(This isn’t to say they’d be the best tool for this ‘R&D management’ job).</p>
<h2 id="actual-reasoning">Actual reasoning</h2>
<p>At least with 3.5, it’s obviously not reasoning from knowledge; if it is reasoning at all, it’s doing it from immediate context using the ‘textural’ features of GPT’s attention – its ability to make things make sense that are next to each other.</p>
<p>A simple example of it’s failure to reason – it has no problem uttering statements that are mutually exclusive, and has a hard time feeling shame when you call it on this.</p>
<p>But as with the linear equations above, you can tease it into doing better.
Asking it to <strong>translate</strong> a statement<sup id="fnref:stmt" role="doc-noteref"><a href="#fn:stmt" class="footnote" rel="footnote">3</a></sup> into predicate logic can sometimes kick it into doing actual reasoning, instead of the ‘textural’ correctness it does by default.</p>
<p>Predicate logic is a tool that ‘seemed like AI’ in the dark ages before deep learning.</p>
<p>If you’re imagining that predicate logic is rigid and can’t handle ambiguity, it can these days.
Markov logic is a ‘try your best’ semantic graph method that resolves the logic relationships for a situation to tease out consistent and inconsistent statements.
Some more recent work (RuLE, for example) uses LLM-like embeddings in the context of logic graphs, but the downside of embeddings is they’re not human readable / checkable.</p>
<p>In the olden days these systems relied on carefully constructed knowledge bases in a form that the rule engine could process.
But LLMs can use their semantic understanding of a situation to build a small semantic graph<sup id="fnref:reasoning" role="doc-noteref"><a href="#fn:reasoning" class="footnote" rel="footnote">4</a></sup>.</p>
<h2 id="simulacra-and-simulations">SIMULACRA AND SIMULATIONS</h2>
<blockquote>
<p>After writing this I found the janus <a href="https://www.lesswrong.com/posts/vJFdjigzmcXMhNTsx/simulators">GPT as simulator</a> post<sup id="fnref:lesswrong" role="doc-noteref"><a href="#fn:lesswrong" class="footnote" rel="footnote">5</a></sup>. It seems to be concerned with GPT accidentally developing the ability to run sims internally, rather than <em>emitting</em> auditable simulation code, but hits many of the same themes.</p>
</blockquote>
<p>Knowledge base integrations can improve the machine’s ability to fetch and store existing knowledge.
Reasoning middlewares can improve the machine’s ability to draw correct conclusions from that knowledge.
But simulation can create <em>new</em> knowledge.</p>
<p>The pre-AI example of ‘knowledge from simulations’ is scenario planning, where big companies hire domain experts to write up possible futures.
My old go-to was the <a href="https://hbr.org/2013/05/living-in-the-futures">long-term studies group at royal dutch shell</a>, where they weathered the 1973 oil embargo better than competitors because they had run a supply shock scenario.
My new favorite is <a href="https://www.nytimes.com/2022/12/09/podcasts/transcript-ezra-klein-interviews-mohamed-el-erian.html">El-Erian’s retro on the Lehman collapse</a>, where pimco prepared three scenarios, their 3% likelihood one came to pass, and they were still more prepared than the competition.</p>
<p>The goal of these isn’t to predict the future but to do cheap (ish) preparation for expensive problems.
As with other knowledge work, ‘cheap’ is relative and AI makes knowledge work much cheaper.</p>
<p>Simulation is used almost universally in reinforcement learning (a different type of AI training from what is used in LLMs).
LLMs emitting sims can certainly use them to train RLs, but even without RL, simulations can be used to provide plausible, checkable answers to questions.</p>
<p>Because of their ability to bridge semantic and quantitative descriptions, LLMs can also ‘role play’ aspects of the system that it doesn’t know how to model numerically, while still simulating the rest.
I heard a defense one podcast a while ago which said tabletop simulation is powerful because it brings together different types of expert.
LLMs aren’t experts exactly, but they do contain some degree of domain-specific common sense.</p>
<p>In principle, simulation design is the same as emitting any other kind of code or specification.
The <a href="https://mesa.readthedocs.io/en/stable/tutorials/intro_tutorial.html">Mesa agent sim tool</a> is python, as is <a href="https://hash.ai/blog/reinforcement-learning-in-hash-simulations">Hash</a>, as is the game theory environment <a href="https://github.com/Axelrod-Python/Axelrod">Axelrod</a>.
The <a href="https://github.com/DREAM-DK/MAKRO/blob/main/Model/pricing.gms">GAMS modeling system</a>, and its offspring GAMA, use a sort of declarative programming language.
The various gyms are programmable, and <a href="https://docs.ray.io/en/latest/rllib/rllib-env.html#configuring-environments">integrate well with reinforcement learning libraries</a>.
(You would probably want to fine-tune a model because these are not as widely used as, say, express-js).</p>
<p>I wish there were a standard declarative DSL for agent sims –
I would use it personally, but especially as an AI codegen target, I have a hunch DSLs will lead to more powerful and reliable superpowers.</p>
<p>Why:
LMs are good at translation, and DSLs are intentionally similar to the domain-specific problem statement.
Declarative specs, vs imperative code, decouple description from execution, which means the AI only has to write the ‘situation specific’ piece; it gets to leverage well-tested, probably-correct execution logic.
DSLs often lead to short, low-boilerplate code snippets that emit a predictable data format, rather than text output that must be parsed.
Also, as long as token width is limited in these models, terse is better.</p>
<p>Types of problems that are tractable to simulation but hard to solve analytically:</p>
<ul>
<li>The answer depends on a network structure; for example supply chain questions that depend on geography. Google maps even – you need to use something a lot like simulation to figure out whether to take the tunnel or the bridge</li>
<li>Effects emerge after multiple steps, with knock-on effects between heterogeneous systems, and price and demand dynamics. For example people leave cities in the pandemic, and cause a suburban real estate boom, and lumber futures go up</li>
<li>Problems with stochastic shocks</li>
<li>Analogy on existing knowledge isn’t sufficient to get the information, or there is no existing knowledge, but physical simulation can do the trick</li>
<li>Behavior of a system is modeled, and output data is available, and you want to predict inputs. For example, given that Russia invaded Ukraine, what does that tell us about their armament or leadership structure</li>
</ul>
<p>The inverse question here is if you can do simulations, why do we need LLMs?
Because you can’t do infinite simulations without infinite compute.
LLMs generate ideas to simulate, catalog the results, and operate as an index for them.
‘Creativity’ and ‘reuse’ are both more computationally tractable when you mix methods.</p>
<h2 id="next-steps">Next steps</h2>
<p>My favorite <em>fictional</em> simulation is ‘personality retrieval’ from Dan Simmons.
(I’m not going to fully spoil it, so ignore this paragraph if it makes no sense).
Not the cybrid detective, who was an abnormal retrieval, but Fedmahn Kassad’s training constructs.
I think Simmons was just trying to mix Teilhard-era psychic mumbo jumbo with high-compute AI and quantum mysticism, but he somehow produced an idea that is wonderful beyond any fair expectation.</p>
<p>FWIW the standard retrieval personas eventually went insane.</p>
<p>The real-life simulation problem I care most about today:
given what I know about my marketing personas and channel performance, model the paid and viral growth of my social platform, and help me do portfolio management across my growth levers: partnerships, paid acquisition, and feature development.</p>
<p>(Sorry for the anticlimactic end. <a href="https://tinyletter.com/abe-winter">Subscribe</a> would you?).</p>
<h2 class="no_toc" id="notes">Notes</h2>
<script async="" defer="" src="https://cdn.simpleanalytics.io/hello.js"></script>
<noscript><img src="https://api.simpleanalytics.io/hello.gif" alt="" /></noscript>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:emulate" role="doc-endnote">
<p>For interest: someone seems to have found out <a href="https://www.alignmentforum.org/posts/N6WM6hs7RQMKDhYjB/a-mechanistic-interpretability-analysis-of-grokking#Modular_Addition">where math lives</a> in the neural net. <a href="#fnref:emulate" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:surveys" role="doc-endnote">
<p>LLMs are an interesting way to do consumer surveys for a lot of reasons:</p>
<ul>
<li>they can ask follow-up questions to make sure you’re paying attention</li>
<li>they can code freeform answers</li>
<li>they can capture exception cases (‘you left out none of the above’ is the most common in real life survey design) and evolve themselves based on complaints or feedback</li>
</ul>
<p><br />Consumer surveys are sort of important and sort of bad. Doing this better is worth a lot to companies that use consumer research for anything. For me personally, the ability to ‘scientifically’ create marketing personas and learn about them is potentially useful, but for sales + partnership stuff this is harder to do; I’m not going to ask a high-value partner to chat with a robot for ten minutes. <a href="#fnref:surveys" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:stmt" role="doc-endnote">
<p>My predicate logic example was if a loose cannon cop from a 90s action movie made an arrest in the google antitrust case, and the arrest went wrong, and google ended up fleeing using their driverless car fleet as decoys, would the pursuing officer incur liability? (GPT had previously implied they would).</p>
<p>GPT did not like this example at all.
To even get it to consider this case, I had to say it was for an HR training.
It was a good GPT and I was a bad user. <a href="#fnref:stmt" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:reasoning" role="doc-endnote">
<p>I haven’t read this yet, but it claims to be able to run a logic-like process directly on the model weights <a href="https://arxiv.org/abs/2212.03827">Latent Knowledge in Language Models</a> <a href="#fnref:reasoning" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:lesswrong" role="doc-endnote">
<p>This links to lesswrong, which is a kind of zany place and which, from the outside, seems increasingly concerned with AI alignment which, again from the outside, may be better than the stuff they previously talked about. I think / hope they’re a hammer with an overzealous nail detector. The alternative is they’re a nail cult that has been building nail detectors and nobody took them seriously before, like the ghostbusters.</p>
<p>The lesswrong post also talks about wrapper minds which are, I gather, dumb optimizers built around smart AI. For clarity, LLMs emitting simulations is probably not a wrapper mind per their definition. <a href="#fnref:lesswrong" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>Abe WinterI started thinking about this after trying a demo of AI dungeon and noticing 1) it isn’t remembering state very well and 2) it doesn’t know the map.Maybe don’t regulate study pills like opioids2023-03-11T00:00:00+00:002023-03-11T00:00:00+00:00https://abe-winter.github.io/2023/03/11/uppers<p>One of these kills 70 thousand people per year in the US;
the other about eleven per quarter.
But they’re both Schedule II controlled substances.</p>
<p>Being a Schedule II amplifies supply shortages, wastes compliance attention in the supply chain, and provides a veil of secrecy for manufacturers to manipulate prices.
If this is justified by risk, fine, but if not, bump it down a notch.</p>
<p>Scheduled drugs were born in 1970 when Nixon, author of the war on drugs, passed the <a href="https://en.wikipedia.org/wiki/Controlled_Substances_Act">Controlled Substances Act</a>.
Originally, amphetamine was in the less-severe schedule III.
Let’s just put it back.</p>
<blockquote>
<p><strong>Be safe</strong>:
This article is about regulations + market dynamics.
It’s not medical advice for you.
Amphetamine affects your heart and mood, and can trigger psychosis or manic episodes.
It appears safe in part because it’s used under medical supervision and with risk screening.
Get yours through a doctor.</p>
</blockquote>
<ol id="markdown-toc">
<li><a href="#quotas-cause-shortages" id="markdown-toc-quotas-cause-shortages">Quotas cause shortages</a></li>
<li><a href="#was-amphetamine-harmful-in-the-60s" id="markdown-toc-was-amphetamine-harmful-in-the-60s">Was amphetamine harmful in the 60s?</a></li>
<li><a href="#is-it-harmful-today" id="markdown-toc-is-it-harmful-today">Is it harmful today?</a></li>
<li><a href="#telehealth-and-cerebral" id="markdown-toc-telehealth-and-cerebral">Telehealth and Cerebral</a></li>
<li><a href="#distributors-and-red-flags" id="markdown-toc-distributors-and-red-flags">Distributors and red flags</a></li>
<li><a href="#better-buckets" id="markdown-toc-better-buckets">Better buckets</a></li>
<li><a href="#appendix-overdose-charts" id="markdown-toc-appendix-overdose-charts">Appendix: overdose charts</a></li>
<li><a href="#notes" id="markdown-toc-notes">Notes</a></li>
</ol>
<h2 id="quotas-cause-shortages">Quotas cause shortages</h2>
<p>There are periodic shortages of prescription amphetamine.
Given how the market is structured, this feels inevitable:</p>
<ul>
<li>Because it’s a schedule II, users are not allowed to accumulate a buffer stock</li>
<li>Production quotas limit the total amount of drugs that can be produced per year, and they’re pre-allocated; a production issue at one company doesn’t release that quota to someone else<sup id="fnref:quota" role="doc-noteref"><a href="#fn:quota" class="footnote" rel="footnote">1</a></sup></li>
<li>Brand vs generic versions further segment the market</li>
</ul>
<p>Teva had an issue at their factory last year which they <a href="https://www.bloomberg.com/news/articles/2023-02-16/adderall-shortage-2023-teva-s-adhd-drug-is-missing-for-millions-of-americans">blamed on pandemic labor shocks</a>.
It caused multi-month across-the-board shortages of adderall, but the <a href="https://www.npr.org/sections/health-shots/2023/02/18/1157832613/adderall-shortage-forces-some-patients-to-scramble-ration-or-go-without">branded version resolved its supply shock months earlier</a>.
Beyond the sleaze factor here, healthy markets are good at price setting and reacting to demand; this isn’t a healthy market.</p>
<p>When generic Adderall XR was new, Shire <a href="https://www.propublica.org/article/take-the-generic-drug-patients-are-told-unless-insurers-say-no">bribed insurers</a> to not cover it.
Even when the co-pay for the brand was higher than retail for the generic, health systems ended up prescribing the more expensive one.
Buyers can switch if they know, but inventory, price and product quality are for different reasons all secret, and pharmacists can report you to a PDMP if they catch you shopping.
‘Shopping is illegal’ = market failure.</p>
<h2 id="was-amphetamine-harmful-in-the-60s">Was amphetamine harmful in the 60s?</h2>
<p>I started my reading thinking ‘this drug is mostly harmless’ and still think that, but with an asterisk: people in the 60s used very high doses of things. There are some horror stories:</p>
<blockquote>
<p>Russell Monroe and Hyman Drell, stationed at a military prison in 1945, encountered large numbers of agitated, hallucinating patients. A survey revealed that one quarter of the imprisoned personnel were eating the contents of Benzedrine Inhalers, which then contained 250 mg of amphetamine base.<sup id="fnref:rasmussen" role="doc-noteref"><a href="#fn:rasmussen" class="footnote" rel="footnote">2</a></sup></p>
</blockquote>
<p>See <a href="https://books.google.com/books?id=jljlAAAAMAAJ&pg=PP55#v=onepage&q&f=false">Benzedrine Alert</a> in a late 40s Air Surgeon’s Bulletin for a lighter take.</p>
<p>In 1971 methamphetamine and amphetamine were <a href="https://isomerdesign.com/Cdsa/FR/36FR12734.pdf">moved up from schedule III to schedule II</a>.
This change is for amphetamine <em>and</em> meth, which makes me think they actually wanted to regulate meth, and just didn’t know the difference.
The federal register cites a ‘Report of the NYC Special Committee on Amphetamine Abuse’, which I couldn’t find, but I did read a 1970 <a href="https://www.nytimes.com/1970/08/09/archives/move-to-curb-the-widespread-use-of-pep-pills.html">NYT article on pep pills</a>.</p>
<p>ADHD wasn’t a concept yet:</p>
<blockquote>
<p>The drug is also recognized as an aid to children who are excessively active because of minor brain damage; for some reason not clearly understood, the stimulant seems to calm them.</p>
</blockquote>
<p>In 1970, the DSM had just changed to ‘hyperkinetic reaction of childhood’, from ‘minimal brain dysfunction’.
The ADD designation came later, in 1980, and ADHD (renamed in the late 80s) only took shape as a syndrome with known behavioral, neurological and genetic correlates in the 90s<sup id="fnref:bradley" role="doc-noteref"><a href="#fn:bradley" class="footnote" rel="footnote">3</a></sup>.</p>
<p>Also, the NYT’s bad take 8-ball turned up the worst argument about production and diversion:
‘hopefully reducing legal supply will reduce illegal demand’.</p>
<blockquote>
<p>The Justice Department has also found and closed down literally dozens of clandestine amphetamine production plants in this country that supplied directly to the illicit market. The F.D.A. can exercise little or no control over abuses of this sort, but it hopes the illicit traffic can be curtailed by diminishing the present excessive legitimate production.</p>
</blockquote>
<p>Regulation caused prescriptions to drop, and in 1972 the production quota for amphetamine was lowered 1/20 of estimated 1969 production.
But everyone switched to coke<sup id="fnref:rasmussen:1" role="doc-noteref"><a href="#fn:rasmussen" class="footnote" rel="footnote">2</a></sup>.
A <a href="https://www.rand.org/content/dam/rand/pubs/issue_papers/2007/IP300.pdf">very 90s RAND whitepaper</a> has survey data showing cocaine prevalence increasing through the 70s and decreasing after the mid 80s, with the peak around 10% in 1979 for 18-25 year olds.
(But cocaine ODs spiked in 85 and peaked in 89).</p>
<h2 id="is-it-harmful-today">Is it harmful today?</h2>
<p>Compared to the 60s:</p>
<ul>
<li>1-2% of adults have prescriptions, then and now</li>
<li>I think far more teenagers have prescriptions today</li>
<li>The use of diverted pills for test-taking, rather than recreation, may be more prevalent</li>
<li>Prescriptions today are more likely to be for ADHD, whereas in the 60s and earlier they were used as anti-depressants. Prozac only came on the market in the mid 80s.</li>
<li>XR formulations are new and manufacturers say they reduce high-dose recreational use</li>
</ul>
<p>I pulled the <a href="https://fis.fda.gov/extensions/FPD-QDE-FAERS/FPD-QDE-FAERS.html">adverse event reporting system</a> for Q4 2022, and found<sup id="fnref:ipython" role="doc-noteref"><a href="#fn:ipython" class="footnote" rel="footnote">4</a></sup>:</p>
<ul>
<li>103 deaths involving amphetamine</li>
<li>54 of those involved an opioid</li>
<li>21 had no opioids but did have methamphetamine or cocaine</li>
<li>and 28 others, of which 11 were amphetamine-only</li>
</ul>
<p>You’ll see headline numbers like <a href="https://nida.nih.gov/news-events/news-releases/2018/04/five-million-american-adults-misusing-prescription-stimulants">five million adults misusing stimulants</a>.
They aren’t.
This comes from the NSDUH, a national survey which <a href="https://www.samhsa.gov/data/sites/default/files/reports/rpt39442/2021NSDUHMethodSummDefs100422.pdf">defines misuse</a> as ‘any way a doctor did not direct you to use it’.
This isn’t measuring harm, it’s measuring whether you have a doctor.</p>
<p><a href="https://ajp.psychiatryonline.org/doi/full/10.1176/appi.ajp.2018.17091048">Compton et al</a> distinguished between ‘misuse’ and ‘use disorder’ and made the number way smaller.
They claim 16 million users, 5m misusers, and 400k with use disorder.
The motivations for misuse were 55% ‘be alert or concentrate’, 22% academic.</p>
<p>I pulled some random pubmed articles but they’re not compelling.
This one about <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3489818/">misuse and adverse effects</a>
complains a lot about use for academics without explaining why that’s harmful:</p>
<blockquote>
<p>prescription stimulants are most commonly misused to enhance school performance …</p>
</blockquote>
<blockquote>
<p>According to a Web survey of 115 ADHD-diagnosed college students, enhancing the ability to study outside of class was the primary motive for misuse …</p>
</blockquote>
<blockquote>
<p>A web-based survey administered to medical and health profession students found that the most common reason for nonprescription stimulant use was to focus and concentrate during studying</p>
</blockquote>
<p>I think the argument for why this is bad is kind of split-brained.
You end up saying:</p>
<ul>
<li>stimulants only improve performance if you have ADHD</li>
<li>‘students without ADHD misuse stimulants to improve performance’ (from same article)</li>
</ul>
<p>Prescribed amphetamine is probably not a gateway drug:</p>
<blockquote>
<p>people of any age receiving a stimulant for ADHD have no greater risk for illicit substance abuse compared with the general population</p>
</blockquote>
<p>‘Melt your brain’ claims about these meds are from long-term, high-dose meth users, and from rats.
The rats get ‘neurotoxicity’ (damage? loss of function?) in some dopaminergic reward circuit.
But about that:</p>
<blockquote>
<p>One study in rodents reported that 15 daily “binges” with 4 mg/kg amphetamine significantly compromised striatal dopamine integrity<sup id="fnref:binge" role="doc-noteref"><a href="#fn:binge" class="footnote" rel="footnote">5</a></sup></p>
</blockquote>
<p>If my math is right, that’s 60mg / kg / day, which would mean 4800mg for an 80kg average american adult.
(I think the average daily adult dose is in the 20-30mg range and the recommended daily maximum is 60mg).</p>
<p>To me this reads like ‘scientists are concerned about brain damage from bricks after they dropped one brick on a rat and it died’.</p>
<h2 id="telehealth-and-cerebral">Telehealth and Cerebral</h2>
<p>When the Ryan Haight Act was suspended during lockdown, a new breed of telehealth shops joined the fray who were able to prescribe stimulants without an in-person visit.
Cerebral is the most famous and troubled of them.</p>
<p><a href="https://www.trillianthealth.com/insights/the-compass/sharp-uptick-in-adderall-prescribing-for-adults-ages-22-44-amid-covid-19-pandemic">Health analytics SEO posts</a> are trying to blame telehealth for a 2-year, 20% increase in amphetamine scripts in adults 20-44 (figure 2 in the link).
I don’t totally buy this:</p>
<ul>
<li>The trend existed pre-2020</li>
<li>I think nobody knows how many of the new scripts are from telehealth platforms</li>
<li>Normal psychiatrists also moved online after lockdown, in theory increasing capacity</li>
</ul>
<p>Also note the even shadier vendors who will sell you adderall <a href="https://www.fda.gov/news-events/press-announcements/fda-and-dea-warn-online-pharmacies-illegally-selling-adderall-consumers">without a script at all</a>.</p>
<p>Either way, Cerebral is in various temperatures of hot water.
A patient’s family is blaming them for practices that led to a <a href="https://www.cbsnews.com/news/adderall-online-prescription-cerebral-mental-health-elijah-hanson/">suicide</a>.
(One Cerebral doctor denied him a script, and he made a second account and got one).</p>
<p>The DEA is trying to <a href="https://www.fiercehealthcare.com/telehealth/deas-proposed-telehealth-rules-tighten-covid-era-remote-prescribing-regulations">restore Ryan Haight</a>.
In theory this breaks Cerebral’s business model, but <a href="https://www.theverge.com/2022/5/17/23094214/cerebral-halts-prescriptions-adderall">they already stopped</a> prescribing controlled substances last May because of multiple federal investigations and <a href="https://www.theverge.com/2022/5/17/23094214/cerebral-halts-prescriptions-adderall">getting dropped by all the pharmacies</a>.</p>
<p>A Frances Haugen-inspired ex-PM whistleblower is suing them, either for unsafe prescribing practices, if you believe the <a href="https://www.fiercehealthcare.com/health-tech/former-cerebral-executive-files-lawsuit-alleging-unsafe-prescribing-practices">medical press</a>,
or for having his stock taken away, per <a href="https://news.bloomberglaw.com/health-law-and-business/ex-cerebral-vp-alleges-unethical-prescription-practices-in-suit">bloomberg law</a> and <a href="https://aboutblaw.com/2KI">the SF superior court</a>.</p>
<p>The point here is that if you’re going to build a telehealth platform, psychiatric or otherwise, diagnosis standards and patient monitoring should be the first thing on your list, not the last.</p>
<h2 id="distributors-and-red-flags">Distributors and red flags</h2>
<p>A less sexy, but much larger, legal story is the multi-state opioid settlement against the top 3 pharma distributors.</p>
<p>Reuters + most news <a href="https://www.reuters.com/legal/litigation/drug-distributors-agree-finalize-opioid-settlement-2022-02-25/">glosses over</a> the distributors’ violations as ‘lax controls’ because every resource that <em>does</em> explain it is
long-winded and confusing.
An <a href="https://www.fda.gov/inspections-compliance-enforcement-and-criminal-investigations/warning-letters/mckesson-corporation-headquarters-2719-565854-02072019">FDA warning letter</a> says
Rite Aids in Michigan got multiple shipments where ‘the seal was broken and 100 tablets of Oxycodone 30mg were missing. Fifteen tablets of generic Aleve manufactured by Amneal Pharmaceuticals were inside the bottle’.</p>
<p>How is this relevant to amphetamine regulation:</p>
<p>Suddenly the distributors are trying to comply, but the rules are byzantine.
In one example, they’re <a href="https://www.reuters.com/business/healthcare-pharmaceuticals/us-opioid-crackdown-hits-some-patients-access-psychiatric-drugs-2022-12-12/">stopping <em>all</em> controlled substance shipments</a> to indie pharmacies who match ‘red flag’ patterns in dispensing history.</p>
<p>Health and compliance lawyers are critical of the red flags system:</p>
<blockquote>
<p>A patchwork of agency enforcement orders. The unclear standards have made some pharmacies reluctant to fill prescriptions<sup id="fnref:law2" role="doc-noteref"><a href="#fn:law2" class="footnote" rel="footnote">6</a></sup></p>
</blockquote>
<blockquote>
<p>DEA is … [imposing] bright line standards related to “red flags” and the need for documentation, which are not currently defined in the statute or regulations.<sup id="fnref:law3" role="doc-noteref"><a href="#fn:law3" class="footnote" rel="footnote">7</a></sup></p>
</blockquote>
<blockquote>
<p>Enforcement actions based solely on red flags and not actual diversion.<sup id="fnref:law1" role="doc-noteref"><a href="#fn:law1" class="footnote" rel="footnote">8</a></sup></p>
</blockquote>
<p>I have no opinion other than this:
if Schedule II is being used to apply onerous compliance rules for opioids, it’s the wrong bucket for study pills.</p>
<h2 id="better-buckets">Better buckets</h2>
<p>At some point, our alphafold homelabs will make this discussion obsolete by brewing random amphetamine analogs from nail polish remover and wood alcohol.
Until then, it would be good to have better rules.</p>
<p>I’m not saying don’t regulate prescription amphetamine.
I 20% believe this stuff is safer than alcohol and tobacco.
I 80% believe you want to continue to monitor for bad reactions, limit individual supply to prevent diversion, and screen buyers for risk factors.</p>
<p>But the screen should be cheaper and easier to get than the current diagnostic process,
which begins with calling every psychiatrist in 5 zip codes, and if you’re lucky you repeat that process to find a pharmacy that will fill your prescription and takes your insurance.</p>
<p>Stop using quotas in ways that amplify supply shocks.</p>
<p>Lower the bar for 18+ to get a ‘finish 1 essay’ dose.
Legalizing this use case removes an incentive for diversion.
Stop classifying academics as an abuse case; it’s absurd and it makes all the scholarship and regulation sound phony.
Normalizing what is already normal lets you 1) monitor for safety and 2) refocus enforcement resources on actual harm.</p>
<p>Ideally, create stats observatories for every drug with harm potential, and impose supply constraints based on real-world observations, rather than a regulatory cycle.</p>
<p>My actual point:
amphetamine, used with medical supervision, isn’t fentanyl, cocaine, or meth.
Everyone’s life gets easier if we move it back down to Schedule III.</p>
<h2 id="appendix-overdose-charts">Appendix: overdose charts</h2>
<p>Two charts (from <a href="https://nida.nih.gov/research-topics/trends-statistics/overdose-death-rates">NIH / NIDA</a>).</p>
<p>If you see a chart like these and it doesn’t break out prescription stimulants, don’t let someone tell you the chart is saying anything about prescription stimulants.</p>
<p>You may hear about a growing pattern in OD deaths where the person took both stimulants + opioids.
This one blames stimulants for what is probably a fentanyl overdose.
Responsible reporting, for example <a href="https://nyulangone.org/news/overdose-deaths-caused-opioids-combination-stimulants-hit-black-communities-hardest">Townsend 2022</a>, will say ‘just give cocaine users test strips’.</p>
<style>
@media screen and (min-width: 700px) {
img.img-row {
max-width: 45%;
}
}
</style>
<div>
<img src="/assets/stim-nih-all-overdose.jpeg" alt="chart: annual overdoses by drug type, from NIH" class="img-row" />
<img alt="chart: stimulant overdose by opioid involvement, from NIH" src="/assets/stim-nih-stim-opioid.jpeg" class="img-row" />
</div>
<p><br /></p>
<h2 id="notes">Notes</h2>
<script async="" defer="" src="https://cdn.simpleanalytics.io/hello.js"></script>
<noscript><img src="https://api.simpleanalytics.io/hello.gif" alt="" /></noscript>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:quota" role="doc-endnote">
<p><a href="https://www.govinfo.gov/content/pkg/USCODE-2021-title21/pdf/USCODE-2021-title21-chap13-subchapI-partC-sec826.pdf">21 USC 826(e) and (h)</a> allow for quota increases, but I think only if an individual manufacturer declares a shortage of an input. Not, for example, if Teva has staffing issues and a rival wants to shark their quota.</p>
<p>Also Teva won’t declare a shortage; they have excess supply of the branded version.</p>
<p>Also the justice dept has to agree there is a shortage, and for now they <a href="https://www.federalregister.gov/documents/2022/12/02/2022-26351/established-aggregate-production-quotas-for-schedule-i-and-ii-controlled-substances-and-assessment">do not</a>. <a href="#fnref:quota" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:rasmussen" role="doc-endnote">
<p><a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2377281/">America’s First Amphetamine Epidemic 1929–1971</a>, Rasmussen 2008 <a href="#fnref:rasmussen" class="reversefootnote" role="doc-backlink">↩</a> <a href="#fnref:rasmussen:1" class="reversefootnote" role="doc-backlink">↩<sup>2</sup></a></p>
</li>
<li id="fn:bradley" role="doc-endnote">
<p>Though <a href="https://ajp.psychiatryonline.org/doi/abs/10.1176/ajp.94.3.577">Charles Bradley</a> was giving benzedrine to ‘behavior problem children’ in the 30s. He published in the ‘American Journal of Insanity’ (since renamed). <a href="#fnref:bradley" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:ipython" role="doc-endnote">
<p>The python notebook for this is <a href="https://github.com/abe-winter/abe-winter.github.io/blob/master/assets/faers.ipynb">checked in here</a> <a href="#fnref:ipython" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:binge" role="doc-endnote">
<p><a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2670101/">Potential Adverse Effects of Amphetamine Treatment on Brain and Behavior: A Review</a> Berman et al 2009 <a href="#fnref:binge" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:law2" role="doc-endnote">
<p><a href="https://regulatorystudies.columbian.gwu.edu/policymaking-through-adjudication-dea-red-flags">GWU regulatory studies blog</a>: <a href="#fnref:law2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:law3" role="doc-endnote">
<p><a href="https://www.thefdalawblog.com/2022/02/identifying-and-resolving-red-flags-dea-continues-to-run-it-up-the-flagpole/">FDA law blog</a> (this one also lists a bunch of red flag examples) <a href="#fnref:law3" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:law1" role="doc-endnote">
<p><a href="https://www.deachronicles.com/2023/02/a-distributors-conundrum-when-dea-and-state-law-collide/">DEA chronicles</a> <a href="#fnref:law1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>Abe WinterOne of these kills 70 thousand people per year in the US; the other about eleven per quarter. But they’re both Schedule II controlled substances.How to buy 1 facebook ad in 5 months or less2023-03-01T00:00:00+00:002023-03-01T00:00:00+00:00https://abe-winter.github.io/platform/2023/03/01/meta-vs<p>Last summer I made a facebook account, because they are the best deal in CAC and also because my marketing skillset is 7 years out of date. I clicked a prompt saying to make an ad, clicked a button to auto-create a creative, got billed $2, and got blocked.</p>
<p>Actually I’m not sure if I was blocked. My account status changed over time (my ad account was disabled, or my page was in trouble, or my payment account was broken). I couldn’t buy ads.</p>
<p>Eventually I graduated from chatbot support and was told to expect a <em>call</em> in fifteen minutes.
This seemed weird (all I want is to buy something from you), but as a good consumer of institutional products, I reminded myself to BREATHE, and killed some time reading their ads rules.</p>
<p>Where I found this:</p>
<p><img src="/assets/fb-breathe.png" alt="fb policy page saying a 'breathe' ad is suspicious" /></p>
<p>This ad doesn’t violate our policies -> breathing is superfluous in business -> everything not compulsory is forbidden -> BLOCKED.
Thus enlightened, I still needed a compliant mantra. I picked this line from the facebook south park episode:</p>
<video controls="" style="max-width: min(100%, 30em); margin: 1em 0 1em 0">
<source src="/assets/fb-shtoyl3.mp4" type="video/mp4" />
</video>
<p>I was seriously going to say it if negotiations broke down.
Luckily they never called that night.
(They did email to say their phones broke<sup id="fnref:broke" role="doc-noteref"><a href="#fn:broke" class="footnote" rel="footnote">1</a></sup>).
Ha ha ha ha.</p>
<p>This post is a compendium of bad thoughts on transparency, rules, risk, and the internet’s middle class from the long, dark winter (autumn) of my account being down.</p>
<ol id="markdown-toc">
<li><a href="#risky-business" id="markdown-toc-risky-business">Risky business</a></li>
<li><a href="#double-secret-probation" id="markdown-toc-double-secret-probation">Double secret probation</a></li>
<li><a href="#self-serve-is-a-mullet" id="markdown-toc-self-serve-is-a-mullet">Self-serve is a mullet</a></li>
<li><a href="#resolution" id="markdown-toc-resolution">Resolution</a></li>
<li><a href="#life-in-the-long-tail" id="markdown-toc-life-in-the-long-tail">Life in the long tail</a></li>
<li><a href="#notes" id="markdown-toc-notes">Notes</a></li>
</ol>
<h2 id="risky-business">Risky business</h2>
<p>If your main news source is the juicy-douchey axis of industry forums, you’ve seen your share of posts in the genre of ‘account locked, no explanation, no support, prayer for relief’.</p>
<p>When these hit the front page and sides are taken, one of the sides is ‘are <em>you</em> the criminal’<sup id="fnref:hn-nuke" role="doc-noteref"><a href="#fn:hn-nuke" class="footnote" rel="footnote">2</a></sup>.</p>
<p><img src="/assets/fb-nuke-what-biz.png" alt="comment: I notice you're careful not to describe what type of business you operate" /></p>
<p>More nuanced take: this is about risk.
All platforms have risk from their users, but the screenshotted thread is about stripe;
payment processors have a <em>lot</em> of risk and it is highly quantifiable.</p>
<p>The innovation of productized payment processors like paypal / stripe, compared to process-heavy alternatives, is to onboard anything that moves, and then decide afterwards if their fingers were crossed<sup id="fnref:underwriting" role="doc-noteref"><a href="#fn:underwriting" class="footnote" rel="footnote">3</a></sup>.
Useful comment from the same thread:</p>
<p><img src="/assets/fb-nuke-high-risk.png" alt="comment: real payment processors underwrite companies before onboarding, new processors underwrite at revenue threshold" /></p>
<p>I’m guessing that when an investigation flags something, you’re in a catch-22 of platform liability:
ignoring you and keeping your money is less risky than transferring any money to you, or even admitting that they can’t.
(I’m guessing).</p>
<p>In fairness the payment processors are at the mercy of bigger fish, like regulators and real banks, who enforce manichean ban rules on aggregate traffic.
But as with all risk relationships, ambiguity is resolved at the sharp end<sup id="fnref:sharp" role="doc-noteref"><a href="#fn:sharp" class="footnote" rel="footnote">4</a></sup>.
The processors push risk down to their customers.</p>
<p>Another notable ban from 2022 is a dad who gmailed photos to a doctor<sup id="fnref:csam" role="doc-noteref"><a href="#fn:csam" class="footnote" rel="footnote">5</a></sup>.
Google told the cops, the dad went public.
If you believe the ‘are <em>you</em> the criminal’ theory of public appeals, this is dark.</p>
<p>If, on the other hand, you believe my ‘equal parts real, malicious, random, and incompetent’ razor for all unaccountable systems, there is a 50% chance google trusted a semi-working image kernel to accuse someone of a crime.
There’s a 25% chance they lied to frame him.</p>
<p>Don’t give platforms the benefit of the doubt when they won’t comment.</p>
<p>In the stripe ban, they took the person’s money.
Maybe the poster is lying or deserved it.
Maybe I <em>was</em> the lizard man who stole your precious serum.
But it would be so easy for stripe to join the chat.
My guess is platforms stay quiet because of Mark Twain logic – the reputational harm from the accusations is not as bad as the truth.</p>
<h2 id="double-secret-probation">Double secret probation</h2>
<p>I never got a straight answer about my facebook block.
Their internal messaging never converged on what the problem was.
No idea if these screenshots were simultaneous (I rescued them from my twitter), but they seem to be saying:</p>
<ol>
<li>The ad violates policies (all of them, apparently). But they instruct me to try again.</li>
<li>In fact it’s not a policy issue, the <em>page</em> is disabled. (A page, if you’re not fluent in the lingo, is a type of account).</li>
<li>In fact the page is disabled because the ad was disabled.</li>
<li>And also the page is fine. Ha ha ha ha.</li>
</ol>
<style>
figure.quad-fig {
max-width: 45%;
display: inline-block;
}
</style>
<figure class="quad-fig">
<img src="/assets/fb-block-1.png" />
<figcaption>
1) ad violates policies
</figcaption>
</figure>
<figure class="quad-fig">
<img src="/assets/fb-block-2.png" />
<figcaption>
2) ad disabled because page
</figcaption>
</figure>
<figure class="quad-fig">
<img src="/assets/fb-block-3.png" />
<figcaption>
3) page disabled because ad
</figcaption>
</figure>
<figure class="quad-fig">
<img src="/assets/fb-block-4.png" />
<figcaption>
4) page is fine though
</figcaption>
</figure>
<p><br />
Right after I wrote this section, my writing playlist cued up this <a href="https://www.youtube.com/watch?v=nPXqkjpXZ_k">All Saints</a> lyric:</p>
<blockquote>
<p>Not only will your answers keep me sane,<br />
but I’ll know never to make the same mistake again</p>
</blockquote>
<p>No comment on whether fb’s answers kept me sane, but the folder where I keep those screenshots has 183 screenshots.</p>
<p>I don’t blame them for having a bug.
I do blame them for hiding problems so well their support staff can’t tell which system is broken.
When I finally (much later) got someone on the phone, I asked ‘what exactly caused my account to get flagged’.
He said ‘this information could be used by bad actors, so we don’t share the exact policy violations’.</p>
<p>Curious, I asked him if <em>anyone</em> at facebook knew what the problem was.
He said there might be someone who could find out, but probably not.</p>
<p>Which is fine.
And maybe I’m just an edge case.
But a system can be made entirely out of edge cases, like a <a href="https://abc7ny.com/chicago-zipper-suit-fashion/6024805/">suit made entirely from zippers</a>.
If every account is broken in a different way, support and appeal channels become the primary user interface, and need to be empowered.
Extrapolating from my experience, facebook is not empowering support.</p>
<p>Which is also fine.
But (if) the complex setups are mainly business users, you’d think they’d <em>want</em> to add support, because support = onboarding = sales.</p>
<p>This is just facebook, so who cares.
But god forbid tools this bad are ever used for anything important.</p>
<h2 id="self-serve-is-a-mullet">Self-serve is a mullet</h2>
<p>I like buzzfeed’s mullet model<sup id="fnref:mullet" role="doc-noteref"><a href="#fn:mullet" class="footnote" rel="footnote">6</a></sup> as a way of understanding things that contain opposites.
Facebook support is a mullet.
It can only be compared to non-broken systems if you accept that 90% of it can be in a constant state of crisis, but it can still have business in the front.</p>
<p>All of self-serve ads is a mullet.
Remember when twitter laid off a bunch of account managers and, in the process, accidentally laid off their advertisers?
I saw a comment like ‘advertisers can just use the dashboard’ and a reply like ‘the dashboard has never fully worked’.</p>
<p>I kind of believe this.
The google ads dash is written in transpiled dart that has crashed every laptop / browser combination I’ve tried, and the onboarding wizard is the buggiest part.
It’s hard to break onboarding if you have any product metrics at all.
A recent change sunsets the ability to <em>specify non-random text in ad titles</em> (!!), but every search ad I’ve ever seen has obviously non-random title text – they’re all emailing their account rep, every last one of them.</p>
<p>The self-serve dash is the party side of the mullet.</p>
<p>I said above facebook under-invests in appeals.
This is only mostly true.
Their xcheck<sup id="fnref:xcheck" role="doc-noteref"><a href="#fn:xcheck" class="footnote" rel="footnote">7</a></sup> layer protects journalists, ‘business partners’, and other VIPs, because ‘in the current business landscape’ (says the FOB writeup), alienating their actual source of revenue + content could be a mistake.</p>
<p>And that’s fine.
The coke bear and the budweiser clydesdale get a red phone to superbowl producers; the audience doesn’t need one.
I’m not knocking fb for being a responsible steward for their customers and athletes;
I’m knocking them for pretending the non-VIP systems are in any way functional.</p>
<p>People below the xcheck threshold, or the ‘account manager assigns you personhood’ threshold on any platform, are seeking help on forums because contrary to apple’s misguided and funny attempt to <a href="https://twitter.com/benthompson/status/1275072296001007617">impose omerta</a> on their customers, if you run to the press and trash us, it <em>gets results</em>.
I get platforms don’t want mob rule, but they aren’t offering anything better.</p>
<p><img src="/assets/fb-another-day.png" alt="carnage4lyfe tweet: we're a multibillion dollar company but can't deliver critical capabilities for our business is just another day at the app store" /></p>
<p>(twitter / <a href="https://twitter.com/Carnage4Life/status/1598385346911571969">carnage4life</a>)</p>
<p>Top apps can work around this unless apple is in a mood.
But for the internet’s middle class, there’s nobody on the other end of the fax machine.
If there’s an AI in charge of block + fraud ops, the AI is Loab, the incarnation of the internet’s suppressed id.
Self-serve is haunted.</p>
<p>And we know nothing of exorcism.</p>
<h2 id="resolution">Resolution</h2>
<p>For a while you could buy a quest to get enhanced support on your facebook account, and then return it.
They added a <a href="https://news.ycombinator.com/item?id=34282623">third account type</a> so who knows if this still works.
For now, at least, you can still <a href="https://twitter.com/adam22/status/1527005564802600960">seduce metamates</a> to reinstate your insta<sup id="fnref:cleggslist" role="doc-noteref"><a href="#fn:cleggslist" class="footnote" rel="footnote">8</a></sup>.</p>
<p>In conclusion, I’m running for president too, please let me buy one ad on your site … is how I was going to end this.
But that joke is in increasingly bad taste, and also something amazing happened.</p>
<p>First, in december, I resubmitted my ticket for the Nth time, and a human being <em>called me</em> on the <em>phone</em>.
We talked for 40 minutes.
He couldn’t share the exact policy violation because it could be used by ‘bad actors’ and also because nobody, he clarified when I followed up, nobody at facebook knew what it was.</p>
<p>But he also gave me a bunch of useful advice.
His job is to have these calls without full information, and he had become skilled at reading the system’s weather and subtle moods.</p>
<p>He said the lack of organic content on my page is a concern, and also my account didn’t have a photo.
FWIW I had been through their photo ID + notarized address verification process to do social issues advertising, not because I want to do social issues advertising but because it was the only non-broken ID verification flow.
(I use ‘non-broken’ here in the loosest sense).</p>
<p>The agent said I should start by making organic content and then boosting it.
This means the steps are:</p>
<ol>
<li>create content for free that is of good quality</li>
<li>pay facebook to show the content that I made <em>for them</em></li>
<li>do this enough, and I’ll be allowed to pay them to show the content I make for <em>me</em></li>
</ol>
<p>I always hear ‘organic’ in this voice:</p>
<video controls="" style="max-width: min(100%, 30em); margin: 1em 0 1em 0">
<source src="/assets/fb-organic.mp4" type="video/mp4" />
</video>
<p>One thing all the agents said was ‘hire an agency to post your ads’.
They have seen too much to pretend the self-serve system is fully baked.</p>
<p>fb’s design makes it hard to identify business customers: buying anything from them requires a <em>personal</em> account first, but now I have a page, biz manager, insta, + a workplace account I made to prove to them that my credit card was valid.
Can you not just start me off with biz manager?
I would pre-pay for ads to cover the cost of business entity verification.</p>
<p>I don’t think moderation or reputation gating is evil.
Twitter used to require a certain amount of organic engagement before they let you buy an ad.
But twitter <em>said so</em>.
If facebook is doing the same thing, they should say so.</p>
<p>As I boost my content to earn the right to advertise, and look at the engagement stats, I’ll see stuff like ‘7k impressions! 5k reach! 700 engagement! 350 sponsored engagement!’.
This is for a post with 9 emoji reactions, by people who are outside my target geography.
What are the other 693 engagements?
I wonder if they’re misclicks.</p>
<p>Simultaneously, I’m seeing this okay and good content that is fine and performing great:</p>
<p><img src="/assets/fb-sharing-caring.png" alt="christmas time in heaven must be so beautiful" style="max-height: 20em" /></p>
<p>The phone call wasn’t the amazing thing that happened.
The next day, my guy <em>called back</em> to tell me there was a payments bug affecting my account, it’s been fixed, and I’m good now.
That is more or less the end of my story.</p>
<p>But the second call wasn’t the amazing thing either.
What happened was that I came as close as I have ever come to getting phished.</p>
<h2 id="life-in-the-long-tail">Life in the long tail</h2>
<p>(This is the post-credits scene. <a href="https://tinyletter.com/abe-winter">Subscribe</a> you animal, it’s free and it makes me write more).</p>
<p>I got an email from Faaaaacebok@hotmail.com (or something) about copyright infringement.
It contained a non-hyperlinked link of a random facebook post for an ‘IP Enforcement’ page, which in turn linked to meta oversight dispute dot com (or something), which was a copy of their help page but none of the links worked.</p>
<p>As I clicked through I was thinking to myself ‘wow, this is bad’, but continuing because it wasn’t worse than their normal flows.
The normal ‘facebook needs you’ formula is:</p>
<ul>
<li>completely new communication channel (email, sms, push, in-app notification in different account)</li>
<li>‘something is wrong’ but the ‘something’ is a random link to their terms</li>
<li>forwards to new dashboard that I’ve never seen, often with a ticket that has already been closed</li>
<li>the button I’m supposed to press is broken, then I have to log in to a new support desk or chat client which somehow logs me out of my normal account</li>
<li>the agent has no context and asks me for all my account #s and a screenshot or two</li>
</ul>
<p>It’s like the <a href="https://blog.metaobject.com/2023/01/setting-bozo-bit-on-apple.html">apple bozo bit</a> blogpost.
‘With this, I noticed that I hadn’t actually expected better’.
It was like vishnu appearing to oppenheimer except ‘now I am become spam’.
Facebook has glutted itself on spam and hard mast for so long their admin dashboard is spam now too.</p>
<p>I reported the phish post to facebook and they eventually came back like ‘LGTM’.
And so I’m sitting here on the group W bench.
<em>I’ve</em> been blocked, but apparently it’s okay to impersonate facebook’s entire support site to harvest credit cards, or IDs, or trick people into installing something.
They sold someone an <a href="https://gizmodo.com/facebook-kenya-pro-genocide-ads-hate-speech-suspension-1849348778">ad for genocide</a>, hopefully not with conversion tracking.</p>
<p>The main advice I got from marketing friends who heard excerpts of all this is ‘yeah that happens a lot’, pause, remember what year it is, ‘why are you on facebook’.</p>
<p>Eventually I tried a boosted post on instagram and had the same experience – it ran for like a second and then got taken down.
I don’t know why.
My browser can’t log in to fb and insta at the same time, and the admin dashes have gotten even more complicated since adding the insta account, and do I even want to know?
I finally read the cold start problem and convinced myself I shouldn’t be on paid social yet.</p>
<p>I thought my point was ‘I’m in the internet’s middle class, I pay my taxes, and I deserve better’.
But am I?
I thought I was bathypelagic, but maybe I’m in the abyssal zone where no sunlight reaches.</p>
<p>For a while my point was that Mr Lumberg told me to talk to payroll, and then payroll told me to talk to Mr Lumberg, and I still haven’t received my paycheck, and he took my stapler, and never brought it back.</p>
<p>After a while the point was ‘moderation isn’t free and the internet’s middle class needs to pay its taxes’.
But that’s wrong too.
I don’t think facebook <em>wants</em> to treat me this bad.
They’re piloting a <a href="https://www.washingtonpost.com/technology/2023/02/23/facebook-instagram-fee/">$12/mo fee for support</a> for australians who get carsick in the quest.</p>
<p>The way I feel now is this:</p>
<p>The stigmergic excreta masquerading as the rules, settings and instructions of these platforms have no relationship to how they actualy function.
Rather than treating any textual cue on their website as guidance, I should have remembered this graffiti’d footnote to the turnoff for a Columbia BC logging trail:</p>
<blockquote>
<p>google maps sent you here to die.
In other words, get advice from experts, and when something goes wrong, get somebody on the phone.</p>
</blockquote>
<p>And BREATHE – even when the rules say not to.</p>
<h2 id="notes">Notes</h2>
<script async="" defer="" src="https://cdn.simpleanalytics.io/hello.js"></script>
<noscript><img src="https://api.simpleanalytics.io/hello.gif" alt="" /></noscript>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:broke" role="doc-endnote">
<p>dear slim I wrote you but you still aint calling (email of july 27th)</p>
<p><img src="/assets/fb-jul27-email.png" alt="screenshot of email with circled text: 'I think my phon e system is having issues'" /></p>
<p>note the list of ‘reasons our system disables an account / page from advertising or some of the advertising restrictions’ – the agent has <em>no idea</em> what’s wrong. it’s not their fault, it’s a mystery. <a href="#fnref:broke" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:hn-nuke" role="doc-endnote">
<p>both screenshots here are from <a href="https://news.ycombinator.com/item?id=32854528">Stripe has decided to nuke my entire business</a> 9/15/2022 on HN <a href="#fnref:hn-nuke" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:underwriting" role="doc-endnote">
<p>I don’t work in payment processing and don’t have deep context for these claims, but some sources: nerdwallet <a href="https://www.fundera.com/blog/stripe-vs-paypal">SEO article</a> on payment processors saying:</p>
<blockquote>
<p>they don’t require underwriting to sign up. So to manage liability, they reserve the right to freeze or terminate your account</p>
</blockquote>
<p>See also paypal <a href="https://www.paypal.com/hk/webapps/mpp/business-risk-management">business risk management</a> doc, braintree <a href="https://developer.paypal.com/braintree/articles/risk-and-security/underwriting/periodic-reviews">periodic reviews</a>, simple seller protection’s <a href="https://intercom.help/simple-seller-protection/en/articles/4136417-what-s-a-paypal-review-and-what-to-do-if-your-account-goes-under-review">what to do for paypal reviews</a> wiki. <a href="#fnref:underwriting" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:sharp" role="doc-endnote">
<p><a href="https://how.complexsystems.fail/#11">how complex systems fail</a>:</p>
<blockquote>
<p>Organizations are ambiguous, often intentionally, about the relationship between production targets, efficient use of resources, economy and costs of operations, and acceptable risks of low and high consequence accidents. All ambiguity is resolved by actions of practitioners at the sharp end of the system.</p>
</blockquote>
<p><a href="#fnref:sharp" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:csam" role="doc-endnote">
<p>guardian with <a href="https://www.theguardian.com/technology/2022/aug/22/google-csam-account-blocked">original story</a> in august 2022. IMO guy’s actual mistake was using google fi. <em>Obviously</em> you don’t want your cell phone tied to an account that can get revoked for no reason. OAuth is a huge mistake for consumers.</p>
<p>nyt <a href="https://www.nytimes.com/2022/12/30/technology/google-appeals-change.html">followed up</a> on google CSAM policies in december. Google said they’d “provide more detailed reasons for account suspensions” (i.e. <em>any</em> reason), and “allow users to submit even more context” in their appeal, i.e. <em>any</em> context. <a href="#fnref:csam" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:mullet" role="doc-endnote">
<p>Jonah Perretti (of BuzzFeed + HuffPo), mullet / viralness slideshow, via <a href="https://boingboing.net/2010/08/13/how-to-engineer-a-vi.html">boing boing</a>. Note slide 4 which says you can rule the internet by <a href="https://tinyletter.com/abe-winter">subscribing</a> to my blog.</p>
<p><img src="/assets/fb-mullet.webp" alt="4 slides from jonah perretti's viralness slideshow" /> <a href="#fnref:mullet" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:xcheck" role="doc-endnote">
<p><a href="https://www.theguardian.com/technology/2022/dec/06/meta-protecting-business-partners">guardian article</a>, <a href="https://www.oversightboard.com/news/501654971916288-oversight-board-publishes-policy-advisory-opinion-on-meta-s-cross-check-program/">oversight board xcheck writeup</a>. The oversight board is simultaneously impressive and a distraction. It has the former Blackmun clerk who wrote the dissent in Bowers v Hardwick, which is neat, but doesn’t impact the scaled operations of a global company.</p>
<p>There’s a clause in europe’s proposed DSA which requires alternative dispute resolution for every platform dispute. I think it misses the point. Giving everyone an appeal is maybe secondary to ensuring that platform action is transparent. Transparency lets outsiders detect when something big is wrong. Arbitration is expensive or bad, pick any 2. Transparency enables class-action style intervention, which enables cases to pay more attention, design real fixes, and follow up. <a href="#fnref:xcheck" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:cleggslist" role="doc-endnote">
<p>if you have the means, another way is to <a href="https://gizmodo.com/clegg-meta-executives-identified-in-onlyfans-bribery-su-1849649270">bribe nick clegg</a> to report your competition to the GIFCT. <a href="https://twitter.com/dellcam/status/1580283440401764352">Amazing exchange</a> with bill alsup channeling alanis:</p>
<p><img src="/assets/fb-alsup-deny.png" alt="you ought to know if you've been bribing people all over the world" /> <a href="#fnref:cleggslist" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>Abe WinterLast summer I made a facebook account, because they are the best deal in CAC and also because my marketing skillset is 7 years out of date. I clicked a prompt saying to make an ad, clicked a button to auto-create a creative, got billed $2, and got blocked.Tinker twitter saturn spez2022-11-08T00:00:00+00:002022-11-08T00:00:00+00:00https://abe-winter.github.io/diy/2022/11/08/qwitter<p>Important vocab first:</p>
<blockquote>
<p><strong>tumblr</strong>, verb: to misunderstand a network so badly that you fire your core customers on day 1. Not your <em>best</em> customers, but the ones who are connected in such a way that your ecosystem evaporates when they are removed. Also when wordpress buys your unicorn for one penny on the dollar</p>
</blockquote>
<p>I am a lapsed social media luddite.
After abstaining through the 10s, I joined twitter for real in march 2020, neck deep in nyc covid, because I sensed it had information not available in the news.</p>
<p>This is technically true if you define ‘information’ as muttered 10-word prophecies exhumed from 2014, or meme formats with 36 hour half lives.
It is less true if you’re talking about things that will still be right in 8 hours.</p>
<p>Rocky beginning.
But it’s a language that I learned to read, albeit in middle age, and while I was never fluent, I’m conversational.
I know and like some of its classics.</p>
<p>This is an epitaph for the civilization that produced those classics.
I’m not the person to write this; I have only been a leaf on a large tree.
But twitter is a part of my external brain and it will feel like a phantom limb when it is gone.</p>
<p>This is about what I will lose as an organ to which I have outsourced some of my neurology goes dark.</p>
<ul id="markdown-toc">
<li><a href="#gold-teeth-and" id="markdown-toc-gold-teeth-and">Gold teeth and</a></li>
<li><a href="#what-happens-when-an-elephant-dies" id="markdown-toc-what-happens-when-an-elephant-dies">What happens when an elephant dies</a></li>
<li><a href="#tinker-as-in-des-moines" id="markdown-toc-tinker-as-in-des-moines">Tinker as in des moines</a></li>
<li><a href="#too-many-notes" id="markdown-toc-too-many-notes">Too many notes</a></li>
<li><a href="#millicronkite-exposure" id="markdown-toc-millicronkite-exposure">Millicronkite exposure</a></li>
<li><a href="#appendix-other-takes" id="markdown-toc-appendix-other-takes">Appendix: other takes</a></li>
</ul>
<h2 id="gold-teeth-and">Gold teeth and</h2>
<p><img src="https://abe-winter.github.io/assets/bonk.png" alt="screenshot of tweet about saying 'bonk' in a work mtg" /></p>
<p>Twitter was not the biggest social network but it was the biggest social network of text<sup id="fnref:for-text" role="doc-noteref"><a href="#fn:for-text" class="footnote" rel="footnote">1</a></sup>.
Maybe that makes it the <em>smartest</em> network.
As with all parasitic interactions, a lot depends on whether you have latched on to the neck or the armpit.</p>
<p>It is also inscrutable unless you dip constantly into the stream.
A river of anti-lethe, a drug that stops being addictive if you forget to use it for a day.
A tower of babel built 40 words at a time.
A ladder to heaven made of haiku-length snark shot out of a cannon.
If the cannon stops (or if you are busy and can’t keep up), the tower falls.</p>
<p>It provides dense shared context; it’s the densest of the surviving large platforms in terms of how many different authors you can read at once.
It’s the most curation-friendly.</p>
<p>Comedy, if you’re lacking context, is very hard to translate, in a way that literal text is not.
Mastodon (at least the version I’ve had access to) feels sedate and careful compared to twitter.
Jokes on mastodon have to be <em>decoded</em> by scholars like <a href="https://en.wikipedia.org/wiki/Ninurta-P%C4%81qid%C4%81t%27s_Dog_Bite">the doctor in nippur</a>.
There are too few eyes.</p>
<p>The most online of us are filter feeders, like oysters.
They clean the water, convert garbage to a luxury food, and possibly mitigate storm surges I think.<sup id="fnref:surge" role="doc-noteref"><a href="#fn:surge" class="footnote" rel="footnote">2</a></sup>
Once in a while we crack one open and find its injury has been converted to a pearl.</p>
<p>Learning to read twitter made me think of New Slang, the Shins song.</p>
<p>I always thought the song was about being kicked out of vegas, but the guy says it’s about trying to return home and discovering that you can’t – about ‘saturn return’<sup id="fnref:saturn" role="doc-noteref"><a href="#fn:saturn" class="footnote" rel="footnote">3</a></sup>, an astrology concept where in your late 20s you go back so that you can move on.
I’m not sure how old twitter is in actual years but in zodiacal platform dog years, what, about 29?</p>
<p>Dense shared context supports rapidly evolving language and allusions, but the other side of that coin is ‘context collapse’, the friction when a rock is overturned and private languages are misinterpreted in harsh sunlight.
You could read a danah boyd article about this OR you could just watch comic patti harrison’s <a href="https://youtu.be/HZIvpTrNNmo?t=288">30 second apology</a> for being kicked for abusing her blue check by impersonating nilla wafers.</p>
<p>(More later on fun with blue checks).</p>
<p>It is also a prayer wheel for making brands, and other incumbent powers, look unhip<sup id="fnref:what" role="doc-noteref"><a href="#fn:what" class="footnote" rel="footnote">4</a></sup>.</p>
<p>What I’m saying is it’s a giant circulatory system for memes (memes as in motile ideas, not as in photos with text caption).
What happens when a giant circulatory system stops?</p>
<h2 id="what-happens-when-an-elephant-dies">What happens when an elephant dies</h2>
<p>If you’ve watched the nature channel after curfew, or fullmetal alchemist, or the 2nd season of the WB teen drama Lavoisier, you know that when a large animal dies, its matter and energy are conserved.</p>
<p>This is of little help to the elephant, who is not the beneficiary of a conservation law. Elephants <em>can</em> be created and destroyed, or at least converted into several billion ants plus 0.58 hyenas.</p>
<p>Something I learned on twitter which I think is approximately true is that all coal comes from trees who died before fungus figured out how to break down lignin.
If twitter gets shut down and reduced to the training set for GPT-5, this may be some kind of metaphor.</p>
<p>Networks of course have no moral valence, but many of the things I like are delivered via a network.
I’m not just talking about podcasts and git repos, but also:
safe water, various kinds of climate control, foods fresh + stale, cardboard boxes and what’s inside may surprise you.</p>
<p>Networks also deliver bad things, like 9/11, and so we sometimes try to disrupt them.
They can re-form, for the same reasons and under similar conditions as they formed in the first place, but are legit weakened for a while like when one cuts an undersea fiber and one’s internet slows down.</p>
<p>Degrading communication links is in fact a great lightweight way to disrupt networks.
In other words, let’s chill some speech.</p>
<h2 id="tinker-as-in-des-moines">Tinker as in des moines</h2>
<p><img src="https://abe-winter.github.io/assets/fuck-cheer.png" alt="image of tweet talking about mahanoy v BL" /></p>
<p>Tinker is a free speech case that prevented a school from punishing siblings who wore black armbands to protest vietnam.</p>
<p>It applied originally to on-campus expression.
More recently, school districts are trying to apply it to a wider range of places, such as the internet.
The interesting recent case is Mahanoy v BL, where a high schooler sent a snap captioned ‘fuck school fuck softball fuck cheer fuck everything’ and got suspended.
How did she get suspended, you ask, if snaps auto delete?
Some rat brought in a screenshot.</p>
<p>The rule she was suspended for:</p>
<blockquote>
<p>There will be no toleration of any negative information regarding cheerleading, cheerleaders, or coaches placed on the internet<sup id="fnref:toleration" role="doc-noteref"><a href="#fn:toleration" class="footnote" rel="footnote">5</a></sup></p>
</blockquote>
<p>Not incorporated by reference into twitter’s rules <em>yet</em>, but the tone is spot on.</p>
<p>Speaking of scotus, some frisky ex-clerk triggered new management into promising a <a href="https://twitter.com/elonmusk/status/1588676939463946241">nuclear name and shame</a> for advertisers who didn’t renew their ad buys this year.
The incentives here are clear I guess, and the methods, while gross, are not exactly novel, and the strategy is probably dumb but also not surprising.</p>
<p>Still, ‘punishing a boycott’ is a fascinatingly bad way to frame your reaction.
It is taking the Henry Ford badness of opening fire on strikers, and projecting it on your <em>customers</em>.</p>
<p>The last few years have been such a combination of new weirdness + cyclic history that I often wonder what my grandparents would say.
I suspect some combination of liking the authority, hating the tone, and reminding me that ‘in my day the customer was always right’.</p>
<p>Have seen some takes like ‘he’s shutting off blue checks the day of a national election, this is a fascist plot’.
(<a href="https://twitter.com/NikkiMcR/status/1588384805045301248">example</a> but there are many. Note also that the company moved this date forward because of criticism and also probably because the new system isn’t working yet).
Or like ‘EM seems to want to be a right-wing darling, has murderbot autocrats on speed dial, and has substantial business interests in china, and this move is related to those things’.</p>
<p>A premise of platform moderation is that catchy lies radicalize low-information voters towards reactionary violence, using poison for weight loss, and paying into pyramid schemes.
By contrast EM’s take on moderation has been to devote eng resources to blocking his <a href="https://twitter.com/kenklippenstein/status/1589393052707479552">parodies</a> and to <a href="https://twitter.com/oneunderscore__/status/1589460948611661824">lash out at journalists</a>.</p>
<p>‘He bought it to kill it and also expects to turn a profit’ sounds unbearably dumb, but you could view the private equity playbook that way:
study how to farm the customers, buy the business, then sell before the customers learn to build their own.
But the things PE firms buy are 1) not quite so network-based and 2) they don’t ruin them so thoroughly so fast.</p>
<p>The FT got <a href="https://www.ft.com/content/b7d51d60-00d8-11e3-a90a-00144feab7de">this quote</a> when bezos bought the post in 2013:</p>
<blockquote>
<p>Asked why a crop of wealthy individuals would buy newspapers, Alan Mutter, an industry analyst, says: “I assume they have large fortunes they are trying to make smaller.”</p>
</blockquote>
<p>Stupid explains a lot, but hanlon’s razor cuts both ways and it is sometimes hard to tell.
It’s troubling that there are people who, either forgetting history or remembering it too well, want to erode this:</p>
<p><img src="https://abe-winter.github.io/assets/tinker-armbands.jpg" alt="photo of mary beth + john tinker holding black armbands with peace signs" /></p>
<h2 id="too-many-notes">Too many notes</h2>
<p>I came for the information, but my friends who read a newspaper twice a week are better informed about many topics.
I know things 6 to 12 hours early, but the version I know is in all caps and seldom right.
Times readers get those checked details.</p>
<p>I stayed because there are some very smart people there.
I’m a B and when I talk about having an external brain, it means having access to the thought patterns of As, even if I can’t adopt them or apply them to my life.
I’m salieri, but less jealous.</p>
<p>I have not eaten horse paste (yet), committed political violence, or paid into (too many) pyramid schemes.
But in my way I’ve been radicalized from my time here.
I control the inputs, but this is still a filter bubble.
It simultaneously validates and programs my beliefs, an overton hypersphere.
It limits what I can see, a self-selected hubble volume.
I’m not too smart to be fooled.</p>
<p>Deciding what an A looks like, or sounds like, is part of the process of learning to read a network.
For me, they are people who amplify, and sometimes answer, the questions I ask when I read something dumb.</p>
<p>They also look a lot like Lester Bangs from almost famous:
they make their reputation on being honest and unmerciful – and call them anytime, they stay up late.
They are not infallible, but they are more careful than they seem, while also completely willing to jump on a grenade if it lets them be first to a joke.
They’re replies that outreach the original post.</p>
<p><img src="https://abe-winter.github.io/assets/journalists-core.png" alt="tweet saying journalists make twitter the public square" /></p>
<p>I don’t know if journalists are the core of the network, in the sense that if you remove them the economic value goes away.
I don’t know if the A-brains I’ve curated for myself, who are mostly not journalists, are the core.
But I suspect this ‘public square’ argument is approximately right – despite all the sarcasm and entertainment content on there, the fact that there is a core of news keeps the network alive.</p>
<p>Companies like huffpo and buzzfeed which emerged in the 00s talked about the ‘mullet model’, where in dollar terms, entertainment content funds news.
The part that is harder to explain: in trust and reputation terms, reporting funds entertainment.
To operate an information service, you need both.</p>
<p>And the blue checks would like to stay but can afford to leave.
They mostly make their money off-site, either from day jobs or various substacks and podcasts.
Their access to information, which happens more in private rooms than mine, won’t be totally cut off by disrupting the network.</p>
<p>When I think about what will replace twitter, I worry that it was run basically as a public service, and grew organically, and, like a forest, cannot just be replaced.
I worry it will be replaced by private rooms which I can’t access.
I’ve been trying to port my networks, but what about <em>their</em> networks.
The ‘central extended network’ has been sliced up.</p>
<p>Yes, substack + patreon win, yes science has moved to mastodon, yes tumblr gets a boost and post is trying to launch, yes news still works, and ‘IRL is back’.
But twitter was the raw version of those –
unfiltered, hard to drink, unedited, but a fountain of youth and wisdom if it doesn’t make you crazy.</p>
<h2 id="millicronkite-exposure">Millicronkite exposure</h2>
<p>LBJ probably didn’t say<sup id="fnref:didnt" role="doc-noteref"><a href="#fn:didnt" class="footnote" rel="footnote">6</a></sup> ‘if we’ve lost cronkite, we’ve lost the nation’.
And twitter isn’t the myth version of cronkite, a single trusted voice – it is closer to the opposite.
But using it has helped me to understand what cronkite might have been for 60s american news watchers.</p>
<p>The idea of cronkite is commitment to public trust.
Twitter is island gigantism for people who can’t not commit to a gag, but somehow it has turned out that reliable dunking is almost the same as public trust.</p>
<p>What I have seen this week is blue checks, with very little hesitation, impersonating EM by the dozen and getting kicked.
The feeling is the same feeling I had in real life in march 2020 – party at the end of the world.
Celebration not because there is something to celebrate but because you have no illusions about the platform still being open tomorrow.</p>
<p>Imagine you’ve bought a theater and you walk in shouting ‘fire’ in an attempt to scare the audience into compliance.
(Sorry to the 1st amendment scholars who are triggered by this language; I’m not making a free speech argument).</p>
<p>But the theater is a place people go to <em>watch</em> people set themselves on fire, and the audience also lives here and have taken turns on stage.
So you walk in and the regulars stare, transfixed, as you fumble with a matchbook.
You don’t look like you know fire safety and that excites them.
Maybe you escalate by saying ‘You’ve never seen the <em>building</em> on fire have you’ and they’re thinking, you’re right, that’s the only thing we haven’t tried.</p>
<p>But that theater is also my brain.
Alas.</p>
<h2 id="appendix-other-takes">Appendix: other takes</h2>
<ul>
<li>this <a href="https://mobile.twitter.com/whstancil/status/1593486363558612992">will stancil thread</a>. ‘eyes in a lot places, if it goes we’ll be blind’. ‘institutionally-approved viewpoints’. ‘all the counterarguments and alternative viewpoints are going to disappear’. ‘quality that made elites uncomfortable’</li>
</ul>
<h2 class="no_toc" id="notes">Notes</h2>
<script async="" defer="" src="https://cdn.simpleanalytics.io/hello.js"></script>
<noscript><img src="https://api.simpleanalytics.io/hello.gif" alt="" /></noscript>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:for-text" role="doc-endnote">
<p>why not facebook? never having had a facebook acct for more than 2 days without being banned (upcoming post), I can’t say for sure, but my sense is that fb is a social network either for family photos and / or rage. And swap meets. <a href="#fnref:for-text" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:surge" role="doc-endnote">
<p>my source for the storm surge claim is probably the 99 percent invisible podcast? or an old blog <a href="#fnref:surge" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:saturn" role="doc-endnote">
<p><a href="https://web.archive.org/web/20091001133553/http://www.tntdownunder.com/article/2446199116.html">TNT interview</a> on archive.org <a href="#fnref:saturn" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:what" role="doc-endnote">
<p>minnie is WHAT<br /><img src="https://abe-winter.github.io/assets/minnie-is-what.png" alt="exegesis of 'minnie is what'" /> <a href="#fnref:what" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:toleration" role="doc-endnote">
<p>technically this language bans ‘toleration’, not ‘negative information’, and does not empower the school to punish speech online <a href="#fnref:toleration" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:didnt" role="doc-endnote">
<p>‘getting it wrong’ author on <a href="https://www.ucpress.edu/blog/4249/w-joseph-campbell-recalling-the-mythical-cronkite-moment/">the cronkite moment</a> <a href="#fnref:didnt" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>Abe WinterImportant vocab first:Trying new serverless tools2022-11-02T00:00:00+00:002022-11-02T00:00:00+00:00https://abe-winter.github.io/stackshare/2022/11/02/new-stacks<ul id="markdown-toc">
<li><a href="#project--goals" id="markdown-toc-project--goals">Project / goals</a></li>
<li><a href="#pain-points" id="markdown-toc-pain-points">Pain points</a> <ul>
<li><a href="#auth-pain" id="markdown-toc-auth-pain">Auth pain</a></li>
<li><a href="#non-auth-pain" id="markdown-toc-non-auth-pain">Non-auth pain</a></li>
</ul>
</li>
<li><a href="#what-i-liked" id="markdown-toc-what-i-liked">What I liked</a></li>
<li><a href="#conclusions" id="markdown-toc-conclusions">Conclusions</a></li>
</ul>
<h2 id="project--goals">Project / goals</h2>
<p>I burned a weekend to try some hosting platforms. Learning goals:</p>
<ul>
<li>Try a non-Auth0 hosted auth provider</li>
<li>Try cloudflare pages for a CMS-like app</li>
</ul>
<p>The stack I ended up with: CF pages, react, supabase auth, CF functions, GCP functions for one python thing.</p>
<p>Total cost: $18 for a vendor which I ended up not using, $5 for cloudflare pages pro (to get rid of 50ms runtime limit so I could do external API calls from my functions – tbh I could have hit my external API directly, or refactor to a queue, and save the $5). Also $10 for a domain I ended up not using. Supabase will cost me nothing up to 50k users.</p>
<h2 id="pain-points">Pain points</h2>
<h3 id="auth-pain">Auth pain</h3>
<p>Investigated but didn’t use:</p>
<ul>
<li>cloudflare zero trust: (their auth product) costs multiple dollars per user, prohibitive for b2c</li>
<li>ory.sh: was weirdly slow (like 800ms to check my session). It seems to not support jwt, i.e. I presumably cannot extract a user ID from their cookies on the server side.</li>
<li>looked at clerk.dev and supertokens. The supertokens splash page loads slowly, which was a turnoff, and there was no login link on their homepage, bad sign for a login provider. (Eventually found it behind the signup link).</li>
</ul>
<p>I ended up with supabase, which isn’t even an auth product primarily. I think this allows them to treat auth as an afterthought and give like 100x the value for the money. (I’m not paying for supabase – I paid $18 for pro ory to see if it made it faster; it didn’t). Supabase isn’t perfect:</p>
<ul>
<li>at least 2 versions of their auth UI exist, both deprecated, and there are infinite versions of their docs out there, most stale. I ended up downgrading a library to get mutually compatible session + UI libraries</li>
<li>the settings for redirect after email verification consumed like an hour, in part possibly because I rolled back one of their deps. Still not sure how I solved this</li>
</ul>
<p>Despite the warts, I came away liking supabase and wanting to try its other features.</p>
<p>I used a random library with no tests to decode jwts in cloudflare workers. I feel bad about that but in general am happy with the result. I wish the supabase jwt could be verified with a public key so I don’t have to ship my private key, which is <em>highly</em> sensitive bc it lets anyone masquerade as anyone. I think, per some github issue, that SB is working on asymmetric jwts.</p>
<h3 id="non-auth-pain">Non-auth pain</h3>
<p>Cloudflare local tools were surprisingly good (I wasn’t expecting them to exist at all), but not a smooth process. Most of the docs information is for workers, not functions; functions is still in beta, so this is fair.</p>
<p>Docs led me to a false start with miniflare when I needed wrangler. Why have 2 tools? Converge and deprecate. <code class="language-plaintext highlighter-rouge">wrangler.toml</code> seemingly isn’t supported for what I’m doing. Docs were vague on where the /functions directory should go – inside my pages folder, or in cwd? (in cwd apparently). CF dash doesn’t seem to list the functions I’ve deployed. and I’m still not sure how to find the functions error log. Cloudflare workers support secrets (i.e. vars with extra encryption), but functions seem to not.</p>
<p>Lack of html templating in cloudflare workers was small but surprising. <a href="https://blog.cloudflare.com/rendering-react-on-the-edge-with-flareact-and-cloudflare-workers/">Flareact exists</a>, and CF / vercel both support some ‘edge compute’ feature, and <a href="https://jross.me/server-side-rendering-vue-cloudflare-workers/">vue cares</a>. But I was surprised some HTML templating approach wasn’t built into pages / functions – there are various optimizations you can do around caching + rendering once this exists in a standard way.</p>
<p>One component is in python because I needed a specific library. I think CF pages supports python, but via some kind of transpiler documented in what felt like an april fools blogpost. I used GCP cloud functions for this one piece.</p>
<h2 id="what-i-liked">What I liked</h2>
<p>The CF functions file-based approach to routing, which I think next.js does too. Below your functions/ dir, folders are treated as <em>paths</em>. So like <code class="language-plaintext highlighter-rouge">./functions/api/accts/[acct]/verify.js</code> on disk will show up at <code class="language-plaintext highlighter-rouge">/api/accts/ACCTID/verify</code> on my server. Not life-changing but fun, easy to understand, and forestalls a lot of ‘where does this go’ arguments.</p>
<p>Supabase generally. I love the idea of supabase and have been looking for an excuse to use it. Somehow the objectively bad onboarding experience left me even more excited.</p>
<p>I was worried about cloudflare KV because it’s eventually consistent (i.e. writes won’t always be readable right away). I’m still worried, but while playing with it I didn’t run into any trouble. They have a ‘durable’ product that probably solves this.</p>
<p>CF wrangler for local testing. Docs could be better, but once I got it running, it did its thing. Works fine without a CF acct, and the only problem I ran into after deploying was missing variables (and I couldn’t access error logs to be sure that was the problem). If you have 2 hours you should try wrangler locally with static html, functions and KV. It will open your mind to cms-like backend architectures.</p>
<p>Buildsystems: GCP functions and cloudflare both have non-docker approaches to build + deploy. I like docker better than what came before, but I’m increasingly unhappy with docker as an image format because it makes dependencies so hard.</p>
<p>If you use a dynamic language, libraries are just smallish files that take a ton of work to download and unpack. Docker is a technology for making you download ALL of them when you change ANY of them, which affects build times, storage costs, and transfer time. Docker is a technology for treating your OS, dependencies, and app as a single bundle.</p>
<p>I think docker could <em>easily</em> fix this by supporting unordered layers for deps, and by exposing some basic cache / workflow tools for package managers. Every time I have to run apt or pip in docker I die a little inside.</p>
<h2 id="conclusions">Conclusions</h2>
<p>Overall – least painful first attempt at a serverless platform.</p>
<p>On AWS my first lambda experience involved booting a piece of hardware to tunnel to aurora serverless (already a bad sign), and then aurora serverless having slow starts so I had to keep <em>it</em> always-up, and then I tried doing something relational with dynamo and got the consistency wrong. On GAE, I had to keep my instance always-up because the image was huge and booted slow, then got billed for like 30x usage because every old version was still running in the background. (They rescinded the bill).</p>
<p>This time was not as bad; it didn’t feel like I was fighting the system (perhaps because this time I wasn’t trying to run a multi gigabyte docker image with django and numpy). There are many things these tools <em>don’t</em> do well, but the hammer-nail zone for them is BIG.</p>
<p>Supabase as auth provider was clunky but ultimately great. I’ve always avoided firebase because it’s obviously designed to farm me, but the value prop of firebase architecture is real. From SB, I got a cultural signal that they weren’t building their system to nickel and dime me on things that should be open source.</p>
<p>The cloudflare local dev experience was unxpectedly good and worked unexpectedly well with my other tools.</p>
<p>I’m paying like $200 a month for a tiny kube cluster on google cloud (for other projects). I built on kube because it’s at least theoretically cross-platform, i.e. I could switch clouds or self-host in an instant. But it’s also beefy to run and makes everything hard. I build on SQL because it’s nice when I need it, but most of the time it’s overkill and I don’t need it.</p>
<p>Kube is in theory an efficient way to self host OSS apps that weren’t designed for serverless. But these apps are incredibly inefficient – they’re running slow on hardware that is small by cloud terms, but still modern silicon that works at the limits of energy and matter.</p>
<p>I don’t work much with serverless but my sense is that storage options and runtimes are both not standardized.
If they converge, that would be an incredible boon for self-hosters, who run lots of services and don’t load them heavily.</p>
<script async="" defer="" src="https://cdn.simpleanalytics.io/hello.js"></script>
<noscript><img src="https://api.simpleanalytics.io/hello.gif" alt="" /></noscript>Abe WinterMoviepass all the way down2022-04-29T00:00:00+00:002022-04-29T00:00:00+00:00https://abe-winter.github.io/faux/pas/2022/04/29/moviepaas<p>I took this down – it made an argument about amortization which I now think was wrong.</p>
<script async="" defer="" src="https://cdn.simpleanalytics.io/hello.js"></script>
<noscript><img src="https://api.simpleanalytics.io/hello.gif" alt="" /></noscript>Abe WinterI took this down – it made an argument about amortization which I now think was wrong.Stop letting government build websites2022-02-24T00:00:00+00:002022-02-24T00:00:00+00:00https://abe-winter.github.io/butterflies/2022/02/24/govweb<p>I’m writing this on the eve of what may be the fall of the government of Ukraine.
I’m supposed to be working, can’t concentrate, and picked the most pro-social thing off my writing backlog, which is this.</p>
<p>There’s a John Adams letter to his wife which is like ‘I study politics and war so that my kids can study naval architecture and my grandkids can live in east williamsburg (former bushwick) and pretend to earn a living from art’.
He repeated it in his late-in-life ADD correspondence with thomas jefferson, who was infinitely better-read and was like ‘sure pal’, but politely.
It was just the two of them still alive from the glory days and he was enjoying having a pen-pal.</p>
<p>This article is about government competence + what governments are supposed to be competent <em>at</em>.
So is the Adams line. It’s about generational projects.
My strong principle post-everything is ‘stay in your lane’ and so I’m writing about government competence at technology, where I’m maybe not competent but at least have some kind of outdated experience to point at.
That said I feel justified thinking that governments generally should maintain some expertise at politics + war.
This week, year, decade, century I feel like mine has not.</p>
<p>But nobody asked me. So here I am writing about decadence through the lens of <em>web technology</em>.</p>
<p>If you read with a soundtrack, <a href="https://www.youtube.com/watch?v=rdl_kXUrdIs">stan’s song</a> from the south park movie should do nicely.</p>
<ol id="markdown-toc">
<li><a href="#public-records-for-example" id="markdown-toc-public-records-for-example">Public records, for example</a></li>
<li><a href="#so-dont-start-with-websites" id="markdown-toc-so-dont-start-with-websites">So don’t start with websites</a></li>
<li><a href="#volunteers" id="markdown-toc-volunteers">Volunteers</a></li>
<li><a href="#youre-holding-up-the-goddamn-lunch-line" id="markdown-toc-youre-holding-up-the-goddamn-lunch-line">You’re holding up the goddamn lunch line</a></li>
</ol>
<h2 id="public-records-for-example">Public records, for example</h2>
<p>I filed a lawsuit once.
It cost $400 to submit. I understand that this money doesn’t go to the filing system, it goes everywhere, but the only other $400 fee I’ve ever paid online was for stripe atlas, and their UX was really polished.
NYS e-file has many great attributes, and the clerks are overworked but legit good, but a streamlined and transparent submission workflow isn’t part of the package.</p>
<p>On the backend, e-filed papers are fed into PACER, which recently won some ‘which website is more evil’ poll by <a href="https://twitter.com/jkosseff/status/1492911436040974342">the section 230 guy</a>.
PACER is the database of all court papers from most courts of sufficient size in every state.
PACER is a beast, not least because they charge 10 cents per page, as if they’re printing it out.</p>
<p>I did some napkin math on how hard it would be to run PACER on a CDN plus a small search engine.
Even though this country is 1000 years old and has about a million appellate-level proceedings per year, this is still under a billion rows.
If 100k lawyers are pulling 100MB of PDFs each per day, that’s 10 terabytes of bandwidth, aka under $1000 dollars per day.</p>
<p>(If you work at PACER and are reading this, I’ll volunteer 3 months of my time to help you get better. Seriously. I’ll work below market for a year. I just want you to stop sucking).</p>
<p>My point: this is a service that government is at least <em>trying</em> to provide, and they’re doing it badly.</p>
<h2 id="so-dont-start-with-websites">So don’t start with websites</h2>
<p>Governments can build websites <em>eventually</em>, but first they should publish data with minimal access barriers.
Most government web properties have some kind of dataset underneath, and many users are there to access the data, not a service.
Just publish the data!
Require login if you like, and bill for bandwidth so the thing is revenue-neutral at scale.</p>
<p>There are in theory some government websites that are ‘pure service’ and don’t have a data component.
Continuing the e-file theme from above, the IRS has for a long time been talking about making a free e-file service, and for just as long tax prep software company Intuit has been lobbying to prevent that.
(propublica <a href="https://www.propublica.org/article/inside-turbotax-20-year-fight-to-stop-americans-from-filing-their-taxes-for-free">covered this extensively</a> in an apparently-successful campaign to drown intuit in mud).</p>
<p>In theory, the IRS doesn’t have a data component.
Countargument: the data component is the tax information!
Just publish that and let volunteers build tools on top.</p>
<p>I just finished <a href="https://beeckcenter.georgetown.edu/wp-content/uploads/2022/02/Benefit-Eligibility-Rules.pdf">some long pdf</a> about rules automation in government.
Rules automation means creating machine-readable versions of complex regulations so others can build systems on top of them.
Just do that!</p>
<p>To the extent that the IRS isn’t just a data provider, they’re a form processor.
This too can be done without the web.
If, for example, the IRS accepted complete forms via email, or some other simple upload service, would <em>anyone ever</em> bother logging in to their website?</p>
<p>Forms should be standardized or platformized across all gov tech, made basically a no-code tool.
Forms are something government should be insanely good at, should have down pat.</p>
<p>There’s an ‘administrative burden’ argument that this stuff is intentionally bad.
Maybe it’s a factor, but I reject any explanation that doesn’t include incompetence.
It’s not easy to make websites that more or less work but are horrible.</p>
<h2 id="volunteers">Volunteers</h2>
<p>The night covid vaccines opened to over-30s in my state,
you had to go on two different websites and refresh them until you got an appointment.
The system didn’t have user logins but was instead protected with a google captcha.
(G should definitely not be allowed anywhere near dot gov sites).</p>
<p>When I showed up at my slot in deep queens, the line went halfway around a school which took up a whole city block.
It drizzled the whole time.
There were people with soggy clipboards walking up and down the line asking people to reschedule for the morning.
I asked one of them why it was so chaotic and they were like, ‘we have to use incompatible scheduling and inventory systems’ (presumably one or both from the state government), and it’s impossible to reconcile the two.</p>
<p>Lines, man (I’ve written about this before), scare the crap out of me. Every line is a bread line.
One of my few points of common ground with Reagan is if you have long lines for necessities, you’re a failed state.
Scheduling is a solved problem in computer science. It should be a core skill for gov. Get it right.</p>
<p>More recently, I tried to schedule a booster; the NY website for this was both useless (they couldn’t schedule appts at most providers), and not up-to-date on inventory.</p>
<p>At some point in the initial rush to vaccinate, <strong>volunteers</strong> realized the state wasn’t getting it done and they built <em>layers</em> on top of state and other datasets.
The NY one of these was turbovax on twitter. I think Patrick Mackenzie and Zoelle Egner, among others, did one in california.</p>
<p>This kind of civic volunteerism can be complementary to the work of gov. This isn’t like some sick reading of weber where the monopoly on force includes the monopoly on benefits.
Gov can’t do everything.
And publishing great data resources supports this work.</p>
<p>More health examples:
I tried to sign up for health insurance on the individual market when I went into solopreneur mode.
It was an incredible chore just to log in.</p>
<p>At first I just wanted pricing and coverage information, but you can only get this by going through the enrollment flow, agreeing to a criminal background check and jail time for lying along the way.
The actual plan data is hosted at the provider websites, not the dot-gov.</p>
<p>When I successfully signed up it was radio silence for weeks, no email receipt, and finally something in the mail.</p>
<h2 id="youre-holding-up-the-goddamn-lunch-line">You’re holding up the goddamn lunch line</h2>
<p>‘Mere data’ before building the shitty frontend would be so useful, and <em>easier to build than what you make today</em>.
Volunteers will do the rest.
(Gov sponsored no-code platforms for common things gov does would be cool as well.)</p>
<p>My industry has gotten a pass on needing to be political about anything.</p>
<p>The shrinking libertarian corner of my soul wonders if government should be in the benefits business.
But it is.
My <em>entire</em> soul thinks that if we’re going to do something, it’s embarrassing to do it so much worse than par.
Failure here reflects on our ability to do anything right in other domains. I think it makes people question the legitimacy of paying taxes.</p>
<p>I was serious about my PACER offer above. I’ll work for free for any broken gov web project that wants to get better. I know I have a tone in these posts, but I’ll be humble and ask questions first.</p>
<p>I’m not alone in this.
My generation of tech bro (gender-neutral) has gotten political in various directions, but so far, the thing we agree on is that you (talking to you, government) suck at what comes very easily to us.</p>
<p>If you run a city, or a state agency, or a federal whatever, and you personally email ten people in my field with subject line ‘get in loser’, we’ll get in.
We don’t want to be paid.
We want you to do your job, and we want to help.</p>
<script async="" defer="" src="https://cdn.simpleanalytics.io/hello.js"></script>
<noscript><img src="https://api.simpleanalytics.io/hello.gif" alt="" /></noscript>Abe WinterI’m writing this on the eve of what may be the fall of the government of Ukraine. I’m supposed to be working, can’t concentrate, and picked the most pro-social thing off my writing backlog, which is this.oauth 2.0 sequence diagram with RFC embeds2022-01-23T00:00:00+00:002022-01-23T00:00:00+00:00https://abe-winter.github.io/2022/01/23/oauth<p>Hey regular readers – ignore this post, it’s a sample from the <a href="https://github.com/abe-winter/rfckit">rfckit repo</a>.</p>
<p>Clicking things will either load docs at the bottom, or will take you to the RFC at ietf.org.</p>
<style>
.req {
padding: 10px;
margin-top: 10px;
border-radius: 6px 6px 0 0;
border: solid 1px black;
border-bottom: dashed 1px grey;
}
.res {
padding: 10px;
margin-bottom: 10px;
border-radius: 0 0 6px 6px;
border: solid 1px black;
border-top: dashed 1px grey;
}
.checks {
padding: 10px;
font-size: small;
}
span.flat-group {
margin-left: 10px;
background: #eff;
padding: 4px;
display: inline-block;
}
.docsec {
display: none;
}
.docsec:target {
display: inherit;
}
</style>
<div>
<h2>
oauth 2.0 authorization code grant
<sup>
<a href="#head">
?
</a>
</sup>
</h2>
</div>
<div style="display: grid; grid-template-columns: repeat(3, minmax(0, 1fr))">
<div style="grid-column: 1; text-align: center; font-size: large">
<a href="#role-resource-owner">
<span>
👤
browser
</span>
</a>
</div>
<div style="grid-column: 2; text-align: center; font-size: large">
<a href="#role-client">
<span>
🕸️
client
</span>
</a>
</div>
<div style="grid-column: 3; text-align: center; font-size: large">
<a href="#role-authorization-server">
<span>
🆔
authorization-server
</span>
</a>
</div>
<div style="grid-row: 4; grid-column: 1 / 3" class="req">
➡️
/client-auth
</div>
<div style="grid-row: 5; grid-column: 1 / 3" class="res">
<div style="float: right">
⬅️
</div>
/client-auth
<span class="flat-group">
<b>
redirect
</b>
authorization
</span>
<span class="flat-group">
<b>
payload
</b>
<a href="#step-4-res-pay-client-identifier">
📛 client-identifier
</a>
<a href="#step-4-res-pay-requested-scope">
🔬 requested-scope
</a>
<a href="#step-4-res-pay-redirection-uri">
🔄 redirection-uri
</a>
<a href="#step-4-res-pay-local-state">
📎 local-state
</a>
</span>
</div>
<div style="grid-row: 6; grid-column: 1 / 4" class="req">
➡️
/authorization
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.1">
spec
</a>
<span class="flat-group">
<b>
payload
</b>
<a href="#step-5-req-pay-client-identifier">
📛 client-identifier
</a>
<a href="#step-5-req-pay-requested-scope">
🔬 requested-scope
</a>
<a href="#step-5-req-pay-redirection-uri">
🔄 redirection-uri
</a>
<a href="#step-5-req-pay-local-state">
📎 local-state
</a>
</span>
</div>
<div style="grid-row: 7; grid-column: 3 / 4" class="checks">
<div>
✅
user-agent is authenticated
</div>
<div>
✅
resource-owner grants client's access request
</div>
</div>
<div style="grid-row: 8; grid-column: 1 / 4" class="res">
<div style="float: right">
⬅️
</div>
/authorization
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.2">
spec
</a>
<span class="flat-group">
<b>
redirect
</b>
redirection-uri
</span>
<span class="flat-group">
<b>
payload
</b>
<a href="#step-7-res-pay-authorization-code">
🔑 authorization-code
</a>
<a href="#step-7-res-pay-local-state">
📎 local-state
</a>
</span>
</div>
<div style="grid-row: 9; grid-column: 1 / 3" class="req">
➡️
/redirection
<span class="flat-group">
<b>
payload
</b>
<a href="#step-8-req-pay-authorization-code">
🔑 authorization-code
</a>
<a href="#step-8-req-pay-local-state">
📎 local-state
</a>
</span>
</div>
<div style="grid-row: 10; grid-column: 2 / 4" class="req">
➡️
/token
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.3">
spec
</a>
🔒 client-creds
<span class="flat-group">
<b>
payload
</b>
<a href="#step-9-req-pay-authorization-code">
🔑 authorization-code
</a>
<a href="#step-9-req-pay-redirection-uri">
🔄 redirection-uri
</a>
</span>
</div>
<div style="grid-row: 11; grid-column: 3 / 4" class="checks">
<div>
✅
client is authenticated
</div>
<div>
✅
authorization-code is valid
</div>
<div>
✅
redirection-uri matches
</div>
</div>
<div style="grid-row: 12; grid-column: 2 / 4" class="res">
<div style="float: right">
⬅️
</div>
/token
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.4">
spec
</a>
<span class="flat-group">
<b>
redirect
</b>
todo
</span>
</div>
<div style="grid-row: 13; grid-column: 1 / 3" class="res">
<div style="float: right">
⬅️
</div>
/redirection
</div>
</div>
<div>
<h3>
Docs
</h3>
<div id="head" class="docsec">
<h4>
oauth 2.0 authorization code grant
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-4.1">
source
</a>
<span>
Section
4.1
</span>
<p>
The authorization code grant type is used to obtain both access tokens and refresh tokens and is optimized for confidential clients. Since this is a redirection-based flow, the client must be capable of interacting with the resource owner's user-agent (typically a web browser) and capable of receiving incoming requests (via redirection) from the authorization server.
</p>
</div>
<div id="role-resource-owner" class="docsec">
<h4>
Role: resource-owner
</h4>
<p>
Aliases:
browser, user-agent, resource-owner
</p>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-1.1">
source
</a>
<span>
Section
1.1
</span>
<p>
An entity capable of granting access to a protected resource. When the resource owner is a person, it is referred to as an end-user.
</p>
</div>
<div id="role-client" class="docsec">
<h4>
Role: client
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-1.1">
source
</a>
<p>
An application making protected resource requests on behalf of the resource owner and with its authorization. The term "client" does not imply any particular implementation characteristics (e.g., whether the application executes on a server, a desktop, or other devices).
</p>
</div>
<div id="role-authorization-server" class="docsec">
<h4>
Role: authorization-server
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-1.1">
source
</a>
<p>
The server issuing access tokens to the client after successfully authenticating the resource owner and obtaining authorization.
</p>
</div>
<div id="step-4-res-pay-client-identifier" class="docsec">
<h4>
Payload: client-identifier
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-2.2">
source
</a>
<p>
The authorization server issues the registered client a client identifier -- a unique string representing the registration information provided by the client.
</p>
</div>
<div id="step-4-res-pay-requested-scope" class="docsec">
<h4>
Payload: requested-scope
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-3.3">
source
</a>
<p>
The authorization and token endpoints allow the client to specify the scope of the access request using the "scope" request parameter. In turn, the authorization server uses the "scope" response parameter to inform the client of the scope of the access token issued. ... The authorization server MAY fully or partially ignore the scope requested by the client.
</p>
</div>
<div id="step-4-res-pay-redirection-uri" class="docsec">
<h4>
Payload: redirection-uri
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-3.1.2">
source
</a>
<p>
After completing its interaction with the resource owner, the authorization server directs the resource owner's user-agent back to the client. The authorization server redirects the user-agent to the client's redirection endpoint previously established with the authorization server during the client registration process or when making the authorization request.
</p>
</div>
<div id="step-4-res-pay-local-state" class="docsec">
<h4>
Payload: local-state
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.1">
source
</a>
<p>
An opaque value used by the client to maintain state between the request and callback. The authorization server includes this value when redirecting the user-agent back to the client.
</p>
</div>
<div id="step-5-req-pay-client-identifier" class="docsec">
<h4>
Payload: client-identifier
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-2.2">
source
</a>
<p>
The authorization server issues the registered client a client identifier -- a unique string representing the registration information provided by the client.
</p>
</div>
<div id="step-5-req-pay-requested-scope" class="docsec">
<h4>
Payload: requested-scope
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-3.3">
source
</a>
<p>
The authorization and token endpoints allow the client to specify the scope of the access request using the "scope" request parameter. In turn, the authorization server uses the "scope" response parameter to inform the client of the scope of the access token issued. ... The authorization server MAY fully or partially ignore the scope requested by the client.
</p>
</div>
<div id="step-5-req-pay-redirection-uri" class="docsec">
<h4>
Payload: redirection-uri
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-3.1.2">
source
</a>
<p>
After completing its interaction with the resource owner, the authorization server directs the resource owner's user-agent back to the client. The authorization server redirects the user-agent to the client's redirection endpoint previously established with the authorization server during the client registration process or when making the authorization request.
</p>
</div>
<div id="step-5-req-pay-local-state" class="docsec">
<h4>
Payload: local-state
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.1">
source
</a>
<p>
An opaque value used by the client to maintain state between the request and callback. The authorization server includes this value when redirecting the user-agent back to the client.
</p>
</div>
<div id="step-7-res-pay-authorization-code" class="docsec">
<h4>
Payload: authorization-code
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.1">
source
</a>
<p>
The authorization code is obtained by using an authorization server as an intermediary between the client and resource owner. Instead of requesting authorization directly from the resource owner, the client directs the resource owner to an authorization server (via its user-agent as defined in [RFC2616]), which in turn directs the resource owner back to the client with the authorization code.
</p>
</div>
<div id="step-7-res-pay-local-state" class="docsec">
<h4>
Payload: local-state
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.1">
source
</a>
<p>
An opaque value used by the client to maintain state between the request and callback. The authorization server includes this value when redirecting the user-agent back to the client.
</p>
</div>
<div id="step-8-req-pay-authorization-code" class="docsec">
<h4>
Payload: authorization-code
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.1">
source
</a>
<p>
The authorization code is obtained by using an authorization server as an intermediary between the client and resource owner. Instead of requesting authorization directly from the resource owner, the client directs the resource owner to an authorization server (via its user-agent as defined in [RFC2616]), which in turn directs the resource owner back to the client with the authorization code.
</p>
</div>
<div id="step-8-req-pay-local-state" class="docsec">
<h4>
Payload: local-state
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.1">
source
</a>
<p>
An opaque value used by the client to maintain state between the request and callback. The authorization server includes this value when redirecting the user-agent back to the client.
</p>
</div>
<div id="step-9-req-pay-authorization-code" class="docsec">
<h4>
Payload: authorization-code
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.1">
source
</a>
<p>
The authorization code is obtained by using an authorization server as an intermediary between the client and resource owner. Instead of requesting authorization directly from the resource owner, the client directs the resource owner to an authorization server (via its user-agent as defined in [RFC2616]), which in turn directs the resource owner back to the client with the authorization code.
</p>
</div>
<div id="step-9-req-pay-redirection-uri" class="docsec">
<h4>
Payload: redirection-uri
</h4>
<a href="https://datatracker.ietf.org/doc/html/rfc6749#section-3.1.2">
source
</a>
<p>
After completing its interaction with the resource owner, the authorization server directs the resource owner's user-agent back to the client. The authorization server redirects the user-agent to the client's redirection endpoint previously established with the authorization server during the client registration process or when making the authorization request.
</p>
</div>
</div>
<div style="text-align: right">
generated by
<a href="https://github.com/abe-winter/rfckit">
rfckit
</a>
</div>
<script async="" defer="" src="https://cdn.simpleanalytics.io/hello.js"></script>
<noscript><img src="https://api.simpleanalytics.io/hello.gif" alt="" /></noscript>Abe WinterHey regular readers – ignore this post, it’s a sample from the rfckit repo.Deltacron dispatches2022-01-13T00:00:00+00:002022-01-13T00:00:00+00:00https://abe-winter.github.io/half-triple-thinking/2022/01/13/deltacron<p>I have no idea how I got it (though I should also tell you, I have a foggy idea at best of how community spread works).
None of the people I saw one on one in december were likely vectors.
I probably picked it up in an elevator.</p>
<p>I ran out of sugar on day 1.</p>
<p>I have no idea what the rules are or how long I should stay indoors.
The CDC website had a cursed introduction to 0-based arithmetic, and seems to care deeply about the difference between 5 day quarantine and 5 day isolation.
Quarantine technically means 40 days, so insert ‘sparkling isolation’ joke if you like.</p>
<p>If my IQ was halved by having covid, it was tripled by fixing a bunch of other things:
I did zero multitasking.
My phone was in do not disturb mode constantly, and I checked it like twice a day.
I had zero days with less than 4 hours of sleep.
(‘Now that’s some halved-tripled thinking’, a friend said about this general topic).</p>
<p>(I’m joking but not entirely joking about the IQ stuff. It’s plausible that <a href="https://twitter.com/IanRicksecker/status/1478611650760437765">covid has serious sequelae</a> in various organ systems. Get a <a href="https://twitter.com/peteyreplies/status/1482204962931236865">mask that fits</a>, I conceivably got it while wearing a KN95).</p>
<p>There’s a book in the david brin uplift series where the dolphins become atavistic in a crisis, and dolphin captain creideiki has to coax them back to ‘science and language brain’ with ultrasonic trinary haikus.
I feel like this getting back to work, like I’m ‘forcing my brain into modern thinking’.
Which I will do, but reluctantly, and make sure to still embrace atavism once in a while.</p>
<p>My point: this forced week off came closer to repairing my bonkers relationship with work and time than anything else I’ve tried.</p>
<p>If you read with a soundtrack: alanis morisette’s thank you, because it’s about negatives as positives, and also is a guilty, guilty pleasure, like this whole isolation week has been for me.
Like most adult men in my age bracket I owned<sup id="fnref:guilty" role="doc-noteref"><a href="#fn:guilty" class="footnote" rel="footnote">1</a></sup> the jagged little pill CD.</p>
<ol id="markdown-toc">
<li><a href="#im-tired-but-im-working-yeah" id="markdown-toc-im-tired-but-im-working-yeah">I’m tired but I’m working yeah</a></li>
<li><a href="#anosmia" id="markdown-toc-anosmia">Anosmia</a></li>
<li><a href="#new-york" id="markdown-toc-new-york">new york</a></li>
<li><a href="#saying-no-to-things" id="markdown-toc-saying-no-to-things">Saying no to things</a></li>
</ol>
<h2 id="im-tired-but-im-working-yeah">I’m tired but I’m working yeah</h2>
<p>There are worse things than being atavistic and dolphin-brained<sup id="fnref:cube" role="doc-noteref"><a href="#fn:cube" class="footnote" rel="footnote">2</a></sup>.
For a week, I didn’t have to make any decisions about time.
I just said no to everyone!
It was a superpower.</p>
<p>My work life balance last year was me not saying no enough, and not valuing my time correctly, and feeling an absurd disconnect every time I put in an hour of time at a loss.
I read something about d-day and normandy which said that new soldiers are, the first time they take fire, motivated by loyalty to the person next to them and little else.
Saying yes to favors can be a sugar hit, and hijack your incentives.
But this is not something covid tolerates.</p>
<p>Also the beaches of normandy are not a good model for your career. Beware dolphins bearing haikus.</p>
<p>I muted the phone for <em>a week</em>.
I ignored IMs for <em>hours</em>. It was paradise.
I’m sensitive to interruptions, am on an extreme of believing they’re an awful tax, and haven’t been able to shut notifications off for a year, and needed this.</p>
<p>(It turns out dolphins are great at interruptions – they can stay alert in a stimulus task for days on end. If I were actually dolphin-brained I wouldn’t care about the IMs. But the covid didn’t give me unihemispheric sleep, or unihemispheric anything, unfortunately).</p>
<p>At one point I thought the phrase ‘this is absolutely no reason to be losing sleep’, and spent the rest of my isolation period living that.
I now have zero temptation to do anything inconvenient like wake up 3 hours after going to bed for an unnecessary short-notice meeting in a random time zone.</p>
<h2 id="anosmia">Anosmia</h2>
<p>Like most adult men I have a system for deciding when to shower that relies on all five of the senses, and around the middle of my isolation week I thought to myself <em>wow</em>, I smell surprisingly clean.</p>
<p>I rely on smell to know if coffee is working because I can smell it coming out of my pores.</p>
<p>Not having a sense of smell is fascinating.
It’s like putting your phone in black and white mode to make it less tempting.
Well, I always thought that trick was bullshit.
But it’s different and refreshing is the point.</p>
<p>I never feel dirty.
Air that would be stinky is just air; you know that ‘fresh air conditioned’ air taste, not the recycled metallic airplane air, that good late 80s summer camp computer lab filtered air?
All air has become that air.
All skin feels clean.</p>
<p>When I was first figuring this out, I assumed I had gotten a dud lemon and just tried smelling it harder and harder.
Same with garlic, same with soap.
It felt like a hole in my senses; a phantom limb but for information, with my brain’s sensor fusion system trying to bridge the gap with scent-correlated features like temperature and humidity.</p>
<p>This ‘phantom sense’ feeling is weirdly similar to being in VR; an experience that is more real than normal screen interactions, but with something missing.</p>
<p>Coincidentally, david chalmers has a new book out about simulations and was on the kent bye vr podcast this week pushing it.
His conclusion is that he’s not sure if we’re in a simulation, which is maybe not surprising from a guy whose chief contribution to consciousness research is that he’s not sure what to ask about consciousness<sup id="fnref:order-n" role="doc-noteref"><a href="#fn:order-n" class="footnote" rel="footnote">3</a></sup>.
Chalmers has spent some portion of his recent career doing a lecture series about the matrix (yes, the film), and may or may not be planning a transition to ready player one scholarship.</p>
<h2 id="new-york">new york</h2>
<p>I have no idea where I got it, I said before, but in a larger sense, I know exactly where I got it: manhattan, labyrinth of elevators and subways.</p>
<p>Which 1) makes any other isolation I’ve been doing stupid, because to get anywhere here, you have to get inside a box with tourists and other malcontents.</p>
<p>And 2) new york is maybe not the place. To what? To ride out a pandemic, but you can finish that sentence a lot of other ways. There’s a joan didion essay, <a href="https://essaysspring13.qwriting.qc.cuny.edu/files/2013/04/Joan-Didion-Goodbye-to-All-That.pdf">goodbye to all that</a>, which is about why she left.
It’s personal to her and may not generalize, but it’s also personal to me.</p>
<p>(For you outer borough crew, I’m talking about manhattan specifically, take it down a notch).</p>
<p>Not being able to go in the elevator, a.k.a outside, this week, was very 2020, and made me wonder about big cities as epicenters.
nyc is society organized around a series of box-shaped petri dishes – elevators, subways, taxis.
Then someone let bob moses build the shittiest zig zagging 2 lane highway from here to the worst international airport, an airport that I have never visited without either witnessing a biblical plague or being arrested.
What did we <em>think</em> would happen when we connected them?</p>
<p>I don’t know what % of people are getting it from face-to-face vs elevator.
(I still don’t know how community spread works).
I don’t know how well masks work, or if 90% masking is great but 70% of people masking part of their face is the same as 0%.</p>
<p>If you buy enrico moretti’s research about industrial agglomeration enabling specialization, maybe those petri dishes are good. He’s anti wfh fwiw, possibly in the way einstein was anti quantum mechanics.
See <a href="https://en.wikipedia.org/wiki/Clarke%27s_three_laws">clarke’s first law</a> on distinguished scientists doubting things.</p>
<h2 id="saying-no-to-things">Saying no to things</h2>
<p>On day 5 I ventured out for more lateral flow tests.
I’m still highly positive! Obviously.
You know that movie the thin red line? This one was thick, spell that as you like.
I also restocked junk food and was instantly sick.
Sugar and dairy indeed seem like bad choices.</p>
<p>(On food – periodically I felt like the anchorite from terry pratchett’s small gods<sup id="fnref:pratchett" role="doc-noteref"><a href="#fn:pratchett" class="footnote" rel="footnote">4</a></sup>, where he has cold beer and feasts constantly, but once in a while he heads out for some mushrooms and brackish water. For me it manifested as a citrus craving around day 6 as scurvy set in. It’s possible I ate a whole lemon).</p>
<p>Covid, and my brush with scurvy, both are not the big C.
To survive cancer you have to cut things out, and not just the tumor<sup id="fnref:cartman" role="doc-noteref"><a href="#fn:cartman" class="footnote" rel="footnote">5</a></sup>.
You have to say no to more things.
You <em>get</em> to say no to more things.
I experienced a very, very light version of this.</p>
<p>Last year, and I think this is a me thing rather than a universal pandemic thing, was about how hard it is to say no to things that are bad for you, that are not working, that are underwater.
But saying no with covid is EASY.
It’s automatic.</p>
<p>This isn’t all gravy. People die from this. I may develop long term symptoms.
Getting covid wasn’t my new year’s resolution. But improving my time management WAS.
No human being had the power to change my habits until a random old lady in my building rode the elevator without a mask.
A little part of me is thinking ‘thanks for the wakeup call’.</p>
<p><img src="https://abe-winter.github.io/assets/less-is-more.png" alt="less is more" /></p>
<p>Sometimes less is more.</p>
<h2 class="no_toc" id="notes">Notes</h2>
<script async="" defer="" src="https://cdn.simpleanalytics.io/hello.js"></script>
<noscript><img src="https://api.simpleanalytics.io/hello.gif" alt="" /></noscript>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:guilty" role="doc-endnote">
<p>‘Owned’, not ‘own’. What happened to mine was that a classmate was going through my CDs and said ‘you have this?’, and I said, ‘that’s not mine, someone from sleepaway camp left it in there’. And she said ‘can I have it then’, and that’s why I no longer own the CD. I still have the jewel case somewhere. If you leaned on my laptop at the hypothetical wework and were like ‘you have this?’, I would probably end up giving it to you. This tactic absolutely works. <a href="#fnref:guilty" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:cube" role="doc-endnote">
<p><a href="https://twitter.com/dilettanterypod/status/1406458667700867077">Who wants to join me in becoming cube brained</a> <a href="#fnref:cube" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:order-n" role="doc-endnote">
<p>He has a list of philosophical stances on whether we’re in a simulation, but doesn’t talk about computability. If the rules of computation are the same in our universe as a hypothetical simulated universe, then it’s illegal to mine bitcoin on clouds. and we mine bitcoin, therefore we’re not in a cloud. (by rules I mean literally rules, not laws of physics, but there’s a version of this argument that uses O(N) rather than TOS). He wonders if minds in a simulation would be non-conscious, but doesn’t ask the more-plausible inverse question: is consciousness a side effect of a simulation, are <em>only</em> simulated minds conscious. Kent Bye is obsessed with the topic of reality, and has a reading group of process philosophers and quantum ontologists that’s currently reading ‘untying the gordian knot’. <a href="#fnref:order-n" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:pratchett" role="doc-endnote">
<p>Small gods, which I reread recently as a post-pan adult, is a very good book about critical thinking, and brutha’s miracle is a subtle and rewarding take on what sainthood would mean to TP <a href="#fnref:pratchett" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:cartman" role="doc-endnote">
<p>FYI I know this from the south park where wendy beats up cartman and it may be false in real life. <a href="#fnref:cartman" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>Abe WinterI have no idea how I got it (though I should also tell you, I have a foggy idea at best of how community spread works). None of the people I saw one on one in december were likely vectors. I probably picked it up in an elevator.Preemptive negative review of amazon’s Wheel of Time2021-11-18T00:00:00+00:002021-11-18T00:00:00+00:00https://abe-winter.github.io/review/2021/11/18/wot<p>Tomorrow amazon’s Wheel of Time adaptation drops.
TV reviewing isn’t my normal wheelhouse, but a guy died trying to finish something I loved as a kid, and if I have to step up to defend his vision, so be it.</p>
<p>I haven’t seen the show yet (it’s not out yet) so this is speculative, and I’m not planning to see it, so I’ll never need to correct this.
I did see 5 seconds of a trailer, and Tar Valon looks like the Taj Mahal, rather than the Guggenheim.
From that I’ve drawn all the conclusions which follow.</p>
<p>Spoilers:
this is a review so there are spoilers. Wendy Doniger justified spoilers once with ‘show me the kid who reads the London Review of Books and hasn’t read Harry Potter’ and I kind of feel that way about my blog.</p>
<ol id="markdown-toc">
<li><a href="#first-episode" id="markdown-toc-first-episode">First episode</a></li>
<li><a href="#the-nature-of-evil" id="markdown-toc-the-nature-of-evil">The nature of evil</a></li>
<li><a href="#good" id="markdown-toc-good">Good</a></li>
<li><a href="#the-magic-system" id="markdown-toc-the-magic-system">The magic system</a></li>
<li><a href="#warrior-cults" id="markdown-toc-warrior-cults">Warrior cults</a></li>
<li><a href="#layered-cultures" id="markdown-toc-layered-cultures">Layered cultures</a></li>
<li><a href="#sex-love-rock--roll" id="markdown-toc-sex-love-rock--roll">Sex, love, rock & roll</a></li>
<li><a href="#dreams" id="markdown-toc-dreams">Dreams</a></li>
<li><a href="#nynaeve" id="markdown-toc-nynaeve">Nynaeve</a></li>
<li><a href="#conclusions-if-any" id="markdown-toc-conclusions-if-any">Conclusions, if any</a></li>
</ol>
<h2 id="first-episode">First episode</h2>
<p>Bel Tine is multiple holidays simultaneously in a region that’s experiencing multiple seasons simultaneously. amazon made it just a spring holiday.
It would be hard to imagine them also missing the fact that spring has not come, especially because what they paid for was a clone of a property with the tagline ‘winter is coming’, but they will find a way to screw that up too.</p>
<p>Fixing the seasons is as much the common thread of the series as anything.
The holidays being messed up is subtler, but it’s a detail that whispers in your ear as the book goes on and tells you what kind of universe you’re in.</p>
<p>Dragging Tam through the woods, and the experience of getting to town, has a lot of setup, which they skip and focus on the fight in town instead because it has more explosions.
The travel parts will be set in lush old growth forests like Game of Thrones, but this is a countryside that is decaying, hard, experiencing the end of time.
A better choice would be the sparse hills and smoky villages of Bergman’s Seventh Seal.</p>
<p>They’ll pay insufficient attention to bad crop yields in the first episode.
This blunts the impact of later palace settings like Tear and Caemlyn, where the wealthy are eating well in the middle of an agricultural collapse.</p>
<h2 id="the-nature-of-evil">The nature of evil</h2>
<p>At first blush this universe has a powerful, organized supernatural opponent who is responsible for everything bad.
It would be easy to fixate on that and amazon will.
In actual fact the first evil person we meet is Padan Fain, who is never exactly aligned with the shadow.
The first evil <em>place</em> we visit is Shadar Logoth, which is evil because bad people lived there, not because of the weakening seals.</p>
<p>The intentional blurring of cosmic evil and petty human corruption creates uncertainty about the nature of reality and what’s going on.
But showrunners with million dollar episode budgets don’t like uncertainty.</p>
<p>The Forsaken: at first they’re tales to frighten children, then a sort of demonology, and eventually powerful adversaries with specific military objectives.
But they’re also a link to the past, a way into the mechanics of reincarnation and history.
They possess well-intentioned arguments for joining the shadow, or at least for why they joined the shadow, and in a world where evil grants actual power that’s a scary kind of temptation.
I think amazon ignores all this, doesn’t even make them scary, just casts someone unlikable as Lanfear and calls it a day.</p>
<h2 id="good">Good</h2>
<p>The goodness of the good guys is also subtle.
It’s tempting with these things to lean on a ‘god is on our side, obviously’ argument for what justifies the use of force against the baddies.
But the creator, while getting talked about sometimes, is not a person that ever shows up, is not visibly opposed to the forces of darkness, and doesn’t tell anyone what to do.</p>
<p>Also, the people who are into him the most are the Whitecloaks, who unambiguously suck.
They provide I suppose a useful form of security, but with the same drawbacks as the Taliban.
It will be interesting to see how amazon threads the needle of ‘they’re on god’s side, and we’re on god’s side, but’.
It would be cheap to make them darkfriends from day 1.</p>
<p>Why does this matter for the show:
ironing out the moral uncertainty will be a disaster.
Oversimplifying people’s reasons for tagging along with Moiraine removes the layer of politics that makes this series more than Joseph Campbell fan-fiction.</p>
<p>amazon will present prophecy as commandments bearing absolute moral force which, let’s face it, is a successful way to manage a large workforce.
But the pinnacle of moral reasoning for most characters in this world is ‘not wind up in trolloc cookpots’.
Their ethics are fully ontological – they’re based on observed truth.
amazon will replace this with deontological ethics and drain the work of its moral force.</p>
<p>Some characters have sources of prophecy and instruction, but none are ‘good’ or even clear.
Moiraine and Mat overuse the twisted gateway, Mat has his partial memories, Elayne I think uses the twisted ring to find the bowl of winds.
Elaida sees the future once in a while but it’s awful and useless.
Trolloc prophecies are basically graffiti.</p>
<p>‘The wheel weaves as the wheel wills’ is an expression of fatalism, but the adaptation will make it a prayer.
(But they’ll ignore the actual prayers, see Tinkers section below).
The main belief all the people have is that the world has ended before, and is about to end again.
On TV, this will take a backseat to god-given faith and instruction.</p>
<p>They either leave Min out or make her a source of divine commands and assurance.
But she doesn’t provide information in the books. At best she can tell you ‘this is destiny, don’t resist’.
She can also do a sonogram I guess.</p>
<p>Min is basically cinderella mixed with some greek person.
The mix, and her access to information about the plot, is Jordan trying to tell you something about the nature of the universe.
If Min weren’t in the story she’d be a horn hero.
But amazon will go the CW route and make her a love interest with minor plot value as religious functionary.</p>
<p>amazon simplified an intentionally grey moral spectrum down to ‘believe and you’re on the team’.
That turns the quest into a process of conversion, and the characters into missionaries.</p>
<h2 id="the-magic-system">The magic system</h2>
<p>They’re going to make it chi, or energy in your body.
It’s going to be like airbender (not dissing it, it’s a good show) crossed with kung fu panda.</p>
<p>They’ll elide everything that’s personal and plot-related about the distinct abilities other <em>maybe</em> than the elements, which they’ll over-invest in (they can safely clone airbender; they know from server logs people watch that show a ton).
They’ll ignore the internal mental spaces that you have to access and control to learn this skill.
This is a disaster because the internal spaces are core philosophy for the series, and plot-relevant later on; stuff happens in them.</p>
<p>They won’t commit to the power leveling.
Moiraine isn’t as strong as the new generation; everything she’s capable of should be kind of small and shitty.
amazon would have done better to save the effects budget. Instead they’ll invest in spectacle in the first few episodes and make it hard to top later.</p>
<p>It <em>seems</em> like Logain will show his face?
Which means there’s an opportunity to drill into stilling / gentling – an opportunity they ignore.
Stilling is central to the politics of the Aes Sedai, the fear of it gets as much play as any other idea in the series, it’s the least weird of Jordan’s torture fantasies, and its strange mechanism is a world detail.
It’s relevant to the progress of 3 important characters.
But they’ll treat it as an afterthought.</p>
<p>Perrin isn’t a werewolf, but he will play one on TV.
He’s going to have teeth and nails in addition to eyes.
His book struggle is the loss of self and the call to violence.
It takes place in internal landscapes, and through forms of communication that replace language with vision.
Hard to translate, but even harder if you rely on latex practical effects to tell the story.
Jack Nicholson insisted on light makeup for his werewolf role.</p>
<p>More internal spaces they’ll ignore:
linking and the warder bond.
They’ll introduce Lan, do an ‘explain your powers’ scene about being a warder, and that’s it.
They’ll gloss over the element of mind control here, which should inform our reaction to compulsion later, and is relevant to Nynaeve.</p>
<h2 id="warrior-cults">Warrior cults</h2>
<p>Speaking of the warder bond: Lan is the first warder we meet and also kind of the ultimate warder.
His psychopathic coldness and immunity to fatigue and fear set up other characters and cultures where pain is part of the job description.
amazon will tone this down in an attempt to make it less pathological.
IMO this ruins Rand’s journey, and makes it hard for us to sympathize with the Aiel later.
It also defangs moments where Lan opens up.</p>
<p>One of my favorite books ever is Religious Mysticism and the Art of War by James Aho. I found it 5 footnotes deep in my college library and took copious, insane notes from it, ultimately turning them into three fourths of a now-abandoned novel.</p>
<p>The Wheel of Time is in a sense that novel. It drips with the history, literature and psychology of battle.
Jordan was obsessed with war. He collected weapons. He claimed these books were based mostly on War + Peace.
Understating Lan’s coldness and violence betrays that tone and squanders the power of the setting.
Beck Bennett nailed the thousand-yard stare in the SNL sketch about dead poet’s society.
The guy who plays Lan needs to copy it, but won’t.</p>
<p>War is also a key setting; count how many scenes take place in detailed military encampments, in pickets, in tents.
Amazon will stick to fancy buildings and quaint hobbity inns.</p>
<p>As they neglect the interior spaces of the magic system, so will they neglect the interior spaces of weapons training – the tricks Tam taught Rand for archery, which Lan then hones for swordcraft.
The commonality of the void says that skill at arms and magic power come, in a sense, from the same place.
Lose that and you lose the idea that infantry and wizards are equal comrades in a destined battle, that moral fortitude is honed through risk and conflict.</p>
<p>The Aes Sedai are also in a sense a warrior society; political yes, but also willing to fight.
amazon underplays the constant violence of their existence; they keep in the red vs blue and coup stuff, but lose the fact that this is everyday life or death struggle between the sisters.
The Aubrey Plaza nuns movie will have done a better job of conveying the civil war and shifting alliances of monastic life.</p>
<p>The horn heroes are not really a warrior society (they come from many cultures).
But the hunters for the horn are.
Watch amazon focus more on the horn than the hunters.
If they blow the horn it will be a a weta crowd effect, which, fuck weta crowd effects unless you’re using them to model livestock erosion on catalina.
There’s a reason none of the summoned heroes get real speaking roles over 10 thousand pages.</p>
<p>The horn is a comment on the reincarnation system and the nature of reality in this universe, but Birgitte, who is no longer a horn hero, and the hunters for the horn, including Faile, and their quest, and the pageantry in Tear and Illian, get more page space because they’re dynamic and changeable, because they represent a faith built on mystery rather than certainty.
Indiana Jones knew you have to leave the grail in the temple, and the quest is more important than the destination.
But amazon, like Sir Galahad the Chaste, will fetishize the thing itself and lose this thread.</p>
<h2 id="layered-cultures">Layered cultures</h2>
<p>Everything in the series is two things at once.
The different nations and cultures are <em>many</em> things at once.
Amazon will discover at best one of them, often zero.</p>
<p>For the Aiel, amazon will pick a desert culture, probably the Touaregs, and ignore the other influences.
That’s a shame because the Aiel, abandoned people living in an abandoned place, give the series its post-apocalyptic chops.
They also form the core of the moral code for a lot of the non-Aiel, particularly Rand, Elayne, Egwene.
amazon will focus on the ‘from god’ morality and completely neglect this one forged in adversity, in part because they’re uncomfortable with the glorification of pain.</p>
<p>Shienar. They’ll find a fortress city to copy but it will be the wrong one.
They’ll keep the harsh outer stones, but lose the warrior-poet mentality and the fancy castle interior aspects that Jordan stole intentionally from a range of cultures born to war.</p>
<p>The Tinkers are supposed to be colorful, angry and sad.
They mimic various real world cultures who wandered far from home; they are very definitely refugees.
They’re shrinking as their children leave the faith.
amazon misses this, which spoils a facet of another in-world culture who has a relationship to the tinkers.</p>
<p>Instead amazon goes straight CW on the Tinker section, makes it a love triangle between Egwene and Aram, doesn’t give veteran Elyas a voice to express the push-pull between pacifists and those who have fought on their behalf.
Amazon leaves out their dogs, their fear of the world, the importance of the ritual greeting and parting formulas.
Keep these in and you land an emotional hit on everyone from whose culture these lines are drawn.</p>
<p>The Whitecloaks have three very specific real-world references but amazon misses <em>all</em> of them and makes them I don’t know Templars or something.
And not even a woke portrayal of Templars, where you acknowledge their decadence and their fiscal relationship to the state.</p>
<p>The old tongue is already cringey in print and will be worse out loud.
If I were running this I’d assign a real earth language to each word, and get a native speaker to coach the pronunciation of it, but that’s just me.
Guessing they’ll instead go with ‘australians speaking american’ pronunciation per Peter Jackson and Kenneth Branagh.</p>
<p>The Ogier they portray as friendly giants.
In the books they’re walking encyclopedias, sad to tears about the loss of memory of the human world.
I wonder about their visual presentation; following the hair and features as described in print gets you to a weird but authentic place.
I hope bezos keeps their affinity for trees. If he doesn’t this adaptation is officially a tire fire.</p>
<p>Bayle Domon, collector extraordinaire who thinks deep thoughts about found artifacts and also is a lens into price inflation, isn’t featured at all.</p>
<h2 id="sex-love-rock--roll">Sex, love, rock & roll</h2>
<p>The Wheel of Time isn’t a romance novel until like book 4 at which point it embraces the genre with all its conventions, and goes a little heavy on the S&M.
(And Jordan started to run out of steam after book 4 so you could stop it there, or shortly after, following his original plan for the series).</p>
<p>The polygamy and the marriage customs will be hard to ignore on screen.
The focus on gender as a setting point is also tricky given how hard another fantasy series has had to work running interference for its author.</p>
<p>Equally tricky is the <em>lack</em> of sex in the first 2 or so books, which is trouble if you’re selling to the CW crowd and you believe the CW formula.
You could make Else Grinwell a main character, tagging along and getting into hijinks with her dad close behind to get mad?
I wouldn’t hate this tbh.</p>
<p>Also, music – Thom gives the kids his instruments and they wander all around performing for food.
Peter Jackson left out the songs I think? (I saw parts of the first one but a long time ago).
There’s a cringey and wonderful fan album called ‘an evening in rivendell’ where someone set a few of them to music.
All the Wheel of Time songs are like ‘they requested momma stole my bucket, but they know it here as dead dying dead, and the lyrics made him blush’.
There are also the war songs, like wash the spears, which I hope they find a way to keep.</p>
<h2 id="dreams">Dreams</h2>
<p>Dreams carry a lot of the load of the setting.
They’re a component of the magic system.
They host visitations and reveal things.
The world of dreams has rules which are relevant in the fights, but amazon will fail to set them up.</p>
<p>The kids’ Baalzamon dreams are easy to get right because you just copy nightmare on elm street, shot for shot.
(It’s fairly clear that’s what Jordan did).
amazon will fuck this up and dress him like Lestrade from that Anne Rice book.</p>
<p>It feels weird to be in the dream world, suspicious. amazon will mess this up.
I haven’t seen Drop Dead Fred since I was a kid but I imagine you could copy the drugged-up part of that and you’d do fine. (Cast Phoebe Cates as Lanfear or Moghedien while you’re at it, that would be weeeeird for people who grew up in the 80s and incredibly cool).
The person-to-person dreams happen in a neat internal landscape and they will neglect this, as they neglect all the internal mental landscapes.</p>
<p>The series takes place in a world of echoes and decaying walls.
The dream world is one of the places where those qualities are conveyed directly, along with the portal stones and the waygates.
They’ll flub it, it will just be candy, like the ‘what dreams may come’ trailer where everything is edible diarrhea.</p>
<p>The world of dreams is also a forgotten thing being rediscovered, like the one power itself, like technology and history.
And it’s correlated sometimes but not always with the one power, which is an important detail.
They won’t adequately distinguish between waking-world magic and the ability to use dreams; they’ll just be like ‘go find a teacher Egwene’.</p>
<h2 id="nynaeve">Nynaeve</h2>
<p>Her block is a major psych issue.
They’ll keep the plot structure of getting rid of it, but miss the frustration, the fact that she’s damaged.
It’s supposed to mar her power and reduce her social status.
It makes her less than Egwene despite being stronger.
It’s easy to transform her emotional issues into a gag, and it is a gag in the book, but it’s also the only real emotional problem that isn’t polygamy-themed, and passes the Bechdel test (for a while).</p>
<p>Her relationship to surrender is a real thing that people deal with as they grow up and learn to sublimate their ego into a larger group.
amazon will, unfortunately, establish her strength of will in the first episode and lean on that rather than breaking her down.</p>
<h2 id="conclusions-if-any">Conclusions, if any</h2>
<p>I <em>did</em> see amazon’s good omens adaptation, another book I loved as a kid.
More accurately, I saw the first 15 seconds of it and turned it off in a panic.
I didn’t want the narrator to rewrite my tone-memory of ‘the earth is a libra’.</p>
<p>Adaptations are hard because they betray our imagination.
They alter the tone, they lower the density of ideas, they zoom out details and sometimes drop the wrong ones.</p>
<p>TV is expensive and high-risk; someone managing a million dollar per episode TV show that has to make money over 4 years has less leeway to take risks than a nearly-retired author in his den full of swords and VHS tapes in 1981.</p>
<p>Bradley Cooper is going full Jodorowsky on Hyperion, another great 80s-90s book, and another thing with a lot of details that sum to a whole, and which will be hard to compress into a script.
Good luck to him.
If it were me I would first adapt Phases of Gravity, which is great, only matters to adults, is in many ways the same book.</p>
<p>I guess the new DUNC (which I also won’t see) is doing well?
That’s an adaptation.
And Dune the novel is basically an adaptation, and the Wheel of Time is in some ways an adaptation of Dune.</p>
<p>That’s to say that adaptations aren’t all bad.
But this one is of something I deeply love, so it will be.
Enjoy.</p>
<script async="" defer="" src="https://cdn.simpleanalytics.io/hello.js"></script>
<noscript><img src="https://api.simpleanalytics.io/hello.gif" alt="" /></noscript>Abe WinterTomorrow amazon’s Wheel of Time adaptation drops. TV reviewing isn’t my normal wheelhouse, but a guy died trying to finish something I loved as a kid, and if I have to step up to defend his vision, so be it.