Last month my pal Melissa asked me if I’d read Wuthering Heights. As it happens, I had not. Like countless Americans of my generation, for me the book lies crusted with the patina of dread summertime required-reading lists, and I’d never found reason to update its mentally-archived status as a dodged bullet. (I think I chose Moby Dick instead that year, which at least held the promise of intriguingly seaborne violence.)
My friend, who had just herself read the book for the first time, went on to describe it as surprisingly filled with nothing but utterly reprehensible people, every one a villain. Even the characters you’d expect to elicit tragic sympathy from the reader in a gothic and sallow-cheeked novel of the period end up utterly detestable. She knew that this would prove enough to pique my interest, and I proceeded to borrow a 2003 Penguin Classics edition from the local library. Through it, have discovered such an overflowing cultural treasure chest that I felt the need to write something down before even finishing the first of the novel’s volume-breaks.
Such, of course, is the joy of reading old stuff, at one’s own pace. There is the central work, and then as much of its aurora of comment and criticism and reaction and derivation as you care to ingest, either alongside or afterwards. This edition of Wuthering Heights carries some of that within its own covers, blanketed by no fewer than five prefaces that go backwards in time as we read forwards. The deepest of them, sitting snug against the text, are introductory notes by Charlotte Brontë, she of Jane Eyre and the author’s sister. First, a eulogistic reminiscence of the exciting years when the young Brontës wrote together and saw themselves published (initially under three masculine pseudonyms), a period made shockingly brief by the younger sisters’ swift succumbing to tuberculosis. Charlotte follows this with a more businesslike editor’s note to the book’s second printing, which she oversaw after Emily’s death.
As Kate Beaton says in one of her pages of Wuthering Heights comics, Charlotte takes a surprisingly apologetic tone in her editorial, which the cartoonist summarizes as “Wuthering Heights: Sorry, Sorry, Just Give It A Chance OK?” Reading that introduction (which also contains a screed against fig-leafing the letters from printed cuss-words, amongst other surprises) succeeded in washing away my doubtful expectations for a stuffy drama of stiff aristocrats swanning about the titular manor. Charlotte makes plain that the book is about a monster who smashes a path from cover to cover, with a supporting cast of only slightly lesser goblins gnawing the pages in his wake; she describes how the novel’s earliest critics focused with a disapproving sniff on Heathcliff’s rudeness. Charlotte insists that her late sister had a gift for depicting a darker, more realistic, earthier side of human personality and relationships than one typically found in contemporary literature, and begs the audience to read past the initial shock and take in a singularly unforgettable work.
Well, you don’t have to tell me twice. Thus did my amazement with Wuthering Heights begin, before I’d even reached the first Arabic-numbered page. Needless the say, this has carried through to the story, which seems to me the clear ur-text for Snicket and Gorey and every other writer of dark comedies about terrible people published since 1850. The novel, let us be clear, is hilarious, describing one outrage or misadventure after another befalling two little families living in the moors after a howling outsider, the earth-elemental named Heathcliff, crashes into their sleepy orbit like and upsets their equilibrium for generations. I have laughed out loud with shock and joy several times so far.
And the pacing! In the first chapter, the outermost narrator character (for this book lets itself get positively oniony with layered narrators) sets out to meet Heathcliff, his new landlord. He must battle a pack of dogs on his way over, and then he fights off a wailing ghost during his overnight stay. Then he gets angry at his host for setting him up in a scary haunted bedroom! And Heathcliff kicks him out, and commences to yell at the ghost! And that’s about when narrator number two insinuates herself into the telling, and all this happens before page 30. I had no idea what I was in for when I started this book; well into the middle now, I have just as little idea what will happen next, other that what misfortunes are foreshadowed by events in the frame-story before the narrative inceptions itself forty years into its own past.
Hark a Vagrant has five more pages of those wonderful cartoons about the novel, by the way: go to its archive page and perform an in-page search for “wuthering”. Beaton retired the project at around the point in the novel I currently find myself, alas, but this well illustrates just what I mean when I speak of treasure chests; just reading a little bit has pointed me at layers of culture I would have never discovered (or, anyway, never comprehended) otherwise, and it all happens alongside my read of the original text.
My reading has reminded me about the best potentials of social media too, and how sharing enthusiasm for something can lead one to a beautiful diffraction of related work. I’ve been chronicling my journey through Wuthering Heights on Twitter, and this is how one friend pointed me to magnificent illustrations by Fritz Eichenberg, and another to those Beaton comics. Meanwhile, I discovered that searching for “wuthering heights” on Twitter reveals few people mentioning the book but plenty the Kate Bush song of the same name from 1978, an apparently famous bit of culture that has somehow eluded me entirely for my whole life before now. And when I raved about that, yet another person — a complete stranger, this time — led me to find the Christmas ornaments depicting Kate Bush’s dancing her role as Cathy’s frozen shade pressed against Heathcliff’s window, and with which I decorate this post.
And given the season in which I write this, that feels full-circle enough for now; I should really get back to reading the book.
I found this sour little volume by Tom Nichols a suitable companion work to Roy Scranton’s 2015 treatise Learning to Die in the Anthropocene. While I disagreed at the time with certain of that book’s core assumptions, it nonetheless inspired me to make room in my life for quiet reflection and study of the ancient humanities from around the world, a practice I have imperfectly pursued in the three years since. Similarly, as soon as I finished The Death of Expertise I purchased a subscription to a foreign daily newspaper — adding to the two domestic subscriptions I already had, both municipal and national, and thus implementing for myself the advice that Nichols gives his own students for broadening their daily intake of well-edited media.
This advice, granted, comes in amidst a sense of near-hopeless futility regarding its own aims. In the very paragraph containing the instruction, Nichols all but dismisses the students he delivers it to as spoiled brats who will almost certainly ignore him. This comes after an entire chapter about how higher education in the U.S. has become irredeemably broken, treating its students (whom Nichols refers to, repeatedly, as “children”) like customers paying for a rubber-stamp diploma and a good time, rather than humble initiates for genuine experts to either mould or reject.
Nichols seems aware, in writing this book, how much its tone and message slots neatly into the eternal Kids today, am I right? complaint, and how it risks dismissal on these grounds. But he persists, and I have to admit that I found it compelling. Yes, it presents a satisfyingly thorough I weep for the future argument that happens to coincide with my own allotted time on earth for middle-aged future-weeping, but it invokes some uniquely contemporary concerns in the process.
In particular, The Death of Expertise addresses the way that social media flattens all incoming messages, so that utterances from both learned experts and charismatic amateurs get presented to us as naturally equivalent. Or, increasingly, worse than equivalent, what with inscrutable algorithms always tracking our eyes and clicks and seeking to subtly emphasize more of what “drives engagement” and fires us up emotionally. This pushes into the background real news, researched opinion, and other information that that, like a salad of kale instead a scoop of ice cream, may seem harder to swallow but does us far more good. But, too late, Nichols writes: these semi-automated media platforms have a directive to keep us consuming their content, not growing as a result. And they have long since detected our affinity for soft serve.
Nichols ends the book with no advice for mitigating the great decline he perceives, or any optimism that society will pull itself from this tail-spin of stupidity. In this way, too, it resembles Scranton’s screed, smug in its surety that civilization as we know it cannot possibly survive another generation or two (though he pins the blame squarely on capitalism-accelerated climate change).
My ultimate reaction to both books, then, is similar: I extract a kernel of solid self-improvement advice from each, in defiance of their respectively nihilistic prognoses. And so I find a pleasant pairing of Nichols’ advice to improve the breadth and quality of one’s daily-news intake — turning down the noisy churn of social media and letting more vetted expertise into our lives — with Scranton’s imperative to become more conversant with deep-seated culture. I don’t do that primarily because of Scranton’s argument that this would improve human culture’s chances of memetically surviving the inevitable apocalypse. I suppose I’d have to accept that side-effect if worse came to worst, but it hasn’t yet.
Against a backdrop of despair, both authors offer compelling and complementary advice for bettering oneself through deepening one’s cultural knowledge and mindfully refining one’s intake of novelty. In the end, I can fix myself rather more effectively than I can the whole world, so I will happily recast these writers’ apocalyptic dirges as an ongoing invitation to act locally.
I requested this movie from the library some months ago after it came up in conversation with my wife, a long-time fan of both the original 1938 novel by Daphne du Maurier and this Hitchcock-directed adaptation from 1940. (After my rediscovery of Watership Down, this continues my project of watching the original adaptation of some great work as a result of Netflix announcing their own impending do-over.)
This movie is fantastic, both “for a film of its age” and in general, and you really should watch it. I want you to watch it without knowing very much about it, just like I did. But because this is my blog and I can’t help myself, I shall share a non-spoilery summary of the movie’s hook and then a couple of Top Tips for better viewing before proceeding to unbounded sputtering.
After an intriguing opening narration by Joan Fontaine while the camera flies through a model of a ruined and overgrown English estate, Rebecca presents itself as a romantic comedy where Fontaine’s beautiful young protagonist and Laurence Olivier’s eccentric aristocrat, both lonely and desperate for different reasons, meet in Monte Carlo and immediately entangle. Their desire for each other burns so bright on a bed of adorably snappy dialogue that, when their time together must end abruptly, they willfully leap into a deliriously ill-advised marriage.
And so Mr. de Winter carries his new bride back to England and over the threshold into an entirely different movie. She knew she would have to make adjustments into a new life as the lady of a country estate, but she arrives utterly unprepared to recast herself from a sunny and sexy Riviera comedy into a haunted and shadow-strewn gothic drama. And here her troubles begin, and I could only watch slackjawed for the next two hours as the perplexed but resolute woman navigates a story of masked balls and lunatics and muuurrrder, never quite shedding her status of a complete category error while questing for the exit. This genre-injection brought to mind Edward Scissorhands, except inverted, and I found it simply delectable.
And here I present my strategy guide for watching this movie:
Joan Fontaine’s young protagonist is not named “Rebecca”.
Laurence Olivier’s character is named “Maxim”. (And not, like, “Reginald” or something. Look, this confused me, okay.)
While Olivier positively eats up his role, his casting still seems a bit odd. Maxim de Winter has a full decade on the thirtyish actor portraying him, making him twice his new wife’s age — a scandalous but entirely non-obvious detail. (Olivier spends the whole movie with what I take to be gray stage-coloring slathered in his hair. It doesn’t really work.)
My viewing-partner, quite familiar with the film, provided immediate answers to my voiced confusions on the above topics, and I know that I enjoyed the movie more for it. She consoled me by noting how the du Maurier’s novel had been a bestselling sensation just a couple of years before the film debuted, so audiences probably knew its gists and gimmicks going in.
And on that note, I shall free myself to gush openly about Rebecca’s greatest trick: no actor at all plays the title character, and yet she appears in every frame. She is there by Maxim’s side as he stands on the cliff at the beginning, coaxing him to look over at the jagged rocks; the breakers below provide her violent, hissing voice when Fontaine’s character unexpectedly intervenes. Subdued, she retreats to Manderley, literally stamped everywhere with her monogrammed presence. The lurking Mrs. Danvers considers herself Rebecca’s living avatar, yes, but Rebecca de Winter makes her continuing influence known separately and subtly, right up until the final frame where she burns in wrathful defiance of the THE END card.
The climax of the film, I would argue, arrives with our second visit to the little house by the beach. “The second Mrs. de Winter” — the only name that either Rebecca or Rebecca allow us to know her by — finds and confronts Maxim as his increasing caginess reaches its peak. As he spills his guts, at last, about the fate of his first wife, she reveals herself. The camera tracks her — invisible, sure, but present — as she willingly, and I imagine with a savage glee, retraces her own last living steps just as her widowed husband describes them. Like the dénouement of Fight Club, we retroactively realize Rebecca’s influence throughout every prior scene, but the film doesn’t need to flip through them in flashback; it hits the viewer all at once. And there she remains for the rest of the picture, unchanged and undaunted in her mission to harry and ruin Maxim.
One is tempted to see the end of the movie, with Rebecca’s worldly effects going up in flame, as her final defeat, outlasted by the brave and persistent Second Mrs. de Winter. But then we put the disc away and see the cover once more, and it reminds us which woman got the whole story named after them, and which woman’s name didn’t even survive the story’s telling.
I have always looked upon Apple’s most excellent presentation software, Keynote, with a sort of lingering dread. Prior to last month, opening it and starting a new slideshow meant that I had committed myself to spending the next several days building a lengthy conference talk. With delight, then, did I discover a new use for Keynote in my day job as a freelance developer. Lately, I’ll spend an hour or two every week or so to create tiny, meaningful slideshows for just a handful of people, and in such a way that it remarkably improves the confidence with which I work.
Last month I began an unusually complex project for a client. Not only does the work have to meet technical goals within a set time-and-materials budget, but its release depends on the launch of certain other projects within the client’s organization, and yet more projects await my work’s release in turn. My client must therefore put lot of faith in me to get this work accomplished on-time — but since I work remotely, the project’s managers can’t see my continuous progress, and they quite naturally feel a little on-edge about all this. It falls to me to stay in regular communication in order to keep my client appraised of my progress, and give them a chance to offer mid-stream critique and course-correction.
I’ve practiced this communication pattern with clients before, especially since reading Subramaniam and Hunt’s Practices of an Agile Developer, the book that first taught me about it. Where my clients in the past have tended to be small businesses or nonprofits, though, this one is a large company with many technically apt managers and an affinity for gathering frequently in conference rooms for presentations both local and remote. This encouraged me to think of a check-in style a little more involved than the weekly phone call or emailed report I’d grown accustomed to.
And so, when I arrive via VoIP in my client’s offices every Monday to discuss this project’s progress, I start the meeting with a very short slideshow, never more than ten slides long. (My conference talks, in comparison, invariably stretch into triple digits.) It acts as a microscopic keynote address, setting the tone for the rest of that check-in meeting, which itself gets both my client and myself caught up with the state of the project and our mutual expectations for the next leg of work.
I have found that this works really well. The slides give my client something to visually focus on in lieu of my physical presence, of course, but they also summarize recent-past work and set near-future expectations via a short, dynamically illustrated, prepared monologue that ends before it can get boring, and gets everyone looking forward to whatever comes next.
Allow me to show you one such scene-setting slideshow, exactly as I presented it to this client (but for a handful of redacted URLs and product names):
Despite these presentations’ miniscule length and tiny audience, I still apply my usual preparation techniques. As you might have detected from my tone of my voice, I really do treat the slideshow like a monologue, writing out the spoken parts beforehand and embedding them in the slideshow as “presenter notes”. Keynote displays them to me slide-by-slide on my second display — out of sight of the main display, the one broadcast to my client’s conference room — and I just read as I go. The short length lets me rehearse the talk at least a couple of times before the meeting, catching typos and establishing a flow at the cost of mere minutes.
And while I don’t lean into the frantic, flipbook-speed slide-transition style I favor when trying to keep a large audience attentive for twenty minutes, I do add a minimum of animation and illustration — even if just click-build bullet lists with a few emojis sprinkled in — to keep things interesting.
Having presented my slides, I can mix it up a bit: if I have a live demo to show, as I did with this example, I can transition into it confident that I’d adequately primed my small audience’s expectations. I might instead offer a couple more slides with annotated screenshots showing recent work. But even on weeks when all my labor went into purely backend development with nothing obvious to show off, a slideshow still gives my clients the sense of seeing progress. And in any event, the flow proceeds quite naturally from this canned presentation into live conversation about the work at hand.
And, at least as important, it gives me a reminder that I really did make enough happen over the past week to fill out at least a couple of short bullet-lists. Creating the presentation encourages me to gather these thoughts together well enough to explain them to myself, let alone to my clients, and makes me feel that much more confident in my course for the coming week. So, yes, I have found this technique a very good use of an hour or two every week, and I plan to keep making use of it whenever applicable.
As I continue to work on Plerd, the blogging software that powers this website, I increasingly find myself with news and other updates about it I want to share — but which wouldn’t fit well on Fogknife. I aim to keep my writing here of interest to a general audience, and deeply nerdy stuff about my main open-source project just doesn’t feel right for this website.
So, I last month quietly launched a new blog for Plerd, at http://plerd.jmac.org. I consider this part of the same push that saw my creating some new Plerd mailing lists a little before that, as well as committing some significant updates to the software itself — all of which you can now read about over yonder, and I can now write about all I want without worry of diluting Fogknife’s such-as-it-is brand.
I will note that one significant Plerd update lets me (and, in theory, anyone else) instantiate new Plerd-based blogs with rather less effort than previously required. I used this feature to create that new Plerd News site, in a pleasingly bootstrappish fashion. I may very well do it again sometime to pop up yet more websites for digging into topical depths too chthonic for Fogknife. Should this occur, I’ll announce these sites’ new existence here, and then speak of them no more.
Since discovering the Seven Minute Workout (7MW) several years ago, I have used a variety of timer-tools to help pace me through its drill-pattern. Just as when I wrote that article, my favorite timer has remained the one built in the Cardiio iOS app. (And when my iPad isn’t handy, I fall back to a free web-based timer.)
I power through these exercises about twice as much as I did back then, closer to six days a week than three. This increased pace, though, made me start to chafe against the ways that none of these tools exactly match up with my personal 7MW preferences. And so, inevitably, I took the opportunity of a short road trip last weekend to write my own.
Here, then, is Brickfielder, currently in the very same state that it stood after I bashed it out in a Bangor, Maine hotel room between 11 PM and 1 AM one night. It does just what it claims, calling out instructions and time-ticks using the Mac’s native text-to-speech capabilities, and throwing in a couple of twists indicative of my own personal 7MW preferences. Quoting its README file, its features include:
A minimal, speech-centered UI. Brickfielder guides you through voice alone (with a simple text transcription in its terminal window).
Shuffling the drills a bit beforehand, for variety’s sake. While you still get three rounds of aerobic, lower-body, upper-body, and core drills in that order, Brickfielder will randomize the order of the three drills within each category.
In other words, it will always start with an aerobic drill, but that drill might be step-ups, jumping jacks, or high knees. It will then move on to a lower-body drill. You will always receive all twelve drills exactly once per workout.
Breaking the side-planks drill into two sub-drills, separated by a very short pause to allow for switching sides.
Named after a hot and dusty Australian wind, Brickfielder represents the first “wind series” project I’ve released since Bise, way back from the top of the year. As such, it serves as a personal reminder how much non-business travel tends to inspire me to finally deliver highly specific software-tool projects that may have been semi-consciously gestating for months prior.
I tapped out Bise while sitting on a ocean-overlooking balcony in Tampa, Florida, and I continue to make use of it every week (via the Fogknife regular-readership summary it automatically mails me every Sunday). I have used Brickfielder every day since writing it, and plan to continue this pattern. I would love to add all sorts of fun and extremely opinionated features to it, as time allows. We’ll see what developments the upcoming holiday breaks bring; any worth noting shall find mention here.
Last week I once again visited Raleigh for All Things Open, an annual conference about open source software with a particular (but not exclusive) focus on its commercial uses. While I enjoyed last year’s conference quite a bit, I consciously experienced the event differently this time. Knowing that all the devops talks in the high-capacity ballrooms would not hold my interest much (such Kubernetes, many Docker, wow), I instead stuck to the cozier meeting rooms downstairs, where one found tracks dedicated to topics like community building and open government.
My strategy paid off; all the notes I took came from talks with little or no code on their slides, and all the personal connections I strengthened or forged at the conference’s social events had entirely more to do with common interests in organizing people and projects rather than just programming computers. I did try some of the upstairs talks, and I bounced out of every one within minutes. The presenter would start stepping the standing-room-only crowd through the process of opening a database handle in Go, or whatnot, and I would feel entirely out of place.
Yes, after twenty years in the field — as many years as the term “open source software” is old, according to a bit of trivia repeated by many speakers — I seem due for some reflection on my own identity as a technologist. Long time gone is the the eager young hacker always hungry to pick up new languages and techniques. I know I still love building things, and some of those things I love building are still made of software. But, increasingly, my interest mellows from development into maintenance. Less disruptive software frameworks, more dependable human-driven foundations.
And on that note, here are my three takeaways from this year’s ATO:
I should represent IFTF at these sorts of things. As usual, I registered under my “Appleseed Software Consulting” freelance identity, so that’s what my badge said. Nobody cares about this, and that counts double at a software-focused conference. Even I don’t care about this, really; I may love my clients, and feel proud of the work that I do for them, but when a polite person asks “So, what do you at Appleseed?” I usually say something like “Oh… I make websites,” and that’s the least boring response I can give, even to a fellow technologist.
A badge bearing “President, Interactive Fiction Technology Foundation”, on the other hand, would serve as powerful tinder for starting a conversation about a much more interesting organization I truly love to talk about. Shortly into All Things Open I started ignoring my real badge and introduced myself with “I help run a digital arts nonprofit.” Even saying only that much, I know that I myself already look far more interested with this than with some tired mumble about building custom software solutions.
And — let’s face it — as its president, I really need to step up my fundraising game for IFTF. Not to say that every conversation must turn into a chance to make the ask, but rather that I should never pass up an opportunity to spread awareness to a receptive audience (even audiences of one!) about IFTF and the good work it does.
Further, I had the good fortune at ATO to meet and collect wisdom from a number of much more experienced non-profit leaders. In the very common case where — like me — they served their organizations as unpaid volunteers, they were either retired or they had day-jobs. In our conversations they scarcely mentioned these jobs, whether present or former, unless they could draw from them some anecdote relevant to their nonprofit roles.
From now on, when I attend a technology event, I’ll rep my role at IFTF up-front, and fill my pockets with IFTF business cards and stickers to boot. (Note to self: Make more stickers.) You have survived multiple board elections to earn these shoes, jmac; you should wear ‘em outside the house once in a while.
I must focus more on leveling up my projects’ contributors. I attended two quite inspirational talks early on the conference’s first day, Jen Weber’s “How to grow (or save) your favorite open source project” and Deirdré Straughan’s “Marketing your open source project”. Together, they made me feel impatient to better myself when comes to not just welcoming contributors to the open-source projects I manage, and not even just making them feel rewarded, but actively encouraging the more interested of them to stick around. With kindless, patience, and luck, one can level up initial “drive-by” project contributors into regular contributors, and then — in jewel-rare cases — into full-on project collaborators.
As the seasons accrue, I become more interested in knowing that I can safely leave projects I love, even projects that I personally started, and know that they’ll stay maintained and useful because I left them in the hands of people I trust. I lead more than one open-source project with user-audiences larger than merely myself, and while all enjoy a handful of contributors’ names attached, none really have any true collaborators, much less a succession plan. After these talks, I find myself very much moved to amend this.
I love open data, and I should play with it more. Finally, I really dug Nathan McMinn’s “Monitoring your city with open source IoT”. The speaker described a project he leads of sprinkling tiny, sensor-laden Arduino computers throughout his home city of Birmingham, Alabama as part of a citizen-led air-quality monitoring initiative. Working entirely in public spaces, the project neither hides its work from the municipal government, nor has it delayed itself by seeking unnecessary permission or resources from it. I really appreciated that!
It reminded me very much of my own work with BumpySkies, except in some ways more ambitious. BumpySkies analyzes and presents publicly available (if rather obscure) data in interesting ways, while McMinn’s project didn’t even have an API to start with, necessitating the team’s puzzling out how to collect the data in the first place. Even so, I found myself very much impressed by its scale, working at the level of a single, modestly sized American city.
I haven’t added any new features to BumpySkies since launching it two years ago in part due to my fear that the Trump administration, currying favor from its anti-intellectual base, might at any moment shut down the taxpayer-funded data sources BumpySkies relies on. McMinn’s talk, though, explicitly advocated local action, looking for opportunities in one’s own city to build something creative for the enrichment or edification of fellow citizens. It could be it an end-to-end project like his, or a new use for an extant API. Before he finished talking, I saw that Rhode Island does indeed publish an API for the buses that trundle past my Providence home all day long, and I spent my lunch hour scribbling out some ridiculous ideas for what I could do with it. I know that any work I did in this smaller sphere would feel much less susceptible to the increasingly polarized whims of national politics.
I may talk a good game about growing up and into more of a mangement role, but I will always be a hacker. Even as I perform more staid “adulting” in the technological realm, it would behoove me to always have at least one fun and invigorating project on the stove. I know from experience that I love working with public APIs like this, and thinking about them city-scale makes me hunrgy to try something new and beautifully absurd.
For my entire childhood, I learned from school, family, and popular culture that all of America’s evils lay buried in the past, forever vanquished by legendary heroes.
Systemic American racism, according to the mythologies of my upbringing, had long since fallen away. Martin Luther King Jr. gave a speech, and then he died, shedding blood that washed America clean of its sin. When bigotry occurred in modern times — so I learned — it happened only in small, violent outbursts, obviously criminal and easily contained and corrected.
I grew up with a similar narrative about sexism. Probably because my life involved far more women in my immediate proximity than it did people of color, I got the impression that it lingered on as an active problem. But as with racism, I learned that the worst of it had been solved long before my birth, through the pluck of suffragettes and their indomitable mid-century successors. I could feel proud to live in a country that had so thoroughly laid its worst natures to rest.
This story held for me, even though my growing awareness of the “culture wars” of the 2000s, until the middle of the current decade. I watched with confusion as Gamergate sounded an invigorating call to arms to a new generation of aggrieved young men to push back against feminism, and felt shocked at its rage-fueled successes. Then the Ferguson protests — and the outrages that spurred them — made plain to me both how rotten-through American culture remained with endemic racism, and at the furnace of reactive anger so much of white America turned up at the suggestion that black lives matter.
So many Americans felt so much righteous fury about these challenges to their comfort that they elected an overtly nihilistic successor to the most progressive and hopeful government of my lifetime. My country opted for a new leadership ruled by fear, hatred, and petty cruelties over one that even acknowledged our societal rifts, to say nothing of healing them. I think every day of the complicity I share in this by clinging naively to the belief of American evil as a thing long dead, and in all the future horrors it will enable.
And I think again of all this every time I get exposed to the storyline of Diablo III, a colorful and multiplayer-friendly mass-monsterbashing game I picked up on-sale last month, and which has been getting a lot of play in my home since then. It emphasizes noisy, colorful, low-brainpower fun, and just a few years ago I would surely have merely rolled my eyes and otherwise paid no mind to its childish depictions of good-versus-evil and just concentrated on the game’s gleeful mayhem. But now I recognize this message as reflective of the cut-and-dried morality that depressingly many of my fellow Americans view reality through, and can scarcely get through a play session without feeling a frisson of social despair.
The game itself is perfectly fine, and can even become quite rewarding when played in the proper mindset. Lacking any sort of intelligence or soul of its own, Diablo III leaves plenty of room for players to bring their own fun. Its impressively smooth cooperative mechanics, clearly taking lessons from MMOs, can make for a fun evening of carving a bloody swath across its maps with friends and family. I’ve been lately enjoying four-player sallies with my wife playing beside me and a couple friends joining via the internet, racking up kills and piling up loot and having a grand time feeling like a band of insatiably greedy and murderous assholes for a few hours every week. It’s not the sort of game I’d ever feel proud of playing, but I’ll be the first to admit that the cathartically perverse joy it offers has its time and place.
But, oh, its storyline. I need not go into any detail, but it paints the most typical cartoon backdrop where “evil” comprises only big, obvious monsters that want only to kill people, and “good” is whatever tries to kill “evil”, and that’s that. Diablo III scarcely invented this view in nerd-friendly entertainment, of course; this represents the default moral landscape for any game with an ultimate basis in Dungeons & Dragons. But with a zillion-dollar production budget, and offering an umpteen-hour play experience suffused with such lush colors and soundscapes and voice acting, Diablo III makes it hard to simply ignore this mediocrity.
In one scene, a character considers an opportunity to attack the game’s eponymous endboss, declaring it a chance to “destroy evil forever”. This crystallizes the game’s embrace of the othering of evil, a naive and painfully real fallacy that any angry human can so easily reach for: evil as a quality contained entirely in a person (or a population) that we can subsequently fight, or punish, or simply eradicate.
I saw this a few years ago in angry Americans’ insistence that unless I’m literally beating my wife in the street, or literally burning a cross in my black neighbor’s yard, then how dare you call my actions sexist or racist when so much real sexism and racism exists to fight. I see this in news headlines current as I type this, when the president of the United States so easily calls the latest mass murder performed by a fellow right-wing extremist “evil”, and then goes on about his day foaming up his base to continue fueling his party’s agenda of anti-democratic demonization and disenfranchisement of everyone who doesn’t look like them. And how dare you call the president’s work evil, they ask, when real evil is standing right there with a literal smoking gun?
The creators of Diablo III would almost certainly deny that their game carries any real-world political views. But when I see it starkly define “evil” as contained entirely within chortling, fire-breathing giants and their howling armies that rampage around in broad daylight cutting down screaming villagers, the game reflects this childish and too-easy view of reality that the current holders of power depend upon, and actively encourage their followers to hold. The game, therefore, ends up feeling like Trumpist propganda. Given its original release date of 2012, I can’t escape the suspicion that this highly visible and popular work — breaking global sales records when it first launched —- helped set the table for Gamergate, which in turn became one of the many heralds assisting the rise of Trump.
I plan to still play the game for a while longer, because I enjoy spending time with my friends and family, and I can compartmentalize the fun we have with Diablo III from the despairingly ignorant message it carries. But this barrier does take an active mental effort to maintain. Especially now that I’ve thought through what bothers me about this game, I know that in due time I’ll wish to invest my energies elsewhere.
I continue using Perl as my go-to general-purpose programming language despite the repeated declarations of its demise that started around the post-dotcom doldrums of the mid-2000s. I’ve worked in technology enough to learn to ignore pronouncements like these, as well as any shiny new creative tech that comes along — so long as the one I’ve gotten really good at using still works, and still has a community of comfortable size and temperament supporting it.
Perl, for all its relatively shrinking stature, has not fallen beneath this threshold, and I don’t actively fear that it will any time soon. It has enjoyed a new release every year for the last decade. Its humbly sized annual conference feels like home. I know that I can ask a question on IRC (either on Perl’s own network or a handful of project-specific Freenode channels) and I’ll get smart and thoughtful responses every time. I have yet to feel anything close to approaching a dead end with Perl; BumpySkies, only two years old, would not have happened but for open-source Perl modules dealing with highly specific matters of geographical math and obscure scientific file formats that others had recently shared. And those rare times I actually manage to find a topic so new that I blaze my own trail into CPAN, I very much build on foundations laid by many others.
And yet. While I can’t agree that Perl is “dead”, I do admit that it feels suspended in a strange limbo, lately. Part of this comes from my exposure, starting last summer, to technical conferences based around some concept other than a programming language. This began with !!Con 2017, which I enjoyed so much that I petitioned The Perl Conference to steal its ideas. I went on to attend All Things Open later that year, and then this year I went to the tiny IndieWeb Summit, with an attached visit to a Donut.js meetup.
At at !!Con and Donut.js in particular, I found myself significantly older, whiter, and maler than the average attendee. These are both smaller, high-energy gatherings based on people sharing personal stories of technological triumphs, obsessions, and transformations, and it seems natural they’d attract a more diverse crowd than a more staid or narrow-topic conference would. But when I later attend a Perl Conference and I see that the vast majority of attendees are, morphologically and culturally, of a type, I start to feel the creeping sensation that my favorite programming technology is missing out on something. Like it continues to burn fuel it purchased in 1998, paying no mind to alternative energy sources that may have appeared since.
As far as I can tell, good reasons to learn Perl in 2018 include these:
You are joining a company or other software-project team whose work involves Perl.
You come across an open-source project that you want to contribute to, and it makes use of Perl.
You want to learn programming in general, and you are the spouse/child/sibling/mentee of, or otherwise one with extensive personal access to, a Perl expert with the time and inclination to help you learn Perl in particular.
But, crucially, this is probably not a good reason to learn Perl:
Even though Perl technically qualifies under those latter criteria — many operating systems come with some version Perl pre-installed, for one thing — I would not recommend it to a novice programmer who doesn’t qualify for any role in the first list. Without a doubt, the “winner” there is Python, and this comes entirely down to its much greater diversity of culture and ecosystem. I have not attended any Python-specific conferences or other events, but I can tell from a distance that they much more resemble !!Con in having a broader spectrum of personal energy than any Perl conference.
Unless I planned to actively help shepherd the person through the best parts of Perl’s sparser ecosystem — and, consequently, warn them away from its trouble spots — then I could not in good conscience welcome a code-newbie to it. Not when I could instead send them off to a community where they would have a far greater likelihood of finding people more like them making things more interesting to them.
It feels, then, all the more like a paradox that I myself don’t take my own advice and follow this notional newbie into Python’s arms. I have no doubt that I could thrive in that ecosystem at least as well as Perl’s, if I had to. It would bring with it all the joys of working within such a larger, brighter, and more many-voiced environment. Sounds pretty good.
But the cost! It would take me calendar-years of intense study — stealing time where I can, in between all my current commitments — to attain a level of Python expertise similar to that I’ve earned in Perl over decades. And once there, I could… do pretty much everything I can do in Perl today, except without the nagging doubt? It just doesn’t seem worth it. More to the point, I just don’t realistically see myself ever making the necessary investment of time and attention, not when I could instead make things using the Perl tools and techniques I’m already expert in. (To say nothing of doing things that don’t involve programming, now and again.)
I can’t give marching orders to the whole Perl community in order to make its situation feel a little less script-lost. I can only describe what I plan to do: attend more language-neutral gatherings (I’m going to another this week!), and contribute my expertise to poly-technology projects and organizations (I help run one!). I will also continue to release open-source software that happens to use Perl — and, as much as time allows, do my best to set a stellar example of how lovely a modern-dialect Perl-based project can look when it uses contemporary, team-based development techniques like code reviews and continuous integration.
I want to see scrappy little Perl stay a viable option for the rest of my career as a software toolmaker, even if I concede that it has long since “lost” to Python as the single dominant technology in its realm. These sorts of personal-level projects and contributions represent my attempts to increase the field of broadly interesting and visible stuff built with Perl, so that hackers who’ve earned their programming chops via some other gem or snake might discover them, and maybe want to get in on it as well.
I have had the good fortune to personally witness this phenomenon with projects that I lead. While I’m no deep expert in any, I have learned a little Python (or Node, or Objective-C…) in order to create or contribute to something I cared about in an environment which had already chosen its language. And coming the other way, I have absolutely seen with my own eyes — and helped with my own time — folks pick up a little Perl in order to patch projects near and dear to me. It really does work!
I stand by my bullet-list of reasons to learn Perl, in part because I see it not as evidence of a hopeless dead-end but an opportunity to grow Perl’s ecosystem by widening the space implied by that second item. I plan to do what I can, and I invite other Perl hackers who share my concerns to join me: write and share open-source software that attracts contributors for some reason besides being written in Perl. Let it become a quietly shining vector to help create more Perl programmers, bringing more voices and backgrounds into a creative ecosystem that very much needs them.
I have seen, in the last week, quiet astonishment that the New York Times’ exposé on the Trump family’s multi-generational financial fraud could not stay in the national conversation for even one full news cycle. I tend to agree with L. Rhodes’ take on this phenomenon, that this story served to set into motion lawsuits and other legal processes that — for now — operate quite well outside the hard-edged circle of the headline-news spotlight. I imagine that we will hear more about it later.
No, it was a different story, also failing to attain more than minimal attention-traction during these last few obsessed and bitter weeks, that really hooked into me. Combined with all that has happened on-stage since, this particular news item has convinced me more than ever that Republicans represent a true evil, ascending into the avatarship of demonically short-term thinking. Republicans seek to set up the world to suffer and die after two or three more human generations, so long as they can maximize the fun of their own, personal remaining years. And I feel called to recenter my own political stance as defined primarily not in favor of any plan or policy but against Republicans, at every level of American government.
We have learned an official position of the United States government takes as given that the average global temperature will increase by seven degrees over the next eighty years — more than triple the target maximum-allowed increase that the Paris climate accord strives for. That in itself does not fill me with venom against the speaker; I have entered into the record my own support for hard truths about the upcoming catastrophe. But the report continues with a recommendation that, because of the presence of this worst-case scenario, the government take no action to attempt stopping it. Because catastrophic climate change is distinctly possible, this report concludes, we should just accept it, and spend the resources we have today on enjoying our current lifestyle while we still can.
Of course, this slots in perfectly with every demonstrated Republican action and policy since they began their current ascent into power earlier this decade — propelled by white loathing of a black president, and all his policies that angled away from a childish focus on short-term gains. From their subsequent election of the most divisive president since the Civil War through their Supreme Court installation of an emotionally volatile frat boy and possible sex offender amidst an era of new feminist awakening, Republicans have pursued only an agenda of win, right now, me win right now, you lose me win heedless of cost. To accomplish this, they borrow rapaciously from the future, and never spare a thought about how the piling-up debt might get repaid — or, indeed, who will have to repay it.
Cold-comfort columnists will write this weekend that Republicans will find themselves called to account as soon as next month’s midterm elections. Maybe. I would of course like to see that happen, for reasons quite succinctly expressed by the headline of Damon Young’s recent column, and I plan to contribute my own minimal democratic effort to help achieve this result. But I know with certainty that Republican-led actions today will make Americans — and humans everywhere — pay a much higher price for the right to simply exist, let alone maintain a civilization, in the not-unimaginably distant future. The younger and healthier among us may even live to see it. Republicans don’t care. They just want their one marshmallow, right now.
Recognizing the danger that they pose, I today redefine my political stance as, centrally and specifically, anti-Republican. Whenever the opportunity arises, I will do what I can to chase Republicans away from the levers of American power, and then keep them away. Naturally I can express this in the voting booth, but I would also like to begin seeking ways to more creatively and directly damage Republicanism through direct action, in ways compatible with my social position and my expertise.
Voting is the easy part. Since America is stuck with a two-party system for the foreseeable future, that means I’ll vote Democratic in every election I can legally attend, whenever a given choice involves a Republican and a Democratic candidate. I will not care who the Democrat is. I will vote for a horse or a cabbage who running on a Democratic ticket if the other choice is a human being who, no matter their other qualities, chooses to align themselves with the party of extinguishing human civilization. I see no choice at all here. (That includes the choice of abstaining, or voting third-party. Neither of these actions would do anything at all to nudge the Republican further from office, which, again, has become my core political goal.)
Paths to direct action appropriate to my station are not so obvious, but I see some starting points. Last January I made a public call for Apple to drop its support of Fox News. I didn’t expect any visible response to that, and saw none. But today, it strikes me as an idea worth returning to. I envision an organized effort to take down the Republicans’ vile state-media channel the same way one would starve any tumor without harming the body that hosts it: cut off its blood supply. One by one, we could find a significant Fox News advertiser or partner that we might conceivably sway, and then use truth applied with intensity to encourage them to break off the relationship. (Apple, a paragon of capitalism that nonetheless strives to display a public interest in social justice, still seems to me a good initial target.) On success, we would choose the next target under the same criteria, and subject it to the same unwavering and many-voiced treatment. With time, effort, and luck, we’d start to see the whole mass shrivel and weaken, its ability to poison the American conversation muted.
Because that, ultimately, is how I plan to treat Republicanism, and all those who claim to represent it: recognize their speech as poison, and stifle it. Absolutely feel zero sympathy as they whine and rage and demand equal representation on every platform. The language spoken by Republicans is that of the devil himself, both tempting their fellow Americans and convincing themselves to trade away the entirety of the future for a second scoop of ice cream.
The truth is on our side, and I know that it can silence and wash away this ongoing evil, when directed with sufficient force, purpose, and clarity. I may not know exactly how I’ll help with that, yet, but I feel that this is the most directly effective political course I can set myself on for the time being.
Previous post: I read Paradox