An occasional update of what I’m reading: – Corey Robin on political fear – The purpose of Trumpism – Trump and Watergate – Structural causes of the racial wealth gap – Comparison of Trump and Hitler – The Reichstag fire – Malfunctinoning Senate – Presidential authority over immigration – Trump is a petty loser – Fuck the #nevertrumpers – Some history of the AEA – Trump and the fascist aesthetic
The first weeks of the Trump administration bring to mind a term inherited from the previous era when a Republican occupied the White House: shock and awe. It has been the modus operandi of Trump, and particularly of his “deputy” Steve Bannon, to maintain a virtually uninterrupted assault on what are generally considered the pillars of the American liberal order. Whether it’s the don’t-call-it-a-ban-on-Muslims ban on Muslims or the refusal to accept decrees from federal courts or the reorganization of the National Security Council or the ranting calls to foreign leaders, the constellation of these actions appears designed primarily to overwhelm and exhaust.
Concomitant with this barrage, we have seen a proliferation of thinkpieces whose intent is to try and decipher what exactly all this means. A prominent example of the genre was a piece by Yonatan Zunger suggesting that Trump’s recent actions represent a “trial balloon for a coup.” Other posts have floated around suggesting that the various executive orders are merely “headfakes” to take our eyes off something more important. I don’t want to get too deep into the analysis, which I don’t think holds up all that well; what I’m more interested is the psychology and rhetoric behind such pieces and the intellectual current they represent.
The problem, ultimately, with all of these articles is not that they attribute excessive malice to Trump et al. but that they engage in torturous reasoning to do so. The chain of logic is strongly reminiscent of the conspiratorial theorizing exhibited by the subjects of Richard Hofstadter’s seminal essay, “The Paranoid Style in American Politics”: the enemy is always a twisted genius, constantly outhinking the simple citizen. If the conservative solution to this problem is purity of heart and spirit, the liberal counterpart is the teasing out of every possible thread of causailty until the web of intrigue is unraveled. Conservatives are the daytime soap opera and liberals are the police procedural. This tendency speaks to the state of the liberal intellectual order: deprived of any actual influence over policy, it finds comfort in the “secret knowledge” afforded by deciphering the allegedly-complex puzzles presented by its enemies. As Matt Christman noted on a recent episode of Chapo Trap House, all we had left during the Bush years was our ability to know we were being had, and now even that is in danger of disappearing. So liberal commentators engage in the pursuit of an esoteric knowledge that does not exist and wouldn’t actually illuminate anything even if it did.
Sometimes, of course, there really is a web to be unraveled; actual conspiracies do happen, after all. But typically, the unraveling comes after the fact and is driven by uncovering what actually happened. Real conspiracies are invariably banal and straightforward and the main mystery to be solved consists of finding out what the principals want to conceal. The attempts to forecast Trump’s and Bannon’s actions, on the other hand, are prospective and are predicated on the assumption that the actors involved have a complex, multi-phase plan that they are carrying out.
The evidence for such a plan is virtually nonexistent, and indeed, it would make very little sense for such a plan to exist, or for the people ostensibly carrying it out to believe that it would actually work. The reason is simple: plans are good for situations where your opponents’ moves are strongly constrained and can be reasonably predicted in advance. Politics notably does not fit this schema: even zero-order predictions of how a policy will be received are proven wrong all the time, much less any higher-order effects. The reactions of political opponents also cannot be predicted, nor informational secrecy insured; the ship of state is constantly leaking, and never more so than when the government is as unpopular as Trump’s. Even if some secret plan existed on a whiteboard in a secret office, it would be delusional of its designers to think that it could actually work. Which is not to say that Trump is not delusional, but rather that we should not attribute to delusions the character of actually feasible master plans.
The disadvantage under this administration operates, in this day in which information literally travels at the speed of light, is that by the time anything has been planned it will very likely already have been made public. There is a large and experienced cadre of legal analysts in American society who are more than equipped to properly parse things like executive orders, so that five minutes after something becomes public, we can expect a pretty good analysis of its actual effects. In such an environment, multi-phase long-term plans that rely on successive stages of implementation would be useless: any meaning that can be read into a public document can almost certainly be read out of it, and such things have to be public in order to actually take effect.
All of which is not to be confused with the message being broadcast by some institutionalists that consists more or less of “don’t worry.” Do worry, but worry about the right thing. The people running the Trump administration are not particularly smart, but they do exhibit a certain animal cunning. In this, they are very much like the authoritarian regimes they tend to admire; such regimes have only a few ways of influencing people, typically either by trying to build support through mass media, or by visiting violence on their opponents. The tools at their disposal are actually very crude, which in my view is much more of a reason to be concerned, because history suggests that when the gentler methods of persuasion fail, Trump and Bannon will gladly move on to violence.
Trump is barreling into the teeth of the American institutional order because that is all that he understands. The various cranks and lunatics who work for him are not people who have bothered to spend any time comprehending how anything actually works; they only understand the language of domination. In this they are of course the distilled id of the Republican party, the culmination of a decades-long process of purposeful self-stupefaction in the service of revanchist ethno-nationalism and looter capitalism. Having hollowed out the pillars that hold up the country, they are now running into them head-first, intending to topple them entirely. Were they more subtle, we might have more to be concerned about the continuing erosion of these pillars in more circumspect ways (c.f. John Roberts), but subtelty is not a thing that they are either spiritually or philosophically or constitutionally capable of.
What we should concern ourselves with is not hypothetical twelve-steps-removed manipulations but the outright violence that is being worked first on actual living human beings and second on protective American institutions. Any effective confrontation with Trump has to start from those positions. But we also need to recognize that the danger we are fighting is not remote; it does not exist at multiple stages of remove from our current situation, stages that are decipherable only by some analytical priesthood. On the contrary, the sequence of steps is very clear and publicly visible to anyone who is willing to take a few minutes to gaze into the abyss. Sooner or later, whatever plans exist in Bannon’s fevered imagination will come in contact with reality, at which point the question of the degree to which the American state is willing to do violence to its political opponents1 will become paramount and the protective constraints will either hold or buckle. Which is to say that Trump’s actions are not so much the “trial balloon for a coup,” as they are just the coup itself.
Which is, of course, quite high already, especially for anyone who isn’t white, straight, and male. ↩
I started responding to this piece by Emma Green on Facebook and before I knew I had written several hundred words, at which point I decided this would be better as a blog post.
I feel like this article asks the wrong question, and the reason it does so is that in American terms, “whiteness” has become a proxy for “legitimate member of the body politic.” This formulation makes sense in some ways because the cleavage between white and non-white has been the enduring fault line running through American history. But it’s also short-sighted because until very recently (in historical terms) people whose skin color wasn’t really a contestable issue as such (e.g. the Irish) didn’t really “count” as “white”; their integration into the mainstream of American society was accompanied by a sort of retroactive granting of whiteness while European racial divisions remained as fraught as ever.
Jews never properly fit into this dynamic; the author gropes at this problem but fails to apprehend it because, again, the framework she’s working from is the American framework of “whiteness” and “color.” But the knock on Jews was never that they weren’t “white” or even, I think, particularly that they were somehow racially flawed as such; that was Hitler’s particular innovation but again, there’s a lot of recency bias here making us think that it was always this way. But if you take a much broader historical view, one of the things that comes up, for example, is Christians using “Jew” as a broad category for “alien,” even in contexts where there were not even any actual Jews around to reference. The racist pseudo-science of the 19th century allowed for the possibility of grafting these views onto what was then perceived as “biological reality” but I think this was a convenient fusion of disparate streams of thought.
A much better framework for understanding this would be to read something like “Two Hundred Years Together,” Solzhenitsyn’s deeply anti-Semitic and yet also non-fascist history of Russian-Jewish relations. It’s not that Solzhenitsyn wants to send the Jews to the death camps or thinks they’re vermin, it’s that he fundamentally doesn’t believe that they can truly be at home within a Christian society. There’s more than a little parasite/host metaphor going on there, but the crucial point for me is that it operates in the long-standing tradition of viewing “Jewish” as synonymous with “fundamentally Other.” What could be more Other than the Wandering Jew, cursed with immortality for taunting Jesus and unable to find a home in any country of the world? The Jew’s fundamental rootlessness means that he can never truly be a citizen of anywhere, which is why it makes sense that many Jewish socialists and communists were purged by the USSR under the guise of being “rootless cosmopolitans,” who can’t possibly be trusted to be good citizens.
Viewed through this historical and trans-national lens, I think the question becomes not “are Jews white?” but rather “can Jews fundamentally belong to any place at all?” Or, for me as a Jew, the question is “can we ever have something other than provisional acceptance as Jews?” Because as we’re seeing, what can be made white can be made un-white (unmade white?) as long as the conception of the Jew as alien continues to underlie mainstream society’s attitude towards Jews.
David Brooks is trash. This is so obviously the case that I will spend no time whatsoever proving it, except to link to his latest piece which equivocates between social democracy and the “alt-right,” or as we like to call it here in the literate world, fascism.
David Brooks being trash leads to an obvious question: what the fuck is he doing on the New York Times masthead? Who is so deeply invested in having him on board that they are willing to tolerate unceasing ridicule for it? It’s impossible to say for certain, of course, but I have a thesis.
Before I get to it, it’s important to point out that Brooks has virtually no qualifications to comment on anything; he owes his current position to nothing more than a moderate intelligence and a talent for social climbing. A child of two comfortable academics, he attended the University of Chicago where he begged William Buckley for a job via satirical sketch (no, really). He worked the crime beat for a local news service for a bit and then interned for the National Review; he also spent some time at the Hoover Institution. His only real job involved being editor of the book review for the Wall Street Journal, after which he promptly switched to the opinion page, where he pretty much has remained ever since. Brooks’ only qualifications for doing so involve being a “conservative commentator” of impeccable lineage, which is to say that he did time on the wingnut welfare circuit just like all the other washouts and losers who constitute the conservative “intellectual class.”
During his stint at the Times, which is ongoing from 2003, Brooks has repeatedly proven himself to be a howling void of thought, incapable of engaging on a serious and direct level with any idea he doesn’t already hold. His sociology is risible, and his lack of self-awareness is legendary; this is, after all, the man who unironically taught a class at Yale on the subject of humility and assigned them his own columns. His one constant is the rhetorical trick of always taking the most centrist position of milquetoast liberalism and the most insane positions of the right wing, splitting the difference, and then planting himself firmly in the “center” of political discourse that he has just engineered out of nowhere.
Again, what purpose does this serve? Who is actually moved by this? The answer, I think, is twofold: one is that David Brooks has the job that he has not because of any special qualifications (as shown above, he has none) or any critical capacity for insight (ditto) but rather because he knows the right people. Brooks went to the same schools they went to, interned at the “correct” magazines (in the upper echelons of boomer liberalism the National Review is incorrectly considered to have intellectual value), and has held the “correct” positions at more mainstream publications. That he is a waste of space doesn’t matter to anyone; once you ascend sufficiently high in this world, you can never fail out of it. No number of terrible columns or terrible books or terrible classes taught will ever disqualify Brooks from his post. His defenders will always shrug and point to his publication record, as though bylines and one’s name on a book jacket were more important than the actual work. In that sense, Brooks’ social value consists entirely of demonstrating how chummy quasi-nepotism and speaking the language of the elites is more important than one’s actual intellectual contributions.
The second answer is that Brooks remains a kind of lodestar for a certain class of Times reader: the relatively affluent, centrist (maybe even center-left) boomer, who of course does not at all go in for the vulgarity of a Trump, but finds protests by black people over their arbitrary murder at the hands of police just a bit too gauche. Brooks is their safe space, ready at all times to validate their fears of the masses they imagine must be assembled with torches and pitchforks right outside their castle gates. This goes double for Brooks’ liberal readers: they get to paint themselves as “openminded” and “willing to listen to the other side” by reading a man who will gently mock their bourgeois-liberal sensibilities while serving as a stalking-horse for your standard loot-the-country-and-fuck-the-poor Republicanism. Brooks provides the illusion of dissent which merely reinforces the circumscribing of acceptable political opinions into a boundary that just barely includes the center-left but mostly caters to the right. This works out very well for the center-left leadership of the Times, which cements its claims to “legitimacy” by employing obvious cranks like Brooks as a sop to the right while at the same time punching hard to the left to avoid any serious criticism of its own role in our coming nightmare. The twin poles of managerial liberalism and center-right culture-shaming generate between them a kind of affective niche occupied by the Times that it then markets to its readers.
David Brooks is trash, but he wouldn’t have a job if some other people weren’t socially predisposed to hiring him for frivolous reasons. Which is also why he’s going to keep that job until they carry him out of his office (real or metaphorical) feet first, and why we’re going to be reading his therapy notes in the form of thinly veiled columns about his divorce throughout the Trumpocalypse.
So, that really happened.
I had previously been working on a different piece that I had hoped to post this week but the outcome of the election and the realization that we will all soon be living under a one-party state interrupted that particular line of work.
Instead, I suppose the thing to do is to reflect, as intelligently as one can manage under these circumstances, on the path that brought us here. We might ask with Herzen, “Who is to blame?” but the catalogue of failures is almost too large to comprehend. Was there a failure of the media to take seriously the manifest danger of a Trump presidency? What about the strategic incompetence of the Clinton campaign? The FBI, flexing its deep state muscles on the eve of an election in which late deciders broke overwhelmingly for Trump? The Republican party, which for decades has groomed its voters to be receptive to conspiracist ideation and authoritarian leadership? The Democrats, who in doggedly pursuing a neoliberal economic policy had foreclosed on the possibility of a genuine left populism? The voters themselves, some for ignoring or wishing away Trump’s extremism and others for openly abetting and aiding it? Yes, all of these and more besides.
In the wake of this historic event, we are left standing amidst a pile of ruins after a cataclysm, sorting through the wreckage to try and understand where it came from and what drove it. For the more privileged among us, every day feels like an altered reality in which all of the things we thought were true are not just false but fundamentally incomprehensible; the frameworks by which we understand the world seem inapplicable. For anyone belonging to a sexual, religious, or racial minority group, the concerns are much more immediate: waves of violence and harassment have already broken out, as literal fascists come out of the woodwork, emboldened by the triumph of their Fuhrer.
There will surely be recriminations and autopsies aplenty; it is not clear to me that the responsible parties will learn anything from them. On the one hand, as I write this, even arch-establishmentarian Chuck Schumer endorses Keith Ellison (championed by Bernie Sanders) to lead the DNC. On the other hand, there are rumors that Chelsea Clinton, of all people, is being groomed for a run for Congress in suburban New York. This election ought to serve as a wholesale repudiation of Clintonian Third Way-ism, but its grip on the party’s affect, inclination, intellectual underpinnings, and ideology is far from being decisively loosed.
I don’t wish to spend much time rehashing the various arguments here. There will be ample opportunity to do so in the coming weeks. With unified control of the federal government, Republicans will be able to finally implement their fully destructive agenda in a way that we have never seen before. Any advances made in the previous 8 years, if we’re optimistic, and actually the last three decades if we’re realistic (let’s not say what we think if we’re being pessimistic) will be undone decisively. More than that, as it is easier to destroy than to build, the basic institutions that ensure the adequate functioning of governments at the federal, state, and local level will be dismantled. It’s easy enough to point to the obvious horrors of putting a climate denier in charge of the EPA or Ben Carson in charge of Education. Sarah Palin will duly sell off the national parks as head of Interior. But the real damage is going to be done not by top-level department heads, but by the legislative destruction that a Republican legislature sending bills to a Republican president can work. Civil rights, unions, reproductive rights, regulatory frameworks, taxes, environmental protections: all of these things are either going to vanish or be weakened beyond usefulness. Putting them back together is going to be the work of a lifetime. The institutions that even make resistance to this possible will be fatally compromised, and Republicans are going to do their best to dismantle civil society so that we are reduced to a nation of serfs. The new feudalism is here.
We have seen a preview of what this looks like from observing Kansas under Sam Brownback for the last several years. Now we’re going to see what this mode of governance produces when applied to an entire country. Perhaps its effects will be so devastating that the electorate, further demographically altered in another two or four years, will reject it, but pinning our hopes on that would be expecting too much. It’s clear that opposition will have to come from the ground level, and that means it will have to be organized for resistance. That is our collective task for the foreseeable future.
Last year, I stumbled across a project by an Italian artist named Gianluca Gimini in which he asked people to draw what they think a bike looks like and then digitally rendered the result. It’s really neat and worth taking a look at; as a cyclist, several things jumped out at me immediately. The first was that most people don’t really seem to have any good conception of what a bike frame looks like, and the second is that they don’t actually know how bikes work. A lot of these drawings have the chain either attached in the entirely wrong place or depicted in a configuration that would almost certainly fail to work correctly.
People of course make this mistake not because they’re stupid but because they are unfamiliar with the details of bicycle mechanics. I suspect most people don’t ever think too much about how bicycles actually move, but hopefully if they do, they quickly realize that in order for the bike to actually move, the rotation of the pedals has to be coupled to the rotation of the wheels via the chain. The chain is really a key component, but many people left it off entirely or misunderstood its purpose.
Which is all to say: thinking mechanically is hard. Even for a simple system like a bike, it’s actually quite difficult, if only because it requires people to traverse a particular chain of potentially unfamiliar thought. It requires one to think carefully about what each component in the system is for: what function it fulfills and how it relates to the other components of the system. Most people are not used to working through a complex sequence of causal mechanisms in this way, but when the mechanisms in question power a bike, you get by more or less on instinct. It’s when the mechanisms become more complicated that the troubles begin.
Ask an ordinary person, even a reasonably educated one, to draw you even an approximate diagrammatic representation of how the federal government (or state, or local, doesn’t matter; I’m rolling with the federal example for now), and probably the modal reaction will be great confusion. Likely most people can figure out that the president is somewhere on top. There will also be a circle that represents the legislature (two circles for the two chambers if the respondent really paid attention in civics class) and those with some degree of political awareness will also include the Supreme Court, although the mechanism of its interaction with the other two branches will evade most. The vast federal bureaucracy that exists under the auspices of the executive branch will not be present; if any executive agency even appears, it won’t have any relation to any other part of the government. I can’t imagine any significant fraction of people would know anything about such minutia as House or Senate committees or the operations of the lower courts. Describing the interactions of these various actors with each other is also likely to be beyond almost all of them.
Again, this is not because people are stupid: it’s because the details of how the government operates are extremely boring and also vastly complicated. This is sometimes lost when one’s social network consists of politically informed people who genuinely find politics interesting. To most people, even people with advanced educations, policy discussions sound like that “wah wah” noise the adults in the Peanuts comics make.
Maybe none of this would matter so much if what was at stake was something as simple as voting. I’m of the opinion that parties are useful as information aggregators that abet the functioning of cognitive heuristics, so it’s not as though ignorance of the mechanics of government would render people unable to make voting decisions. But this ignorance does have serious consequences for political rhetoric and thought. Faced with a problem of overwhelming complexity, people do not take the time to think mechanically through disparate pieces of evidence and arrange them into a coherent whole. Rather, people lean on various cognitive heuristics and biases to arrive, via motivated reasoning, at conclusions in agreement with whatever positions they already hold. This phenomenon presents itself across the political spectrum; perhaps the most recent and salient example on the left was the insistence by many Sanders supporters that his candidacy had the potential to usher in a fundamental political revolution. As someone who supported Sanders and voted for him, and who is generally quite closely aligned with him on most issues, I found these declarations to be downright delusional. They could only have been made by people who had but the vaguest ideas of how an administrative behemoth like the United States federal government actually functioned. What was missing in these declarations was any causal process that would lead to the promised transformation, and the missing spaces were filled in with magical thinking.
If the left was delusional about the promises of a Sanders presidency, then the right is delusional about… everything else. The conspiracist swamp in which the American right baptizes itself daily is home to a menagerie of monsters, from Agenda 21 to the ZOG. Routine operations of government are seen not for what they are (mostly boring administrative paper-pushing with occasional attempts to accomplish something), but rather as sinister operations to undermine the country. The most anodyne processes are endowed with occult implications; that bike lane is just a precursor for the invasion of the UN blue helmets, and don’t let any egghead intellectual tell you different. The left’s fault may be excessive wishful thinking, but the right has entirely abandoned even the pretense of commitment to existence in a shared reality. You might be able to convince someone who holds a different view from you, but you can’t convince someone who denies the fundamental premises of (even approximately) verifiable truth and causal connection between events.
Richard Feynman once characterized science as “a way of trying not to fool yourself,” while acknowledging that “you are the easiest person to fool.” But fooling themselves is what a lot of people do when it comes to politics, over and over again. The mechanisms at play are incredibly complex and tracing their operations requires a great deal of cognitive effort, so by and large we don’t even attempt it. And when it comes to teaching people how to think their way through these sorts of problems, we don’t do that either. Much is made of the importance of “critical thinking” in education, but all too often those words are just that, unmoored from any actual critical approach to problems. We mostly throw a bunch of facts at people without explaining how those facts can be synthesized into a meaningful whole and move on. Of course the end result is, even among highly educated people, an inability to follow a chain of reasoning from end to end or understand how disparate aspects of a complex system connect to each other. And now here we are in the 21st century, with a world’s wealth of information (much of it accurate!) available to us on demand and no handle on how any of it hangs together. We starve in the midst of plenty because we don’t know how to digest the food.
Ok, maybe not the galactic rim. Maybe not even the Oort cloud. Let’s say the asteroid belt because how could you tell the difference anyway?
One of my problems is that I like to start things but not finish them. That applies to writing too; plenty of half-completed musings sitting around on my hard drive and awaiting the day when I return and end them with a pithy punchline. But then the punchline never materializes and it gets harder and harder to get yourself to wrap up your thoughts.
So I’ll be trying a slightly different tack, moving to a more discursive and meandering and less focused approach. I’m thinking that without the pressure to come to a neat conclusion, I might be more willing to just get my thoughts out. That means that the things you might read in this space in the near future may not have a tight thesis with three supporting paragraphs or whatever; they may not have any particular purpose at all other than as an exploration of whatever particular idea I’m entertaining at the moment. But since I’m not writing for an academic audience (actually: what audience am I writing for? So far as I can tell, it consists of me), concision and focus be damned. Reviewer #2 is unwelcome in these parts.
Enjoy. Or don’t. But better if you do.
One of the things about being a programmer is that you use a lot of different tools, where “tool” is roughly defined as a discrete program that accomplishes some particular task. IDEs are tools; the command line is many tools accessed through a common interface; programming languages themselves are tools, which are typically surrounded by a larger ecosystem of other tools that are necessary to get things done; and so on. Most of these tools can be combined with one another, so a given user’s toolchain can, in theory, comprise any one of a exponentially exploding number of tool combinations.
The tragedy of the situation is how bad so many of these tools are.
There’s a phenomenon which I think is more prevalent in the software development world than in other technical disciplines which licenses half-ass work. There are a lot of contributing factors to this attitude. For example, the fact that most software isn’t running critical operations means that bugs are, relatively speaking, low priority. It’s just not that important to get it right the first time, unlike, say, building a bridge or engineering a car. Combine that with the valorization of hacking and you get a recipe for lots of shoddy software. Furthermore, there’s a legacy element to software that makes it hard to correct old mistakes or fix bad old tools; unlike physical tools, which wear down and have to be replaced, code is basically forever. So if a bad tool makes its way into the chain by e.g. having been constructed earlier than others, it’s near-impossible to get rid of it.
The other attitudinal problem that software development has as a community is a predisposition towards “tough it out” thinking. This is manifested as a predisposition to disregard such factors as user experience and design quality and shift the blame for any problems with the tool onto the user. These attitudes usually don’t appear (or are repressed) in environments where user experience is actually important, i.e. where money changes hands, but those are situations in which software developers are selling their product to non-developers or the general public, rather than creating tools for each other. When it comes for tools that we actually use, the conventional wisdom is that it’s the user’s responsibility to adapt to the tool, rather than the opposite. This problem is exacerbated by the fact that tools which have become entrenched from early adoption in the days when almost no tools existed have only marginal incentive to improve.
As a result of these factors, we’re left using a lot of extremely shitty tools to perform development tasks. The various shells that originated with Unix and have been passed down to its spiritual descendants are uniformly terrible. Shell scripts have a barely-comprehensible syntax while providing a fraction of the power of real programming languages. And yet these pieces of legacy code are used to maintain entire operating systems. That seems clearly absurd, but in a world where no scripting languages existed, a shitty scripting language was better than none.
Of course, when real scripting languages appeared they only improved the situation marginally. Perl was still shitty, but it allowed you to break so many more things and it had regexes as first-class objects for some reason so you didn’t have to pipe your text to awk (and learn yet another syntax), so people jumped all over it. Ignoring the fact that it initially had almost none of the useful abstractions of more advanced programming languages like Common Lisp; ignoring that its syntax was cobbled together from an unholy mixture of C, awk, and shell; ignoring that Larry Wall, for reasons that can only be assumed to be sadistic, designed it to mimic natural language; the internet went bonkers over it and adopted it wholesale. And now, even though it’s slowly dying out, every once in a while a programmer logs into some old system and discovers some legacy Perl scripts whose author is long gone and which are utterly incomprehensible. The old saw about Perl being the glue of the internet is apt: it’s a nasty, tacky substance which gets into small niches from which it is impossible to extract. Perl is built on the philosophy that there’s more than one way to do it and you should never be prevented from picking the wrong way. Perl sucks.
Autotools sucks. Autotools started out as a script that some guy wrote to manage his Makefiles, which also suck. Autotools is conceptually a correct idea, namely, that you shouldn’t have to write per-configuration Makefiles by hand, but it goes about it a bizarre way. Take a look at the truly byzantine dependency graph on the Autotools Wikipedia page. There are a ton of moving parts, each one with its own configuration logic. Naturally all of this is written in shell script instead of a real language, so Cthulhu help you if you ever have to get down into the weeds of Autotools. Most people run it like a ritual invocation; you just do the minimal amount necessary to get your project to build and hope nothing ever breaks. Actually, Autotools is written in at least two languages, because it uses the m4 macro processor, which Kernighan and Ritchie wrote for C back in the Paleolithic. Hmm, what other language do I know of that is useful for writing domain-specific languages because of its advanced macro capabilities? But of course using Common Lisp would have been too obvious, so m4, which, again, has a totally incomprehensible syntax and no real programming language functionality to speak of, is what gets used. As a result of a lot of talented people wasting a substantial portion of their lives, Autotools has been brought to a level where people can actually use it, with the result that this nightmarish rats’ nest of code has become irreplaceable basically forever. Autotools is the abyss.
PHP is a fractal of bad design. Created by someone who wasn’t really interested in programming for people who also apparently aren’t interested in programming, or consistency, or reliable behavior, or really any other normal markings of a functional piece of software, PHP caught on like consumption at a gathering of 19th century Romantics, because it allowed you to make terrible web pages, which is what everyone in the 90s wanted to do. However many number of revisions later, people are still phasing out shitty old features of the original language in the hopes of someday creating something one-third as pleasant to use as Python.
Make is terrible and confusing. Autotools was create so that you wouldn’t have to write Makefiles by hand, which tells you something about what a pleasant experience that was. Make was initially purely a rule-based system, but at some point it dawned on folks that perhaps they’d like to have things like “iteration” and “conditionals” in their build process, so naturally those got grafted onto Make during, I assume, some sort of Witches’ Sabbath, with Satan’s presence consecrating the unholy union. Despite being created contemporaneously with many of the tools mentioned above, Make does not share syntax with them. In order to avoid writing Makefiles, a complicated tool called cmake was invented, which allows you to write the files that write the Makefiles in yet another syntax which in comprehensibility is somewhere between make itself and a shell script. As per Greenspun’s 10th Rule, Make almost certainly contains at least a portion of a working Common Lisp interpreter. Make sucks.
All these terrible and weird legacy pieces of code have survived down the generations from early times when they were nothing more than convenient hacks that made it possible to automate things. Over the years, they’ve accreted corrections and version numbers and functionality and eventually the process of using them was either made somewhat tolerable or most users were insulated from the messy core by layers and layers of supporting infrastructure. Because replacing old stuff is hard, and because code doesn’t wear out the way that hardware does (and also because most of the cost of usability fall on the developers themselves), these tools just persist forever. Any discussion of their terrible usability or their shortcomings is met with, at best, indifferent shrugs (“It’s too bad, but who’s going to take on that job?”) or outright hostility. People become habituated to their tools and view any suggestion that they might be inadequate as a personal attack. Just check out that PHP post, in which a bunch of people in the comments defend PHP on the grounds that “it’s weird but we’ve gotten used to it!” Well, you can get used to driving a car with a faulty alignment or driving nails with a microscope, but that doesn’t mean you should. If you bring up the point of Perl’s syntax or its weird referencing rules, you’ll be told that you should just memorize these things and once you do it’s not that big of a deal. Suggestions that perhaps knowledge of modern programming practices should be put to good use by creating replacements for tools that behave in opaque and hard-to-understand ways are greeted with incredulity at the heresy.
As developers, I think we do ourselves no favors this way. We should demand, and work to build, better tools. We should have build systems that can be configured in a language that’s easy to parse and understand. We should make use of the strengths of the languages we do have, so that when we need a macro expander, we have one in Lisp or one of its variants. We should have languages that don’t confuse us with unnecessary visual clutter and which are easy to read. We should not be afraid of abandoning old tools because they’re old and were created by esteemed personages at the dawn of programming. We should, above all, pay lots of attention to human factors and usability studies because human time is precious but programming time is cheap. We should, in the end, not be afraid of change, of learning from past mistakes, and of abandoning rather than perpetuating legacy code. That’s my presidential platform; write me in next year in November.
A recent New York Times article examining the alleged problems with Amazon’s work culture has been making waves all week. Depending on whom you want to believe, Amazon is either the province of the damned, chained to their cubicles and forced to work while being whipped by demons, or a glorious utopia of technological innovation where no one is ever unhappy. This unresolvable war of cross-firing anecdotes is impossible to adjudicate from the outside, for the simple reason that only Amazon could even collect the necessary data to do that, and it wouldn’t make them public in any case. So anyway, this prompted in me a few loosely-connected observations, presented in roughly ascending order of how interesting I find them:
Large organizations are like the rainforests they’re sometimes named after: if you go looking for something, you’re likely to find either that thing or a reasonable facsimile thereof. If what you’re looking for is team dysfunction and people being drummed out of the company for having had the temerity to get cancer, you’ll find that; if you’re looking for a functional team of normal adults who treat each other well and all go home satisfied at the end of the day, I bet you could find that as well. Interviews with newspaper reporters aren’t nothing, but they’re not company-wide statistics, and neither are anecdotes from some guy who really loves it there. It wouldn’t be impossible to set up an experiment that attempted to describe at a macro level the effects of Amazon’s internal culture, but it would require a pretty serious resource investment from Amazon itself, which, despite their claims of being very data-driven, I doubt Amazon would actually undertake.
One theme that sounds throughout the Amazonians’ replies to the NYT article is that the high-criticism stack-ranking culture just has to be the way it is in order for Amazon to be at its most awesomest. The natural question this raises is: how do they, or anyone, know that? Has Amazon ever experimented with any other system? What, put simply, is the control group for this comparison? Without this information, justification of ostensibly bad culture practices are nothing more than post hoc rationalizations by the survivors. Clearly this hazing made me into a superlative soldier/frat brother/programmer, so suck it up! Also recognizable as the kind of justification offered by people who beat their children. You’d think that an organization as allegedly devoted to data gathering as Amazon would have done some controlled studies on these questions but my guess is that Amazon gives precisely zero fucks about whether its culture is poisonous or not, except insofar as it affects their public image. There’s basically no incentive to care, since there’s always another fresh-out-of-college 23-year-old programmer to hire.
Another common theme that Amazon’s defenders (and the tech world’s agitprop more generally) plays again and again is that of SOLVING THE VERY CHALLENGINGEST OF PROBLEMS. Here’s a thing that a grown-up person actually wrote:
Yes. Amazon is, without question, the most innovative technology company in the world. The hardest problems in technology, bar none, are solved at Amazon.
This, of course, is totally fucking ludicrous, and yet no one seems to ever question these claims. Obviously Amazon has some fairly serious problems that need solving; that would be true of almost any organization of its scale and scope. But in the end, those problems are about how to make the delivery of widgets slightly more efficient, so you can get your shit in two days instead of three. This, of course, twins with the tech world’s savior complex: not only are we solving the most challenging problems but they also happen to be the most pressing ones and also the ones that will result in the greatest improvements to standards of living/gross national happiness/overall karmic state of the universe. It’s never enough to merely deliver a successful business product if that product doesn’t come with messianic pretensions. So it is with Amazon, which must sell itself as the innovatingest innovator that ever innovated if it hopes to keep attracting those 23-year-olds. These grandiose claims are hard to square with the reality that marginal improvements in supply chain management and customer experience, while good for the bottom line (or, I guess in Amazon’s case, investors) and certainly not technically trivial, ain’t the fucking cure for cancer or even a Mars rover. If your shit gets here in three days after all, you’ll survive. Or to put it another way, Bell Labs invented C and UNIX and also won eight Nobel Prizes in Physics. That’s what actual innovation looks like.
The St. Louis Cardinals’ inept illegal access of the Houston Astros’ database is a hilarious sports scandal for many reasons. As an IT professional, I am giddy with inappropriate excitement over the Astros’ terrible password policies, but as a hater of cheap sentiment and unctuous mythmaking, I’m super-delighted that this happened to the Cards.
I don’t follow baseball at all, but if you read any sort of sports media, it’s impossible to escape the cult that the Cardinals have wrapped themselves in. Not content to be merely one of the most successful teams of all times, the Cardinals PR-machine puts out endless reams of propaganda about how everything the organization “wins the right way” and is just such a moral paragon. That this has now backfired on them in the worst way possible (federal indictments might be coming!) is just the most delicious of ironies.
Here’s the thing: we routinely conflate external characteristics with internal virtue, or lack thereof. Not just in sports, but in society generally. Rich and attractive people are perceived to be more virtuous than poor and ugly ones, despite the fact that there’s no connection whatsoever between these things. Still, sports is particularly bad at this; there’s no more tired sports cliche than the assertion that on-field performance reflects personal worth, even though it’s manifestly untrue. What this story should teach us, but won’t, is that winning and being a good person are totally unconnected. Winning is a function of team or individual performance in a contest of skill, and being a good person is, well, a song from an entirely different opera, as my people like to say. Teams should, but will not, stop wrapping themselves in moralistic language and pretending that their sports triumphs are indicative of anything other than their performance in those contests. Sports teams aren’t moral undertakings; they’re businesses designed for entertainment, and if they succeed at entertaining us, that ought to be enough.
It turns out that good people often lose and bad people often triumph, and there’s no real rhyme or reason to it. It’s nice when “good guys” win, but being a good guy guarantees nothing. You know, kinda like life.