In Defense of Anagorism

political economy in the non-market, non-state sector

Author: Lorraine Lee

  • Quotebag #127

    Aral Balkan:
    Whoever you are, wherever you are, we have a common enemy: the nationalist international.
    Heather Marsh:
    Most systems are now run by competitive organizations. Competition creates redundancy, is slow and wastes resources on idea protection, advertisement, and more. Competition also requires secrecy which blocks progress and auditing and causes lost opportunities and ideas.
    Michael O. Church:
    At a nuclear or higher technology level, post-scarcity automated luxury communism is the only economic system that stands a chance, and we should race to it.
    Red Mike:
    Every job I’ve ever had has required me to do things and behave in ways I am not comfortable doing, and I don’t think this is unique or rare, its just that the Slasher is an extreme case.
    The Fool:
    A society free of exploitation and extortion means that nobody gets rich.
  • Right livelihood is an oxymoron

    I long ago gave up on “right livelihood,” concluding that it’s literally an oxymoron. This is of a piece with my conclusion that there is no possibility of monetization without value subtraction. Consquently, I’ve concluded that the least pro-social jobs are probably those dues-paying jobs for people starting out in some hypercompetitive white collar field such as financial trading or biglaw, which basically amount to hazing by sleep deprivation, and even more importantly (I think), systematic elimination of leisure time from waking hours. I think it should probably be considered a form of brainwashing. The effective altruism community mantra about it taking 10,000 hours to level up to an 80,000-hour career, I’m guessing, can only make matters worse.

    But I’m a generation X slacker, so what do I know?

  • “But automation creates jobs…better jobs”

    It’s (by definition) not labor-saving technology if more jobs are created than destroyed. The problem with “level up” as a strategy for dealing with it is that the jobs to be “leveled up” to are fewer in number, so it takes a much larger GDP to support the same number of jobs. A red queen race, or perhaps a pyramid scheme, to maintain employment levels. Or a constantly raising bar for workers (and race to the bottom for standards) if we don’t.

  • The meek won’t be inheriting the earth any time soon

    COVID-19’s effects on media (and on the national Zeitgeist) are reminiscent of those of 9/11. The media have gone into full hero-worship mode, and the professions hailed as heroic are precisely the professions whose vetting process is basically hazing—the military, the police, the firefighters, the doctors and the nurses. Put another way, shit hitting fans in dramatic world-changing ways is the diametric opposite of Jesus’ prophecy about the meek inheriting the earth.

  • Standards Bloat is a thing

    As I see it, the job of a HTTP client (browser) is to correctly implement the open standards that define the web, no more and no less.

    I’m political enough about open source that I’ll endure a fair amount of inconvenience in order to avoid proprietary (or even commercial) software, but I also disagree on most points with the direction Firefox has been going, especially with UI and extensions. Maybe being political about open source is an empty gesture like fair trade coffee. It certainly seems sometimes like Firefox is an example of openwashing, which is scary, as browsers are basically the key underlying technology of the web, and the HTTP/HTML/CSS/Javascript standard is getting complex enough that only a multigazillion dollar organization can build a web browser (in particular, a rendering engine) from scratch that correctly implements the standards. I used to laud the idea of industry standards, as I saw them as the correct alternative to proprietary kludges becoming de-facto standards, but since the bodies making the standards are basically industry consortia, or organizations whose members are organizations (mostly of the for-profit type), what standards-making has turned into is a conspiracy of the commercial participants against the noncommercial participants.

  • Preferentially use noncommercial or DIY media

    This post was originally a comment to /u/DarSakhar’s Reddit post, If, for some unknown reason, this subreddit disappeared completely one day, how would you connect with other AnComs?

    In general, choose DIY platforms over commercial platforms. Choose blogging over social media, and if possible self-host a blog (or other type of web site) rather than go with a blog-platform-in-a-can like Blogger or WordPress-dot-com.

    Admittedly, I still use commercial social media, as evidenced by the present comment. There are some audiences that I’ll never, ever reach except through social media. I wouldn’t necessarily recommend muting your voice just to say you’re boycotting social media. But one practice I have adopted is, if I notice that I’ve put a fair amount of effort into a post or comment on social media, I immediately copypaste it into my now-self-hosted blog. I want the public domain to have my best work.

  • I am an anti-market anarchist.

    I am not a mutualist. I was first exposed to neo-mutualist ideas via the C4SS blog. I refer to myself as an “anagorist,” a term I coined back in 2010 as my take on agorism; a philosophical designation that, along with mutualism, is popular with the C4SS crowd. My reasons for being anti-market are actually quite visceral. In a market economy one has to market oneself. To say that marketing is my weak suit would be a massive understatement. Virtually every problem I have in life stems either from my tendency to stutter in job interviews or to pay retail because I can’t/won’t haggle over prices. It seems self-evident to me that getting the most out of market exchanges is a skill set, and that skill levels vary between individuals. I see know way around such skill inequalities resulting in social hierarchies.

    The C4SS people and other mutualists talk a good game about worker-owned cooperatives, but assume competition between cooperatives. I do understand that competition and cooperation are not mutually exclusive and can co-exist, but I don’t see this as a good thing. In capitalism, workers are expected to cooperate with their co-workers while competing with colleagues in competing firms. I don’t believe the latter competition brings out the best in products or people. It leads to inefficiency, such as when workers in one firm re-invent something the other firm has, possibly without even knowing it, thanks to enforcement of knowledge silos. The abolition of intellectual property (something the mutualists, to their credit, favor) would not eliminate that particular inefficiency. That would require the abolition of competition.

    The nuclear option in the mutualists’ arsenal of arguments against anagorism (or the equivalent by another name) is the so-called calculation argument of Mises and Hayek. Which reminds me, another pet peeve I have with C4SS that they love quoting right wing philosophers like Mises, Hayek, Nozick, etc., and linking to websites of pro-business think tanks like Mises Institute, Foundation for Economic Education, etc.

    My main philosophical project as an anagorist is to develop a strong rebuttal to the calculation argument. I find this quite challenging, as I find the calculation argument quite compelling, even though of course I’m committed to opposition against it. My thoughts on how to build a non-market, non-command economy are summarized in a two-post series using a rubric I call “angel economics.” The basic idea is to build the new allocation mechanism within the shell of the old (the old one being the market) by reverse engineering the market.

    While a strong case can be made for price signals in a market being very information-rich, I don’t buy the claim that prices incorporate all information, or even all information that people need in order to make intelligent economic decisions. A price is a scalar quantity, literally a single number. One simply does not reduce dimensionality (such as from vector to scalar quantities) without loss of information. If scary-smart feats of allocation efficiency can be achieved by revealed preference (and I do buy that claim concerning markets) then certainly far more efficiency can be realized with explicit communication of preferences. Parecon (participatory economics) is an attempt to give people an opportunity to express their producer and consumer utility explicitly. Hopefully angel economics can take that farther.

  • Personality testing as human resources practice is indefensible

    As cases against psych-screening go, this article by Cathy O’Neil in Bloomberg View seems pretty weak sauce, but I understand that change requires some subset of change agents to be working within the system.

    “Maybe all employers really want is a tool to help them reduce the huge pool of applications they receive for any given position.” Maybe. “Whether or not personality tests actually work, they fulfill that basic requirement.” But so would randomized selection of a small number of names from a huge hat full of applications, and would cost astronomically less. An explanation that requires less suspension of disbelief than personality tests as winnowing tool is personality tests as weapon of intimidation. Certainly everyone who has taken one (basically 100% of people below “professional”-level career status) has noticed that the typical multiple choice exam question has one answer that has unmistakable pro-business (i.e. politically conservative) implications and n-1 answers that are patently absurd. They could also tell you about infantilizing surveys that communicate that the employer is of the opinion that the applicant pool is a population that’s oblivious to the importance of coming to work on time, being sober and not committing embezzlement, and therefore each applicant needs to be quizzed on those subjects multiple times just to drive home the point. Employers personality-screen prospective employees because they can. I doubt employers care whether the submissiveness score surveys have positive or negative ROI. Employers (and their toadies in HR) enjoy the power they have over workers. They get their kicks watching people squirm, watching the tears well up in the face of someone trying to decide whether the opportunity to be considered for maybe being hired is worth grovelling in submission. The love of power is as intrinsic to the nature of employers as the love of stinging frogs is to the nature of scorpions. The psych tests are but one speed bump along a long gauntlet of indignities that is every sub-yuppie-status application process.

    For the next few months I will use the Bloomberg article as a textbook example of why non-radical critique is an oxymoron. Good luck with hoping appeals to employer self-interest (let alone their better nature) will lead to a reduction in these human rights abuses.

  • A simple CGI example in Scheme

    This example is tested with Guile 1.8.8, a nice lightweight open-source Scheme. The string-split function is not part of the RSR5 standard, but shouldn’t be too hard to hand-code. I found a ready-made one, but apparently that one requires a single character split expression to be “listed,” which is to say, in the code below, #\= would be replaced by '(#\=). As is always the case setting up new languages for CGI access, there is a need to tweak /etc/apache2/httpd.conf. This is what I’m running with:

    LoadModule cgi_module modules/mod_cgi.so
    ScriptAlias /cgi-bin/ /var/www/perl/
    AddHandler cgi-script .cgi .pl .scm
    
    <Directory "/var/www/perl/">
    Options +ExecCGI
    </Directory>
    
    <Directory "/var/www/scheme/">
    Options +ExecCGI
    </Directory>
    
    

    The Scheme script is pretty trivial. Its task is to display the environment variables and their values as a table. Here is the script:

    #!/usr/bin/guile -s
    !#
    
    
    ; Convert an element of the return value of (environ), which is a single string
    ; in which the #\= character separates key and value, to a pair in which the
    ; key is the car (suitable for lookup via assoc) and the value is the cdr.  If
    ; the string contains more than one #\=, only the first one is a delimiter;
    ; hence re-joining the cdr of the result of string-split.
    (define (assocify equate-string)
     (let ((stuff (string-split equate-string #\=)))
      (cons (car stuff) (string-join (cdr stuff) "="))))
    
    
    
    ; Return the value of the environment variable QUERY_STRING
    (define (query-string)
     (cdr (assoc "QUERY_STRING" (map assocify (environ)))))
    
    
    
    ; Escape out angle brackets in text.  This of course needs to be modified to
    ; cover all escapable characters.
    (define (deangulate text)
     (string-join (string-split (string-join (string-split text #\<) "&lt;") #\>) "&gt;"))
    
    
    
    ; Output one table row, containing an environment variable in the first column
    ; and its value in the right column.
    (define (display-environment-row key-value-pair)
     (let ((key (car key-value-pair)) (value (cdr key-value-pair)))
      (display "<tr><th>")
      (display key)
      (display "</th><td>")
      (display (deangulate value))
      (display "</td></tr>\n")))
    
    
    
    ; Output a table containing all of the environment variables and their values.
    (define (display-environment-table title)
     (display "<table>\n<caption>")
     (display title)
     (display "</caption>\n<thead>\n<tr><th>varable</th><th>value</th></tr>\n</thead>\n")
     (display "<tbody>\n")
     (let ((environment-assoc-list (map assocify (environ))))
      (for-each display-environment-row environment-assoc-list))
     (display "</tbody>\n")
     (display "</table>\n"))
      
    
    
    ; Output a <head> element for our web page.
    (define (display-head title)
     (display "<head>\n")
     (display "<meta http-equiv=\"Content-type\" content=\"text/html;charset=UTF-8\" />\n")
     (display "<link rel=\"stylesheet\" href=\"/scheme/cgi-test.css\" type=\"text/css\" />\n")
     (display "<title>")
     (display title)
     (display "</title>\n")
     (display "</head>\n"))
    
    
    
    ; Output the <body> element for our web page, which contains a table listing
    ; the environment variables and their values.
    (define (display-body title)
     (display "<body>\n")
     (display-environment-table title)
     (display "</body>\n"))
    
    
    
    ; Output a complete web page.
    (define (display-document title)
     (display "Content-type: text/html\n\n")
     (display "<!DOCTYPE HTML>\n")
     (display-head title)
     (display-body title)
     (display "</html>\n"))
    
    
    
    ; The function call that does it all:
    (display-document "Hello, world!")
    
    

    Below is a screenshot. Notice the slash after the filename (cgi-test.scm), and how this is reflected in the value of REQUEST_URI. Also note the GET parameters, reflected in both REQUEST_URI and QUERY_STRING.