Prompted by Aaron Reed’s own revist, I just finished a re-read of The Scar, the second of China Miéville’s “New Crobuzon” novels of steampunk excess. My friends seem to consider it the best of the three; I first read it maybe ten years ago, and remembered almost nothing about the book other than my enjoyment of it. This created the best conditions for a re-read, where everything comes as a surprise, and yet I carry near-certainly that I’ll have a great time. I did — and my experiences with the fiction I’ve consumed in the years since gives me greater insight about why it worked for me.
Bellis Coldwine, the The Scar’s core protagonist, is practical, determined, analytical — and spends every page in a position of painful weakness, getting absolutely played by one villain’s schemes after another. A middle-aged urbanite intellectual, she has absolutely no business on the high-seas adventure among pirate factions and imperial navies that misfortune tumbles her into, and quite honestly proves terrible at it. But she never falters in holding fast to her motivation: returning to the city she loves. She knows that giving in would mean — even in the very best outcomes — never seeing her home again, and she decides early on that this will never do. Her jaw thus set, she fights like hell, providing a burning spirit that gives a novel full of otherworldly wonders and pitched sea battles its true motive force.
Experienced but antisocial, Bellis makes precious few friends while at sea, and makes many more gut-wrenching mistakes — inevitable given her need to improvise constantly in an alien setting that (literally!) never stops shifting under her boots. She suffers terribly, but never surrenders, and grows stronger from all the injury. Bellis emerges at the end reforged, with all the doubt and baggage she didn’t even know she carried burned out of her. The Scar has so many amazing things to show you, but on this re-read I found Bellis’s human-scale struggle, the and the personal growth she wins at dear cost, the most compelling reason to keep returning.
But the book’s most memorable character — honestly, the one detail I recalled at all from my first visit — is Uther Doul, the pirate lords’ super-powered lieutenant. As much as I’d love to see a film adaptation of The Scar, I would need to resign myself that all its merchandise would center on this brass-and-leather Darth Vader. A swordsman and gunfighter of preternatural skill, enormous intellect, and monkish calm, Doul wields an outstanding artifact-weapon whose nature I won’t spoil here. His bloodily colorful exploits give him throngs of piratical fans — and even turn Bellis’s crank a bit, despite her better judgment.
Crucially, we almost never see Doul except through Bellis’s eyes, and the narration stays outside his thoughts: he remains terrifyingly unknowable, even as Bellis draws closer to him. And I assert that this is absolutely correct, from a storytelling standpoint! Doul as a sympathetic character would not fit The Scar at all; he would weigh the story down with the presence of a brooding anime hero, at best. Instead, Doul inhabits the world as another force of nature for Bellis to negotiate with, in a novel already full of sea monsters and living storms. That this particular force has invested itself in the shape of a man just makes life harder for Bellis — another in the pile of difficulties which, as we have already determined, provide the diesel that this story propels itself on.
My comparing Bellis and Doul, and admiring the way that the book allows them to co-exist interestingly by granting only the weaker party any transparency, reminds me of my very different experience between Ann Leckie’s Ancillary Justice and its first follow-up Ancillary Sword. Even though the books have the same main character, and while I enjoyed the first novel quite a bit, I lost interest in the second somewhere around the halfway mark.
This happened in large part because the hero, invested with godlike abilities but also utterly broken and lost at the start of the first novel, succeeds in finding herself at the end. And so the second book finds her at the well-deserved height of her powers, commanding a starship as a hyper-competent super-captain, surrounded at all times by a cloud of scrambling redshirts ever amazed and agog at her leadership, resourcefulness, and athleticism.
Certainly it felt real nice to see my old friend happy and doing well in her new life. As one chapter followed another, though, I felt like a guest overstaying his welcome; the captain had better things to do than entertain me. Naturally the story had stakes and tension and so on, but at no point did I have any doubts that she would handily carve through it all, and I feel safe saying that she felt the same way. Eventually I decided to just quietly leave her to it, and saw myself out.
Thinking about it, I could name more examples of main characters I’ve adored from various other media who, to one degree or another, defined themselves through suboptimal performances; dear, naive Mae from Night in the Woods comes to mind. I suppose that a protagonist doesn’t have to be terrible at their job in order to set up an interesting story with room for them to grow through cycles of error and correction. But, when done well, it does seem to be a pattern I appreciate!
This article was also posted to the “books” section of Indieweb.xyz.
No doubt it says more about the point in my own life when my tastes in video games calcified, but Streets of Rage 4 gives me everything I want from a wholly action-oriented game: a simple, satisfying experience I already find myself returning to again and again. It succeeds in decanting the soul of the early 1990s Sega Genesis “brawler” games into a beautiful new format, adding just enough modern features to feel native to a contemporary console while foregrounding the fundamentals that made the older games great.
You likely know the Streets of Rage games, even if you’ve never seen them before. Starting with 1987’s Double Dragon, brawlers like this were ubiquitous in both arcades and home game systems for many years. They all give you control of a little dude who punches and kicks their way through short, linear levels where low-powered thugs swarm you (and, often, one or more co-op friends) until you get to a set-piece battle with a colorful boss before you move on the next level. The Streets of Rage games for the Genesis brought an interesting emphasis on grapples and throws to the usual formula, as well as a searingly memorable dance-beat soundtrack.
Streets of Rage 4 preserves all these features, and then keeps things refreshingly basic, eschewing the temptation to add anything resembling RPG elements. Every character is as strong as they’ll ever be, from the outset, with all their moves and powers immediately available: at no point do you “level up”, or pause to assign “skill points”. (Not even the NES adaptation of Double Dragon, released over thirty years ago, could avoid adding progressive “power levels” that unlocked new moves.)
The game counterbalances this by offering a surprising level of opposition right from the get-go. On my first dive in, even as I revelled in feeling these familiar controls again, I fell to a Game Over before finishing the first round. This came as a shock to someone who used to play through the entirety of Streets of Rage 2 in one go as a post-exam cool-down exercise in my college days. But of course I had only achieved that level of mastery after replaying its stages many times, enough to anticipate the emergence of each batch of mid-level mooks, and to counter the special attacks of each stage-ending boss. And so it would have to be with Streets of Rage 4, as well!
But: no longer a college student with nothing better to do, I nodded in respect to this, and backed off. Then I dropped the difficulty down to Easy, and convinced my wife (and fellow veteran of 1990s Sega games) to pick up another controller, and we had a grand time smashing our way through the place together, learning its pugilistic geographies at our own pace. I can report with pride that I can now hold my own at Normal difficulty, which is to say that I got better at it, rather than just raising my character’s “stats” until the novice’s strategy of numb button-mashing can prevail. Boss battles that initially seemed impossible, with their unpredictable movement and flurries of super-attacks that smashed me to the mat every time, have through a bit of repetitive practice become challenging but surmountable.
It has been a long time since any video game has won this level of patience from me. Why did I stick with SoR4 long enough to get better at it, while Dark Souls and its ilk — which also demand rote practice and pattern-memorization across multiple failed attempts — tend to drive me away? It must come down to some mix of the brawler’s brighter attitude, its much more streamlined play-style (no skill-point assignment, no inventory management — heck, it just barely has a second spatial dimension), and its willingness to let you very easily bring friends along to help, right from the start.
That leads into one of the two major modern-console fetaures specific to SoR4 that I love: online play works great, even when playing with “randos”. Every time you have an opportunity to choose a character, you can also tap a single button to open your game up to a second player to join you via the internet. The game advertises this feature without insisting that you try it. When I finally did, my enjoyment of the game suddenly magnified tenfold. It gives you neither need nor ability to talk to your anonymous co-op buddies: you just have the joy of slamming through levels together, picking up gameplay tips just from watching each other play, and communicating as needed by improvising (such as jumping up and down near a health pickup to suggest that your worse-off partner come collect it). I unironically compare the experience to Journey: shallower and stupider, perhaps, but recognizably the same core pleasure of effortlessly connecting with a stranger over a shared goal.
Here is a video of me playing through the final level with one such ad-hoc partner. We got up to the final boss together, and I ended up landing the final blow with a sliver of health left. This made my week.
The other new feature is the far more obvious one: every character in the game, whether hero or foe, has become a large, gorgeous, hand-drawn animated figure. I felt real happiness to unexpectedly see these friends from college again like this, older but filled out, never looking so good before. I very much appreciate the designers’ rejection of the obvious “retro” look in this regard. Turning the characters from piles of pixels into big, lushly animated two-dimensional cartoons striding around an old-fashioned linear brawlscape feels like an absolutely correct way to have Streets of Rage keep its core shape while also filling out all the extra room afforded by a modern console.
(One thing that this game takes away from the Sega games of my memory: pausing the game now blanks out the screen to display a big pause-mode menu, in accordance with modern convention. But ancient consoles, of course, would merely freeze the action until you un-paused. How I would have loved the chance to stop time at will and admire the animated artwork with all the characters in mid-stride/leap/kick/fall!)
I observe with interest that, while all the enemies look great, foes original to this game tend to have a much more interesting appearance and animated style than the old-school Streets of Rage baddies making a return. The art directors clearly put a lot of effort into giving the more familiar enemies costumes, postures, and attack styles recognizable from the older games. This limits their expressive range, and also rather dates their appearance to a certain kind of MTV-era aesthetic, all muscle-dudes and Wendy O. Williams-oids shuffling at you in ripped denim and fishnets.
New enemies, unburdened by such constraints, enjoy quite a bit of memorably novel behavior. Favorites include ridiculous “kicker” enemies who flip and soar around the screen without ever taking their hands from their pockets, and punk-rock-science girls who fling vials of acid around for wide-area attacks. You will learn to dread the black-shirted cops whose standard attack involves a one-armed grapple that flings a hero to the floor, then stabs down at their prone body with a taser. (The game contains, as an aside, a surprising — some would say delightful — amount of hero-on-cop brutality, with one level dedicated to storming an entire precinct station, culminating in a battle with a white-haired but roided-out commissioner.)
Of the playable characters, series frontman Axel Stone seems to have received the most attention from Streets of Rage 4’s art team, with a new look that has transformed him from a generic punchy dude into a sort of battle-hobo, with a full beard and layers of raggy clothing that flap and bounce as he tears around the playfield. I do wish that my long-time favorite Streets of Rage character, Blaze Fielding, had received as much of a makeover! While I won’t deny that she looks fantastic in the new game’s style, its lore puts the original fighters in their mid-thirties now, and it would have been nice to see her in a costume more seasoned than the classic club-kid look that she continues to sport.
That said, I would never truly deny that Blaze, the woman who spent far more time in my dorm room than any other, can dress any way she wants.
Anyway: this game is pretty great.
This article was also posted to the “games” section of Indieweb.xyz.
This month holds two free online events I’m involved with: a full-sized, week-long conference about narrative games, and a short and humble meetup about the independent web.
The second annual Narrascope conference happens from May 28 through June 4, entirely online this year. A project of IFTF, the digital arts nonprofit that I help run, Narrascope returns from its 2019 debut in Boston with a full slate of presentations, panels, and workshops on the topic of interactive narrative, adventure games, and interactive fiction. Because of the pandemic, Narrascope 2020 has moved to an online format, entirely free and open to the public.
You can get a taste of Narrascope right now by browsing videos of 2019’s talks. (Only ten in that collection, because we didn’t have formal recording plans for our first year — so conference sponsor Articy stepped up in the moment to film every talk in one of the MIT lecture halls we used.)
Narrascope 2020 will stream all its talks to the public internet. If you do plan to attend and can afford to give a little, please consider making a tax-deductible donation towards the conference to help defray its operating costs. As I write this, Narrascope has reached about half of its $6,000 fundraising goal, with two weeks to go. The conference also continues to seek corporate sponsorship; if you want to learn more about that, please contact the Narrascope team directly.
And on Wednesday, May 20 at 6 PM Eastern, I will co-host another IndieWeb Meetup NYC. At this monthly event, we gather to discuss the tools, techniques, challenges, and joys of publishing your work online, on your own domain, in the spirit of the IndieWeb movement. I joined fellow New Yorker Marty McGuire to revive this group at a local coffee shop in February — just in time for things to get weird. But we resolved to keep the candle lit through this liminal period, and immediately transitioned to online meetings for the time being. This will be our third such.
IndieWeb in-person meetups would happen in cities around the world in the Before Times, and many of them continue online during the In-Between, effectively offering everyone a choice of time zones on any given week, unbound from participants’ actual geographies. Recent nominally-NYC meetups have seen plenty of friendly intermingling from both night-owl Europeans and early-bird Pacific-coasters.
One happy day, in some unknowable season, we will resume meeting in person, limiting our attendees to locals and happenstance-visitors. But until then, we welcome all writers, artists, technologists, and others to bring their stories and questions about self-publishing and owning their work on the web.
This article was also posted to IndieNews.
A couple of weeks ago, and on the occasion of his 68th birthday, Kevin Kelly posted 68 Bits of Unsolicited Advice. Each short passage offers wisdom on the general theme of happiness through contributing to society with attention, generosity, and persistence — mixing in the occasional bromide about finding lost keys or taking power naps. I recommend a slow-read of this list to anyone, including but not at all limited to the “young ‘uns” Kelly addresses in the list’s introductory paragraph.
I envision this list adapted into a book, with a thoughtful illustration of each little gem on its facing page. I have both enough life experience behind me and enough ambitious dreams still in front that my reaction to every item on this list was either knowing agreement, or sudden and sobering acknowledgment of something I need to improve.
Many people I follow online have lauded the 68 Bits, including Nat Torkington, who tweet-threaded some favorite entries with further reflections upon each. Please allow me to do that too, with the following nine pull-quotes. I must still implore you to block out twenty or thirty minutes to take in the whole list, and to assume my tacit but enthusiastic nodding at the 59 bits I do not comment on here. (Plus, you’ll learn the word “pronoia”.)
Perhaps the most counter-intuitive truth of the universe is that the more you give to others, the more you’ll get. Understanding this is the beginning of wisdom.
I identify this as one of the two centerpieces of the list, and the wellspring from which much of the other advice naturally flows.
As Nat wrote in his own commentary, one benefit of age is having more to give, and thus standing to benefit ever further from this most basic of virtuous cycles.
Always demand a deadline. A deadline weeds out the extraneous and the ordinary. It prevents you from trying to make it perfect, so you have to make it different. Different is better.
The first list-item that humbled me. My ongoing and gradual career pivot into technical writing has just begun to gain traction, and my first assignments have had a very loose, whenever-you’re-ready schedule. I missed having deadlines, without quite realizing it. Reading this passage struck me with a swift explanation for much of the vague uncertainty that has affected work I have otherwise found engaging and rewarding.
A worthy goal for a year is to learn enough about a subject so that you can’t believe how ignorant you were a year earlier.
I do this far too infrequently. I think of how I learned to make television in 2005, or how I learned about flight navigation ten years after that. They didn’t turn me into a professional TV producer or an air-traffic controller, but they did give me deep insights into common services I had seen only the surface of for my entire life — and thus, deeper insights into how the world in general works.
In both these cases I learned these things for the sake of stuff I wanted to make — but I don’t think that needs to be a limiting factor.
Nothing, absolutely nothing stops you from peering around the façade of something and discovering all its hidden dimensions. You have all the tools you need to pick something and start learning, whenever you’re ready.
Don’t be the best. Be the only.
One could hear this as swagger, at first, about destroying all your competitors: There can be only one! But I feel certain that Kelly didn’t mean it that way.
I hear in this a mix between “Find a need and fill it!” (which I have heard attributed to Thomas Edison, though the internet disagrees), and the advice that Merlin Mann and John Gruber gave in their excellent and timeless 2009 presentation “Obsession Times Voice”.
In that talk, Mann makes up an example about launching a Star Wars fan website not just about the first movie, not just about the scenes with the Jawas, but all about specifically the third Jawa from the left in this particular shot. Becoming the undeniable world authority on this information, because nobody else was doing it, and just owning it.
I think about that often.
Show up. Keep showing up. Somebody successful said: 99% of success is just showing up.
I came to learn this independently as a freelancer, and found the deepness of its truth shocking. The flipside: so many people don’t show up. Become a dependable presence first and you’ve already proven yourself well above average.
Applying “keep showing up” in contexts outside the formally professional is also how you get serendipity to smile on you every now and again. “Showing up” — whatever that might mean, in your situation — gives you a bonus throw of the dice (in addition to whatever you’re showing up for). Do it often enough and you’ll get lucky: a chance encounter leading to a conversation that opens new doors, say, or a chance at last to contribute something you know, however unlikely it may have seemed at first.
Saving money and investing money are both good habits. Small amounts of money invested regularly for many decades without deliberation is one path to wealth.
To this I would add that paying off your debt is as good as investing money: debt, after all, being essentially negative investment. Fill in those sink-holes first, and then start building. When I figured this out around age 30, I got to work on paying off my credit-card and other debts, right down to zero. It took a long time: I turned 40 before I thought much about investing. As Kelly’s wording implies, I would have done better to start much sooner, but several years on I certainly don’t think I was “too late”.
A practical angle of this I have since learned: one of the best ways to invest is also the easiest, and that is to put money regularly into an index fund, which you otherwise ignore completely. You can also get tax benefits by having that investment account live in an IRA account of some sort, but the important thing is just to keep socking a little bit into it, for years and years, paying an absolute minimum of attention (per the “without deliberation” part of Kelly’s advice.)
A passive index fund will beat out an actively managed fund every time, over time, in part because the latter presents a far greater expense in terms of both fees and attention-drain.
Investing a bit of our money continuously over years has improved life for my wife and I, gradually removing the specter of financial insecurity: we rubbed out our debt, and then we started saving enough money to help us avoid getting back into debt.
One time we needed a car quickly, so we found a good used one, and we dipped into our investments to pay cash for it, all at once. The dealership didn’t know what to do with this, because everyone cheerfully goes into debt instead. But we didn’t need to, so we didn’t. (I mean: they took the money and we drove the car home. But they acted stunned, like we had slapped them.)
And I know that not everybody can put money away like this! But if you can, regularly, even just a little, I think you should.
Buying tools: Start by buying the absolute cheapest tools you can find. Upgrade the ones you use a lot. If you wind up using some tool for a job, buy the very best you can afford.
I type this article on my 2012 Macbook Pro, of whose virtues I have already written at length — two years ago, when it was already “old”. In 2012 I spent an absurd amount of money on this computer, a tool absolutely essential to my life. And here I am still using it, and still not giving much thought to its replacement. It might last a full ten years.
See also my love affair for the Steelcase Gesture office chair, over one year in and still going strong. My spine celebrates every penny I have spent on it.
How to apologize: Quickly, specifically, sincerely.
Apologizing can hurt, sometimes to the degree where it feels like a performative self-injury. But when you know you know that an apology is due from you, that knowledge will sit on your soul like a caustic acid, smoking and festering and harming you far worse than the swift cauterization that apology offers.
This counts even during those times when the “fault” does not lie with you, but you suspect that you should apologize anyway.
Over the long term, the future is decided by optimists. To be an optimist you don’t have to ignore all the many problems we create; you just have to imagine improving our capacity to solve problems.
And this one I read as the complement of the first bit I quoted, less practical advice than a light in the distance to navigate by.
If Fogknife, or any of my personal work, has a theme, then I hope one can derive it from this ideal.
This article was also posted to the “advice” section of Indieweb.xyz.
The pandemic strikes me as first viable chance to actually test Al Gore’s etymologically dubious argument that the climate crisis could be teased apart into both danger and opportunity. Humanity has proven itself quite maladapted for responding to threats moving too gradually to see, while also demonstrating amazing flexibility and tactical ingenuity when the danger abruptly switches to ramming speed. Covid-19 represents the first swift and global-scale disaster whose likely causes lay in climate change, and every part of the world’s population is, for once, paying attention.
Count me among those who believe that the world as we knew it even as recently as last Christmas is gone forever. Even if and when this particular menace finds itself isolated and inoculated into history, the world will emerge profoundly changed, at a scale and a magnitude not seen since the end of World War II. Both individual states and global society will need to stitch their wounds and rebuild — and, in so doing, reorder themselves, at every level.
I want to see the United States come out better for it. I think it’s possible. For all the pain and death and ignorance and tearful, angry frustration we experience right now, I really do think it’s possible.
I have a vision of near-middle-future America — and I fully admit that I mean “vision” here not in the sense of a personal guiding light but of a dreamily wavering image in the blue and uncannily contrail-free sky — that has seen sweeping changes in its top-level political structures, where neither the Democratic or Republican parties as we know them today continue to exist.
In this future, the Democratic party has undergone a healthy mitosis, with its two ever-diverging “moderate” and “progressive” lobes separating to form two new political parties. These would become the nation’s conservative and liberal parties, respectively: both interested in seeing the country progress, but holding differing philosophies about focus. They would continuously check, challenge, and compromise with one another in the style of a functional, multi-party democracy.
Perhaps this doesn’t happen so formally; maybe they both remain in the same nominal party tent, but the population gains a better understanding that the Democrats are not a monolith. People would express this understanding through greater awareness of and activity in primary elections — including, nay, especially state and local primary contests — and then through pushing their community-chosen Democratic candidates into seats in general elections.
And what they would push out, in this realignment, is the Republican party, which has become garbage, which has under Trump completed its embrace of the anti-future selfishness it has veered towards since the Reagan era. As a political force, Republicans are capable only of wreckage and national regression, burning up the future to fuel their uncaring need to stay in power just a little bit longer. Elected Republicans who toe the party line have no interest in leadership: they serve only the party, and the party serves only itself, openly, contemptuously. The Republican party is a cancer on the American body, and needs surgical removal.
While America still needs a conservative party, it isn’t the Republicans any more. It wants, instead, the wing of the Democrats that drives my friends into teeth-grinding frustration when they act like stodgy traditionalists instead of the hungrier and far less patient faction fronted by Rep. Ocasio-Cortez and her cohort. I believe that we still need self-styled moderate voices, just as I am willing to believe that the Republican party might once have filled this role.
But today, the GOP has no ability at all to argue or act in good faith. As an experiment last week, I took note of every time I read about Republicans — including, but not limited to, the president — acting in broad daylight against the health of country or the world. I hit twenty articles by Friday, by which point the news had become swamped with the president’s infuriating blather about ingesting disinfectants, and I stopped it there. (I have attached my notes to the end of this article.)
I don’t have a better plan of action here other than: well, first of all care, then vote — in both primary and general elections. Vote for the Democrats you like best in primaries, and vote for whatever Democrats have been handed to you in the general, even if they’re not who you asked for. Why no, that’s not at all ideal! But the first step towards a reordered America means forever wrenching the levers of power out of Republican hands, and unfortunately there is literally one defensively possible way to do that right now.
To help me keep the future in mind — and not just the present predicament — I think about how I can continue pressing, once the Republicans have been reduced to an inflammatory but powerless rump. How will I use my voice (and my money) to pressure a more openly two-poled Democratic party into pulling the national direction towards the future I want to see, and holding them accountable until then? That will be our next fight! But first, we gotta win this one.
And, here is my “Exhibit A”, five days of Republican anti-American and/or anti-future activity, as I happened to come across it during the week of April 20, 2020. I admit that the title of this post came to me today as I regarded this note-page of links threatening to go stale unless I wrote about them soon.
A few weeks ago, the Perl Foundation informed me that it had approved my small grant proposal. And as of today, two pull requests I submitted to the core Perl repository on GitHub — a revision of the “open” function’s documentation and an improvement to the same subject’s tutorial guide — have passed tech review. It remains possible for another reviewer to request further changes, but otherwise this work’s ultimate fate passes into the hands of Perl’s release engineers. So, barring surprise, that’s that project delivered.
While hardly my first open-source-contribution rodeo, and the product of only ten days’ part-time labor besides, this work still feels noteworthy enough for me to mark down here. Not only does it represent the first time I’ve given back in this direct way to the programming language I’ve used almost every day for half of my life so far, but it unexpectedly feels like a long-delayed coda to work I started nearly twenty years ago with Perl & XML — and then walked away from.
In the winter of 2000 I had enough self-knowledge to recognize my own drive to document the technologies I loved, pushing me to eagerly sign multiple contracts, but not nearly enough maturity or sense of responsibility to follow through on my own. Very patient editors managed to bloodily pry that book and other contractually obligated writing out of me over the next three years. Sore and sulky, I swore the whole business off forever.
The experience nonetheless gave me a glimpse of what self-directed work, if actually managed properly, could feel like. And so after napping for three further years as a salaried engineer, I tried skippering a startup, and then a consulting company, and then a nonprofit, stair-stepping up with efficacy and success each time through nothing more complex than one year after another remembering all the rocks and reefs I’d ground up on the year before and trying to do better.
This year I had various reasons to enter into an agreement to write a little bit more Perl documentation for pay, none of which resembled a desire to revisit a challenge I had handled poorly as a puffed-up twentysomething. Thus the unexpected bolt of relieved vindication upon its completion zapped me that much more profoudly.
My thanks to Dan Book and Karen Etheridge for their prompt and thorough tech reviewing, to Tom Christiansen for writing most of the
perlopentut manual page (which I have attempted to complete), and to Larry Wall and the many contributors to the
open function documentation whose decades of accumulated knowledge and commentary I have done my best to clarify, mostly through reordering and rearrangement into nested sections with new headings.
And because he’d have appreciated the absurdity of the gesture, I dedicate these doc-patches to the memory of Erik T. Ray, my Perl & XML co-author and one of the people who bounced me into the oblique professional orbit I’ve pursued since the century began.
This article was also posted to the “writing” section of Indieweb.xyz.
Earlier this month, New York City’s government asked all of its citizens to, for the foreseeable future, always wear a mask when out of the house — ahead of the CDC recommendations for same by a couple of days. This came after I watched friends, acquaintances, and trusted local news and opinion sources slowly inch over the course of the year so far from “Mask-wearing is an interesting cultural quirk practiced by East Asian visitors” to “We should all probably wear masks”. I accepted the mayor’s announcement as the natural end-point of an inexorable shift in public perception, and figured I’d ease into compliance when personally convenient.
But then, two immediately subsequent events convinced me to act much faster than that, resolving to not step out my apartment door even once more with an uncovered face. First, Maciej Cegłowski wrote the compelling article “Let’s All Wear a Mask”, which I quite recommend to you as well. And then, only minutes after the CDC announced its revised guidance to Americans about wearing masks, the president undermined this expert advice by dismissing the guidelines as merely “voluntary” and stating that he had no intention of following them himself — implying that his own fans and followers could ignore the directive as well.
Taken together, these brought to mind a hyper-accelerated version of how many obviously cisgender people of my acquaintance prominently advertise their preferred pronouns, and how I consciously choose not to adhere to this practice myself. Many of the arguments that Cegłowski makes for even healthy people to wear a minimally protective mask during a pandemic echo reasons I have heard about pronoun-wearing. These include offering cover for people who have much more practical reason to use a mask, and as a passive-but-visible social signal to remind those we meet of our common situation, and the responsibilities we share.
Last year, I wrote that I wouldn’t pin on pronouns “unless we enter a point where not wearing pronouns is like not wearing pants”. Driven by that same resistance against weighing down my personal presentation with sociopolitical tokens, until quite recently I held the same stance about masks. However, under the pressure of a global crisis, the combination of my city government issuing a formal request of its citizens plus the loathsome president staking his own typically selfish and anti-expert position made it immediately clear to me that this moment — at least for masks — had indeed arrived.
Overnight in the western world, masks have become a requisite article of clothing. Maybe not as primary as pants, but certainly at the level of shirts or shoes, I’d argue. So long as we remain under the pandemic, not wearing a mask will increasingly draw attention to yourself and your weird decision to show off more flesh than your neighbors may welcome — and walking into a public confined space without one may deservedly turn that discomfort into a shooing-away. Come back when you’ve covered up.
And so, as soon as I read the news that day, I pawed around my board-game shelf until I found my old Looney Labs chessboard bandana. Stained and funky-smelling, it had probably never seen a washing machine since its purchase some 20 years ago. (To my credit, I’d never actually worn the thing, either.) This led me to look up tutorials on hand-washing clothes; I would end up scrubbing it in the bathtub, then hanging it to dry on the curtain rod with a couple of chip-bag clips. At last I followed a short video tutorial to fold and rubber-band it into a serviceable mask, one my household used for a week until a crafty friend rescued us with a mailed gift of some properly sewn and much better-fitting examples.
Affixing and wearing a mask tasks practice. You notice things about yourself you hadn’t before, when your air intake-and-exhaust path is even slightly constricted: the fact that you breathe a little more intensely when walking a gentle incline, for instance, or even how often you casually burp while strolling. Walking outside for exercise and mental clarity loses its splendid effortlessness, and I don’t like that at all. But, until the day arrives when I and all my neighbors have received the vaccine, I’ll do it. I would ask that you do it, too, for your own neighbors’ sake.
Bonus updates of life in my part of New York City since my observations from two weeks ago:
☕️ All the Dunkin Donuts have become “gray pins” now, shuttered, along with most every coffee shop in walking distance. I have not purchased coffee in liquid form since posting that article: most assuredly the longest I’ve ever gone without paying someone else to make me coffee, by orders of magnitude, since taking up the habit a quarter-century ago. I have every reason to expect I won’t talk to a barista for months yet. Who even knows what will open, and when, once the city starts to thaw?
✊ My neighborhood was slow to take up the 7 o’clock applause, a daily five-minute sunset salute that we seem to have borrowed from our friends in Italian and Spanish cities whose own terrible COVID-peaks preceded New York’s. After the worst week so far here, with thousands of our fellow citizens lost to the disease, the previously muted participation in this ritual around my building became a roar, five-to-fifteen minutes of clapping and shouting and pots-and-pans banging, enough to really confuse my cats.
Officially, we cheer in appreciation of New York’s medical professionals risking their lives and their health every day as they fight to contain the coronavirus and comfort its victims. But I think there’s an additional element to it, something more primal. We squeeze up to our open windows and our fire escapes, and we howl. We shout in the face of that which would kill us, we bellow with lungs that it would weaken and rend. And we all see and hear each other doing it, and we know that we’ll come back again tomorrow and do it again, and it helps us stay strong.
This article was also posted to the “coronavirus” section of Indieweb.xyz.
I first discovered Webmention by its ability to serve as a federated cross-site commenting system, one free of the baggage inherent to elsewhere-centralized systems I’d tried earlier. Providing the connective tissue for no-middleman public conversations among independent websites remains a central promise of Webmention — and also describes Fogknife’s most obvious use of it — but the protocol has other, more subtle uses that may escape one’s first discovery of it.
Through its very simple and general design, Webmention allows one website to remotely — and consensually — affect the content of another site by publishing something onto itself. That is, I post something, in public, to my own website, and the mere act of this causes another website, somewhere else, to automatically update its own content in some appropriate fashion. This can achieve a variety of purposes beyond comment and conversation that I find both fascinating and kind of hard to describe in one sentence! Please indulge me, then, as I explore this concept over the length of an article here.
Generally speaking, a webmention message notifies a website that one of its constituent pages was referenced on some other part of the public web. In the simplest common case, this happens when Alice publishes a new web page that uses an ordinary HTML hyperlink to refer to a page that Bob had posted earlier. For example, she might post a page at
https://alice.example.com/go-read-bob whose content begins this way:
Thoughts on Bob’s C-SI stability theory
My friend and colleague Bob wrote a very interesting article that everyone who follows my work should go read. Some real food for thought here.
Regarding his theory about the stability of chrono-synclastic infidibuli, I would like to add my own observation that [etc.]
Let’s pretend that that hyperlink goes to
https://bobs-blog.example/my-theory, a page on Bob’s website. Putting aside the mechanics of webmention transmission — a rich topic on its own that I shall leave outside the scope of this article — Alice’s content-management software will, on publishing this page, contact a webmention-receiver that Bob uses, letting it know that a page under its jurisdiction has received a mention from Alice’s new post. Bob’s software will confirm that this is true by loading and scanning the HTML of Alice’s post, and will then take some appropriate action, such as adding a summary of and link to Alice’s page to a “Comments and reactions” section at the bottom of Bob’s page.
There exist many variations of this basic model: perhaps Bob’s software takes a more cautious approach to public webmentions and holds it for manual approval, or perhaps Alice’s CMS knows how to mark up her post with microformats (more on which later) so that Bob’s software knows, in turn, more about the post’s author. Microformats can also mark Alice’s page as an intentional reply to Bob’s post, rather than a tangentially related page that links to it as a mere aside, and Bob’s CMS may wish to display the link back to Alice’s page differently given this fact.
Regardless of these details, I think of this as a passive webmention example. Alice published her post with the main intent of sharing her ideals with her own readership. As a beneficial side effect, it also extended to Bob the courtesy of a webmention. He is free to treat this information however he wishes. It would be a nice gesture for Bob to let his software automatically link back to Alice’s response — but if he delays or declines to do so, it would not make Alice’s link any less meaningful in the meantime.
And this, in essence, desrcribes how Fogknife has used Webmention since 2018. The “reactions” that decorate the bottom of many of my posts comprise a mix of Twitter-based responses (arriving, unbeknownst to those tweeters, via Bridgy), URLs manually entered via the “suggest a mention” form at the bottom of every Fogknife post-page, and intentional mentions sent from readers’ own Webmention-aware software. In every case, Fogknife receives these messages as webmentions, and displays them in ways appropriate to each, whether a “like”, a repost, an explicit reply, or just a generic mention. This post contains several, in a variety of flavors*, coming from a mix of sources.
You’ll note that several of that post’s reactions have my own name attached. This happens because Fogknife also sends webmentions: its underlying software looks up the Webmention capability of each and every URL contained in every new or updated post, and sends a message to each receiver it discovers. This includes links to other Fogknife articles, because I don’t have Fogknife’s webmention listener treat webmentions sent from
fogknife.com in any special way, compared to webmentions from any other source! If they are legitimate, they get published. And through this mechanism, I get to share a forward-linking “related articles” feature on my older posts, at no extra effort.
Distinct from websites that accept and publish these sorts of by-happenstance webmentions, a site can set itself up to receive webmentions that possess a more intentional edge. In these cases, a webmention means more than a passive “say, someone referred to you over here”. Instead, it declares that the source prepared the link primarily to send a webmention to the linked website. The author expects the target to read a particular intent in the link, and react in some appropriate way. I think of these as active webmentions.
This is the cool part, so I shall skip the Alice-and-Bob basics and dive right into to some real-world examples.
Through the same kind of microformats markup that can identify a link’s intent as a response to the article at the linked URL, the author of a page can declare a self-published post as their RSVP to a future event.
The upcoming-events site for the worldwide IndieWeb community (whence comes Webmention itself) accepts exactly these sorts of RSVP webmentions. Anyone using Webmention-aware publishing tools can create a public page declaring their intent to attend one of these events, naturally linking to that event’s page in the process. The Events website, on receipt of the mention, scans this new page for microformats that confirm the link’s intent as an RSVP, as well as the identity of the person submitting it.
So, for a real example, let me pause and declare my yes RSVP to , which plans to gather via teleconference that evening (New York, alas, not presenting its best face for in-person meetings at the moment).
And through no further action on my part, by the mere publishing of the page you are now reading, my RSVP has appeared on that event page. And this is where Webmention starts feeling truly magical, to me. I made a webpage addressing my human readership, expressing the notion “I plan to attend this meeting”, and daemonic servants that overheard my desires flew into action, making those plans real.
All this happens in line with core IndieWeb philosophy, where I publish my activity exclusively to my own domain, submitting nothing about my plans or desires to any company looking to make a buck off of my attention.
(A small caveat: Sending an RSVP in the middle of a long blog post like this is a bit unusual, even though it works. A typical RSVP webmention will instead originate from a very short note serving only that one purpose. But, with the NYC meetup happening only a few days from now, I had to show off a little…)
I can no longer resist getting technical for a bit, but I can at least save you a dive through this blog post’s source code to show you what the raw HTML of that RSVP paragraph looks like:
<p>So, for a real example, let me pause and declare my <em><span class=”p-rsvp“>yes</span></em> RSVP to <a href=”https://events.indieweb.org/2020/04/online-indieweb-meetup-nyc-xzPxXTK5HGbe” class=”u-in-reply-to“>the April 15 IndieWeb NYC meetup</a>, which plans to gather via teleconference that evening.</p>
Here you see two microformats in play, both implemented as plain old HTML
u-in-reply-to crouched in the hyperlink means that this post means to catch the attention of the page it links to via Webmention, identifying itself as an intentional response. This is no typically off-hand reference to another page!
The presence of a
p-rsvp class further defines this reply-post as an RSVP, and specifically a “yes” RSVP.†
Furthermore, at the top of this post — and, indeed, at the top of every single Fogknife post — lurks some HTML that looks like this:
<data class=”p-author h-card”> <data class=”p-name” value=”Jason McIntosh”></data> <data class=”u-url” value=”http://jmac.org”></data> <data class=”u-photo” value=”http://jmac.org/misc/old_unicorn.png”></data>
Just as that
p-author microformat implies by its name, this
data element identifies the author of this webpage for any software that cares to scan its content for machine-readable semantic content.
And I, the fallible human author, don’t need to keep any of this particular syntax in mind: I have set up my publishing software to always stamp that
data element at the top of every Fogknife page. I have also set up my text editor to make the addition of those RSVP-specific microformats as easy as selecting from a pull-down menu, so I don’t need to manually type all that stuff in every time I wish to invoke it.
My publishing software also takes care of the far trickier business of actually preparing and sending webmentions to every URL that appears in my post, including the IndieWeb Events one, as a side-effect of my putting it online. It is up to the software running IndieWeb Events to receive the webmention, scan this blog post, and do the thing I intend it to do.
From a programmer’s perspective, active webmentions are almost — but not quite — like calling a method on a remote API. The action that the “programmer” takes, however, involves publishing something human-readable on a public URL; the main communication does not happen in the realm of raw JSON or XML payloads passing invisibly between two computers, as with a true API. The whole time, I act as a human speaking primarily with other humans, but I intentionally sprinkle my communications with the sotto voce asides of microformats we intend for our mechanical servants to overhear and react to with swift elegance.
It appeals to me so much. I love it, and I want to see more of it.
My own most frequent practical use of active webmentions involves syndication: a request that the webmention receiver simply republish (or at least link back to) the source post in some fashion. Most commonly, the target website serves as an aggregator, collecting web pages that deal with some particular topic. A page can automatically add itself to this list by including a syndication-microformatted link to such as site, and following up with a webmention.
I know of two live examples of this, both of which Fogknife has invoked before:
Aaron Parecki’s IndieNews collects articles of interest to the IndieWeb community. At the time of this writing, it posts several articles per month, all of which come to its attention via Webmention.
Kicks Condor’s IndieWeb.xyz is an experimental Reddit-style collection of “subs”, each of which focuses on a particular topic. My first contribution to it came via its books sub, where I joined an “IndieWeb book club” activity last summer by reading Mike Monteiro’s Ruined by Design and then adding a syndication link to IndieWeb.xyz in that post’s footer.
Naturally, the post you now read also links to both of these aggregators in its sign-off, a few paragraphs below this. If you check either website (or subscribe to their RSS feeds) around the time I published this page, you will find references to this article, constructed out of microformats-based metadata parsed out of this post via the same mechanisms that the RSVP sites use.
Last week, gathering notes for this article, I asked the IndieWeb chat for more examples of sites using active webmentions. In this way I learned about The Web We Want, a project run by representatives of several browser manufacturers as a way to collect public opinion on future browser features. Anyone can post features they’d like to see, and then people can show their support for a specific proposal by sending “bookmark” or “like”-flavored webmention to its detail page. (You can also just tweet about it, according to the site, and I presume that gets turned into a webmention via Bridgy.)
While not something I felt immediately drawn to participate in, this nonetheless makes me happy to see. I had not at all anticipated the use of Webmention as a polling medium, and seeing it used that way proves my hypothesis that the technology has potential for a vast array of creative, wonderful uses across the web, in a spectrum wider than I can currently imagine.
Even though its use remains quite humbly obscure in mid-2020, I support Webmention because I love the things that I know it can do — and because I have no idea what else it can do, because nobody’s done it yet. I want to help its future innovators discover Webmention and get inspired too, so I can start selfishly enjoying the further magic they end up bringing to the open web.
* At the time of this writing, it also makes plain a bug that my blogging software has when trying to display user-avatar images that have changed since the original receipt of their associated webmentions; this explains all the broken images. My work this spring sees me making improvements to my own webmention-handling software, and I hope to share more about in in the coming months.
† Some references for this magic: IndieWeb Wiki’s page on RSVP; Microformats.org documentation on
h-entry properties. (And note also that every Fogknife post is wrapped in an
Interactive Fiction Technology Foundation, the digital arts nonprofit I help run, has paid opportunities for software engineers interested in leading two specific IF infrastructure projects:
IFTF’s Twine Committee seeks a successor to Philome.la, a privately run but publicly accessible showcase of Twine work that had to stop accepting new uploads some time ago. IFTF will fund both the creation and ongoing server costs of this successor program.
Here is the Philome.la Replacement project specification. The deadline to apply is July 15, 2020.
Here is the IF Archive Play-on-Site project RFP. Its application deadline is April 30, 2020.
These are great freelance opportunities for technically inclined folks who want to help the services behind the sharing and study of interactive fiction. In both cases, IFTF plans to raise the funds needed to cover the costs named in the accepted proposal.
If either of these RFPs spark your interest and imagination, please do apply by the appropriate deadline — and feel free to contact IFTF with any questions in the meantime.
I’m working on a long Fogknife post about Webmention, a technology of deep personal interest, and one in serious want of introductory documentation. I had planned to turn my attention to neglected interests like these during the spring and summer, before the COVID-19 pandemic gripped the world — and, at the moment I write this, has sunk its terrible soft teeth into New York City deeper than any place else in America. My last article acknowledged the global condition as context, but it feels strange to hard-bounce from there into a long explainer about excitingly obscure website-communication protocols.
I still plan to finish and share that article soon — but in the interest of softening the transition into it, let me describe my life here in New York right now: my view out the window, so to speak, as I work on projects like this. (And if you want to read about Webmention in the meantime, Chris Aldrich coincidentally posted a link-rich thread on the topic this past week.)
First of all, I’m okay. We’re okay, my little family, my wife Amy and our cats and I, in our two-bedroom apartment in a big upper-Manhattan apartment tower. For the time being, I often forget that I live in a city so profoundly battered by the coronavirus, and with the worst still to come, that the whole world’s eyes have turned to New York with a sense of guttering hope against mounting dread. Over the past week, old acquaintances and elderly relatives I haven’t spoken to in years have texted and phoned me to check in and ask about our health and safety, and I every time I need to remind myself: Oh, right. I’m in danger.
So on that note, I must acknowledge how my family faces this challenge on Easy Mode: we are two healthy mid-life adults (and two healthy mid-life cats) with no dependents, strong social and financial resources, and livelihoods that we can carry on from a home office. (I normally work this way; Amy has had to adapt.) We absolutely feel the pressure of this bottle ordeal even so, and my heart bruises with empathy when I imagine the deeper challenges faced by those without such a multiply-layered and unstrained support setup. For example: anyone with young children, a group that includes many of my closest friends. When I think of the countless people who lost their jobs to the disease and can’t seek new ones, or who are forced to stay inside with dysfunctional families, my soul shrinks.
In the prelude to the lockdown, when New York still looked and felt like its usual self but perhaps with the volume tuned down a couple of notches, I posted a tweet (an amplification of an observation by Los Angeles Times correspondent Matt Pierce) that earned a certain degree of traction among people seeking a comforting message:
I’ve been thinking more about this and it’s worth repeating.— Jason McIntosh (@JmacDotOrg) March 13, 2020
“The virus” isn’t shutting down all of these services. People are volunteering to shoulder the burden of closure for a while specifically so that the virus spreads more slowly, so that hospitals don’t get overwhelmed. https://t.co/v4KOnfYZMV
Two weeks later, this remains true at core, but the voluntary community spirit I described has become muted in the ensuing day-by-day increase of municipally ordered social distancing and self-isolation. I do not fault the local authorities for applying more pressure every day: the situation is plainly grim. But already the thesis of my bright-side post from only one week ago, assuring my readership as well as myself that walks remain free and legal, seems tenuous. I hear of mass-quarantine conditions elsewhere in the world, and I wonder if they will arrive in my country. If they do, I have every reason to expect they’ll visit New York first.
But, yes, I’m still walking, and I want to tell you about a walk I took on Friday morning in particular.
I woke up on Friday determined to go out for my morning coffee. I had not gone to the local hole-in-the-wall Dunkin Donuts in several days; my last visit had shaken me. The staff, which normally has my online order waiting for me well before I arrive, had their hands full trying to disperse the career day-drinkers quietly clumped up as usual in the small shop’s corners. They did eventually shuffle out, looking hurt and betrayed, and then I was handed my coffee. I returned home feeling quite disturbed. For the first time, I saw what looked like cracks in my daily routine, even allowing for all those voluntary changes I’d tweeted about.
But by Friday enough time had passed that my desire for familiar comfort overrode my misgivings, so I fired up the Dunkin app on my phone. It showed me an adjusted version of the usual tiny map where you pick a store: the pin representing my usual Dunkin’s had faded from its normal Day-Glo orange to a dull gray. So had many other pins on the map, with only a few orange holdouts here and there. Tapping a gray pin suggested that the store was closed, at least to online orders.
The round, cheerful graphics delivering this information brought to mind the board game Pandemic Legacy, where one uses colorful stickers to track the destructive spread of a disease across a world map, noting which cities are infected, and which have collapsed into anarchy from the plague. I did not enjoy seeing any of this. At the same time, I saw an orange pin a twenty-minute walk up Broadway, more or less along one of my usual Riverside strolling routes. I asked it for a large coffee instead and then got moving, accepting my earlier-than-usual daily walk.
After picking up the coffee without incident from a shop empty of other customers, I looked around the unfamiliar intersection. This, too, felt like something from a game, this time an immersive 3D simulation which has removed all the people but left behind interesting “environmental storytelling” artifacts to suggest where they went. Some cafes and bars had chalk signs or tacked-up flyers insisting that they were open for take-out, but midmorning I saw no sign of life in any. I turned back to the park and home.
As I approached a dog run, I saw a man having a public temper tantrum. You can’t tell me where my dog can shit! he shouted to another park visitor, who held their hands up in an appeal for calm, backing up a step every time the man advanced, careful to stay six feet away. Other dog-walkers also tried to calm him down, also keeping their distance. By the time I passed he had already vented most of his steam. I don’t need this, he said, to nobody in particular. The dogs at everyones’ feet scampered and played together.
Then I sat on a line of empty benches and sipped my coffee and ate my cold egg sandwich while a city worker silently emptied out a public trash bin, putting a fresh lining in. I thought about the man at the dog park, and how I had blown up at my oldest brother two months ago in the middle of downtown Bangor. Our nerves were both frayed from our brother Pete’s death just days before, and some small slight made me explode at him. It must have looked just like that other guy.
Getting up to leave, I crumpled up my wrapper and put it in my pocket to dispose of at home. I found that I didn’t want to open the bin with my bare hands.
My neighborhood along the Hudson seems to be keeping it together, and so does my apartment building. I have hundreds of neighbors in this complex, and I like to think we look out for each other, staying aware and careful. If anything, we have become a little nicer to each other lately, exchanging small greetings and health-wishes as we share elevators or pass in hallways not designed for social distancing, hugging opposite walls.
And so far, I find it pretty easy to forget how I live in a dangerous place during a dangerous time. I’m okay and I probably will remain okay. But I can’t predict even broadly what will happen over the coming weeks. More cracks appear, small and large. My New York Times delivery simply didn’t show up today. If it had, I might have read about the New York subway train that burned, perhaps due to arson, killing its operator and injuring seventeen others. A horror that would have attracted national attention in normal times, but which today didn’t even merit the front page of the local paper’s online edition.
Learning this news yesterday calcified some of this miasmic dread into active fear, at last. I canceled a non-emergency doctor’s appointment that I normally would have ridden the subway to attend; it can wait a few months. None of us need any of this, and we all know it. I don’t know what I can do about it other than paying attention, and doing my best to be a good neighbor, and looking to the future.
And so I want to publish a long article about web technology next, or at least soon, because that’s me applying some control to a chaotic future: I can write that article and share it, and that therefore becomes a preciously rare event I can predict. The article itself looks ahead to a time when more people might have the free time and resources to think about growing the open web, and that helps me too.
During this strange time, I encourage you to consider the ways you can define your own future, however it best suits you and yours, and to move in that direction as best you can.
This article was also posted to the “coronavirus” section of Indieweb.xyz.
Previous post: Friends, we gotta keep walking